微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

有没有办法在 R多 DV 和多 IV中执行多变量 glm?

如何解决有没有办法在 R多 DV 和多 IV中执行多变量 glm?

我对 R 还很陌生,我想对我的数据集进行多变量和单变量分析

数据集示例:

enter image description here

我有 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 举报,一经查实,本站将立刻删除。