如何解决有没有办法在 R多 DV 和多 IV中执行多变量 glm?
我对 R 还很陌生,我想对我的数据集进行多变量和单变量分析
我有 32 个因变量和 4 个自变量,它们都排列在列中。我想做多变量分析,告诉我哪些自变量对我的蛋白质有显着影响。然后我想对每个蛋白质进行单变量分析,看看哪个 IV 对于每个蛋白质是重要的。我希望这类似于 SPSS 中的多变量分析,例如:
model <- glm(df[,c(9:40]~df[,c(4:8)],family="poisson",data=df)
在 R 中有没有办法做到这一点?
这就是我想做的单变量分析
model_univariate <- glm(Protein1 ~ age + bmi+ gender+ group,data=data)
我尝试做一个 for 循环来尝试,所以我不必为每个蛋白质一个一个地输入公式,但我一直收到错误
IV <- df[,c(4:8)]
DV <-df[,c(9:40)]
for (y in DV){
form <- formula(paste(y,"~",IV))
models[[y]] <- glm(form,data = df,family="poisson")
}
错误消息:terms.formula(formula,data = data) 中的错误: 模型公式中的无效项
解决方法
请在未来提供示例数据集。假设我们有这样的事情:
df = data.frame(matrix(rpois(4000,20),100,40))
colnames(df)[1:4] = c("c1","c2","c3","c4")
colnames(df)[5:8] = paste0("IV",1:4)
colnames(df)[9:40] = paste0("Protein",1:32)
定义 DV 和 IV:
DV = colnames(df)[9:40]
IV = colnames(df)[5:8]
您没有正确定义多变量响应。如果打算一次性拟合所有响应,但将每个响应分开,则您拥有的多响应模型仅适用于 lm
,不适用于泊松所需的 glm
。
如果要对所有响应进行建模,考虑到它们之间的关系,@eipi10 建议的包确实是要走的路。
单变量:
models = vector("list",length(DV))
names(models) = DV
for (y in DV){
form <- reformulate(response=y,IV)
models[[y]] <- glm(form,data = df,family="poisson")
}
models[["Protein1"]]
Call: glm(formula = form,family = "poisson",data = df)
Coefficients:
(Intercept) IV1 IV2 IV3 IV4
3.3793743 -0.0063736 -0.0094023 -0.0026646 -0.0007955
Degrees of Freedom: 99 Total (i.e. Null); 95 Residual
Null Deviance: 123.4
Residual Deviance: 118.4 AIC: 609.6
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。