如何格式化组以在 R 中执行方差分析?

问题描述 投票:0回答:1

我需要对四组进行方差分析测试。这些数据是从更大的数据集中提取的男性和女性身高最高和最低的 20 个数据。提供给我的说明只是运行测试,但 R 告诉我它们需要位于矩阵中。我的代码是:

#assigning variables
msort <- sort(mdata[,2],decreasing = TRUE)
fsort<- sort(fdata[,2], decreasing = TRUE)
mt <- msort[1:20]
ms <- msort[4981:5000]
ft <- fsort[1:20]
fs <- fsort[4981:5000]

#the test
aov(ms~ft~mt~fs)

如何将它们放入矩阵中,同时保留相同的含义/分类?公式是什么?

我尝试只执行 as.matrix() ,但这只是将组中的所有值放入一列中,没有其他标签,我想这是预期的。我无法从原始数据框中提取相同的排序数字,该数据框中有 10000 个性别/身高/体重条目,因为我必须按性别将它们分开才能开始,而且我不相信它会以相同的方式排序。我不知道还能怎么做。

r anova
1个回答
0
投票

首先我将创建一个数据集。

set.seed(2024)
n <- 5000L
mdata <- matrix(c(rnorm(n), rnorm(n, 1)), ncol = 2L)
fdata <- matrix(c(runif(n), runif(n, 1, 2)), ncol = 2L)

msort <- sort(mdata[,2],decreasing = TRUE)
fsort<- sort(fdata[,2], decreasing = TRUE)
mt <- msort[1:20]
ms <- msort[4981:5000]
ft <- fsort[1:20]
fs <- fsort[4981:5000]

创建于 2024-10-09,使用 reprex v2.1.0


现在进行方差分析测试。
创建一个与向量名称相对应的分类向量

grp
,并将其与上面的数值一起放入 data.frame 中。使用公式界面运行测试。

grp <- rep(c("mt", "ms", "ft", "fs"), each = 20L)
df1 <- data.frame(grp, y = c(mt, ms, ft, fs))

aov(y ~ grp, df1)
#> Call:
#>    aov(formula = y ~ grp, data = df1)
#> 
#> Terms:
#>                      grp Residuals
#> Sum of Squares  365.6578    1.4172
#> Deg. of Freedom        3        76
#> 
#> Residual standard error: 0.1365572
#> Estimated effects may be unbalanced

aov(y ~ grp, df1) |> summary()
#>             Df Sum Sq Mean Sq F value Pr(>F)    
#> grp          3  365.7  121.89    6536 <2e-16 ***
#> Residuals   76    1.4    0.02                   
#> ---
#> Signif. codes:  0 '***' 0.001 '**' 0.01 '*' 0.05 '.' 0.1 ' ' 1

boxplot(y ~ grp, df1)

创建于 2024-10-09,使用 reprex v2.1.0

© www.soinside.com 2019 - 2024. All rights reserved.