我是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, family="poisson", 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)出错:模型公式中的术语无效
发布于 2021-02-04 21:05:51
请在以后提供示例数据集。假设我们有这样的东西:
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.6https://stackoverflow.com/questions/65998753
复制相似问题