批量多分类logistic回归并导出结果

这篇博客主要介绍了如何使用R语言进行批量多分类logistic回归,通过multinom()函数实现147次回归分析,每个代谢物对应多个分组的OR值。文章强调了理解模型原理和参数设置的重要性,并分享了学习资源与心得。

待解决问题:

做代谢组学分析,一共有147种代谢物,需要每个单独和其他选定的协变量一起放入线性回归模型中,依次替换147种代谢物,完成147次回归分析。


实现步骤:

R语言

1、 数据预处理:excel和spss
2、 for循环
3、 multinom() 线性回归
4、 导出结果分析


步骤1、2、4参见我之前写的《批量线性回归并整理导出结果到word文档》,这里只讲批量multinom() 线性回归的核心步骤。

具体操作:

3. multinom() 线性回归

timo <- data.frame() #先创建一个空数据框,否则后面<- 赋值会提示找不到timo
for (q in c(222:368)){
  result <- multinom(tdata$Y ~ tdata[,q]+tdata$age)
  z <-summary(result)$coefficients/summary(result)$standard.errors
  p <- (1-pnorm(abs(z),0,1))*2
  out <- data.frame(cbind(names(tdata)[q], t(summary(result)$coefficients[,2]), t(p[,2])))
  timo <- rbind(out, timo)
}

详细解释

 z <-summary(result)$coefficients/summary(result)$standard.errors
 p <- (1-pnorm(abs(z),0,1))*2
 #因为nnet的multinom不提供p值,所以要自己计算
t(summary(result)$coefficients[,2])
#提取coefficient

t(p[,2]))
#提取p值

这两个代码一定要反复确认,最先跑好之后,summary(result)出来,一一对应着看几遍。因为你是多分类,所以每个代谢物底下会有多个分组,所以每个代谢物对应几个OR。注意如果没有t(),出来的是数组array,而不会是matrix。
建议自己多修改几个参数,对照着结果多看几遍,就会明白其中的原理了。

补充一个,如果想要认为选择对照组,可以用relevel

ml$prog2 <- relevel(ml$prog, ref = "academic")
#注意relevel只能用于无序多分类排序,即,prog的值不可一世有序的数字,可以是字符

心得体会:

放几条学习链接:

R多分类logistic回归的原理和思路:MULTINOMIAL LOGISTIC REGRESSION USING R
这个写的非常好(感激不尽!):Multinomial Logit Model (MNL) 模型R语言nnet包multinom函数实现实例

“懒人”改变世界,懒得做单调重复的事情,所以耐心用了一天的时间写好代码,一键操作,减少出错,心情舒畅。
PS:一定要知其所以然。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值