R studio中4组分类数据的ANOVA

iqjalb3h  于 2023-01-15  发布在  其他
关注(0)|答案(1)|浏览(177)

我尝试对4个不同组的描述性变量进行ANOVA检验,这4组根据是否存在2种并发症进行分组。
我的数据

structure(list(values = c("F", "F", "M", "F", "F", "M", "F", 
"F", "F", "F", "F", "F", "F", "M", "M", "F", "F", "F", "F", "M"
), ind = structure(c(1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 
1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L), .Label = c("Group 1", 
"Group 2 ", "Group 3", "Group 4"), class = "factor")), row.names = c(NA, 
20L), class = "data.frame")

我尝试了下面的代码来运行anova测试

anovaresult= aov(data_new$values ~ data_new$ind, data=data_new)

我收到了下面的错误消息:

Error in lm.fit(x, y, offset = offset, singular.ok = singular.ok, ...) : 
  NA/NaN/Inf in 'y'
In addition: Warning message:
In storage.mode(v) <- "double" : NAs introduced by coercion
>

非常感谢,请注意,我的df是通过函数stacked()将4个组堆叠在一起创建的

vuv7lop3

vuv7lop31#

当您有一个分类自变量,并且要检验正态分布的连续因变量均值之间的差异时,可以使用ANOVA。因变量是二分的(M/F),因此不适合使用ANOVA。
假设您有与您的数据类似的分类数据,如下所示:

# Data
set.seed(123)
df <- data.frame(result = sample(0:1, 100, replace = TRUE),
                 group = sample(paste("Group", 1:4), 100, replace = TRUE))

由于数据是从均匀分布中随机抽取的,因此我们不期望组间有任何差异。我们可以使用卡方检验(一种常用的方法)进行统计检验。在R中,这可以实现为:

# Parametric Chi Squared
chisq.test(df$result, df$group)

#  Pearson's Chi-squared test
# 
# data:  df$result and df$group
# X-squared = 0.18662, df = 3, p-value = 0.9797

这里你可以看到p值远高于标准值0.05,所以我们可以得出结论,没有差异。
如果这些数据是非参数的(即Likert风格的数据),我们可以使用一个非参数的类比,称为Kruskal-Wallace,在R中它被实现为:

kruskal.test(df$result, df$group)
 
#  Kruskal-Wallis rank sum test
# 
# data:  df$result and df$group
# Kruskal-Wallis chi-squared = 0.18475, df = 3, p-value = 0.98

你也可以使用逻辑回归来检验关联的强度,在R中,这可以通过以下方式实现:

mdl <- glm(result ~ group, data = df, family = binomial(link = "logit"))
summary(mdl)

# Call:
# glm(formula = result ~ group, family = binomial(link = "logit"), 
#     data = df)
# 
# Deviance Residuals: 
#    Min      1Q  Median      3Q     Max  
# -1.128  -1.034  -1.034   1.281   1.328  
# 
# Coefficients:
#              Estimate Std. Error z value Pr(>|z|)
# (Intercept)   -0.1178     0.4859  -0.242    0.808
# groupGroup 2  -0.2305     0.6150  -0.375    0.708
# groupGroup 3  -0.2305     0.6150  -0.375    0.708
# groupGroup 4  -0.1234     0.6312  -0.195    0.845
# 
# (Dispersion parameter for binomial family taken to be 1)
# 
#     Null deviance: 136.66  on 99  degrees of freedom
# Residual deviance: 136.48  on 96  degrees of freedom
# AIC: 144.48
# 
# Number of Fisher Scoring iterations: 4

请注意,在逻辑回归中,您可能希望转换这些系数和标准误差以给予比值比(OR)。在R中,您可以通过以下方式进行转换:

exp(coef(mdl))
# (Intercept) groupGroup 2 groupGroup 3 groupGroup 4 
#   0.8888889    0.7941176    0.7941176    0.8839286 

exp(confint(mdl))

#                 2.5 %   97.5 %
# (Intercept)  0.3337300 2.324904
# groupGroup 2 0.2352175 2.680856
# groupGroup 3 0.2352175 2.680856
# groupGroup 4 0.2537607 3.081575

如您所见,OR置信区间包含空值(无差异)-正如预期。
这些只是一些例子,说明如何在您的数据类型中实现统计检验和效果度量,但并不全面。祝你好运!

相关问题