gpt4 book ai didi

r - 来自方差分析输出的 x 和 y 变量的 p 值矩阵

转载 作者:行者123 更新时间:2023-12-03 22:54:25 27 4
gpt4 key购买 nike

我有很多 X 和 Y 变量(比如 500 x 500)。以下只是小数据:

yvars <- data.frame (Yv1 = rnorm(100, 5, 3), Y2 = rnorm (100, 6, 4),
Yv3 = rnorm (100, 14, 3))
xvars <- data.frame (Xv1 = sample (c(1,0, -1), 100, replace = T),
X2 = sample (c(1,0, -1), 100, replace = T),
Xv3 = sample (c(1,0, -1), 100, replace = T),
D = sample (c(1,0, -1), 100, replace = T))

我想提取 p 值并制作这样的矩阵:
     Yv1    Y2     Yv3   
Xv1
X2
Xv3
D

这是我尝试循环该过程:
prob = NULL
anova.pmat <- function (x) {
mydata <- data.frame(yvar = yvars[, x], xvars)
for (i in seq(length(xvars))) {
prob[[i]] <- anova(lm(yvar ~ mydata[, i + 1],
data = mydata))$`Pr(>F)`[1]
}
}
sapply (yvars,anova.pmat)
Error in .subset(x, j) : only 0's may be mixed with negative subscripts
What could be the solution ?

编辑:

对于第一个 Y 变量:

对于第一个 Y 变量:
prob <- NULL
mydata <- data.frame(yvar = yvars[, 1], xvars)
for (i in seq(length(xvars))) {
prob[[i]] <- anova(lm(yvar ~ mydata[, i + 1],
data = mydata))$`Pr(>F)`[1]
}

prob
[1] 0.4995179 0.4067040 0.4181571 0.6291167

再次编辑:
for (j in seq(length (yvars))){
prob <- NULL
mydata <- data.frame(yvar = yvars[, j], xvars)
for (i in seq(length(xvars))) {
prob[[i]] <- anova(lm(yvar ~ mydata[, i + 1],
data = mydata))$`Pr(>F)`[1]
}
}

Gives the same result as above !!!

最佳答案

这是一种使用 plyr 的方法为每个 xvars 循环遍历数据帧的列(将其视为列表)和 yvars ,返回适当的 p 值,将其排列成矩阵。添加行/列名称只是额外的。

library("plyr")

probs <- laply(xvars, function(x) {
laply(yvars, function(y) {
anova(lm(y~x))$`Pr(>F)`[1]
})
})
rownames(probs) <- names(xvars)
colnames(probs) <- names(yvars)

关于r - 来自方差分析输出的 x 和 y 变量的 p 值矩阵,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/11419648/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com