根据在线性模型和方差分析中运行的变量 pointA、pointB、pointC,我想收集数据框中的 p 值。在我的真实数据集中,大约有 30 个变量,因此我正在寻找一个运行这些变量并收集数据框中的 p 值的函数。这是比逐一运行并手动将它们放在数据框中更有效的方法。
set.seed(1)
id <- rep(1:3,each=4)
trt <- rep(c("A","OA", "B", "OB"),3)
pointA <- sample(1:10,12, replace=TRUE)
pointB<- sample(1:10,12, replace=TRUE)
pointC<- sample(1:10,12, replace=TRUE)
df <- data.frame(id,trt,pointA, pointB,pointC)
df
id trt pointA pointB pointC
1 1 A 8 8 10
2 1 OA 2 7 3
3 1 B 8 5 5
4 1 OB 5 9 4
5 2 A 9 5 7
6 2 OA 7 3 3
7 2 B 8 1 5
8 2 OB 6 1 8
9 3 A 6 4 1
10 3 OA 8 6 9
11 3 B 1 7 4
12 3 OB 5 5 9
data <- function(i){
lmdf <- lm(df[,i]~trt, data=df)
anv <- anova(lmdf)
pvalue <- anv$`Pr(>F)`
return(pvalue)
}
data(5)
我希望它看起来像:
variable pvalue
1 pointA 0.714
2 pointB 0.949
3 pointC 0.080
最佳答案
您可以将数据帧的列视为列表,并使用 sapply
迭代要用作结果的列。
从每个方差分析中获取 p 值有点繁琐,也许有人知道更好的方法,但这可行:
pvalues <- sapply( df[,3:5] , FUN = function(x)
summary(aov(x~df$trt))[[1]]$`Pr(>F)`[1]
)
data.frame(pvalues)
pvalues
pointA 0.9737895
pointB 0.2482931
pointC 0.7660808
我确实考虑过使用多元回归,但通过这种方式获得每个结果变量的 p 值并不容易。
关于r - 用于运行多个变量的线性模型和方差分析并收集数据框中的 p 值的函数,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/60440760/