我需要对四组进行方差分析测试。这些数据是从更大的数据集中提取的男性和女性身高最高和最低的 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 个性别/身高/体重条目,因为我必须按性别将它们分开才能开始,而且我不相信它会以相同的方式排序。我不知道还能怎么做。
首先我将创建一个数据集。
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