做代谢组学分析,一共有147种代谢物,需要每个单独和其他选定的协变量一起放入线性回归模型中,依次替换147种代谢物,完成147次回归分析。
R语言
1、 数据预处理:excel和spss 2、 for循环 3、 lm() 线性回归 4、 导出结果分析
excel:数据转置,改为横向数据;生成log转化代谢物含量;给代谢物按顺序命名为com1 TO com147 spss:可视化检查数据,为多分类变量生成哑变量dummy。
一开始的思路不对,总想着要在lm函数里面使用i,依次替换代谢物的变量名。后来发现了,应该无法实现,因为生成的com[i]是一个向量或是列表,反正就是无法放入回归函数中使用。 最后明白了,应该是直接依次“提取”第i个代谢物。
for (q in c(222:368)){ #我的代谢物放在第222至368列 result <- lm(tdata$Y~ tdata[,q]+tdata$age) } #注意:不能使用data=tdata这样,而一定要用$提取变量,否则tdata[,q]会报错R包:officer, xtable and flextable
#Officer is a R package that can generate and deal with Word and PowerPoint files. install.packages("officer", dependencies = TRUE) #setup your table install.packages("xtable", dependencies = TRUE) install.packages("flextable", dependencies = TRUE) library(xtable) library(flextable) output = xtable_to_flextable(xtable(timo)) output #output results to word file library(officer) doc = read_docx() doc = body_add_flextable(doc, output) print(doc, "C:/Users/tingt/Desktop/output.docx")timo是我已经整理成表格形式的结果,要学习如何整理结果,参见R语言数据和统计结果怎么更友好显示并输出到word
放几条学习链接: 先学lm:R语言做线性回归 简易入门:R获取回归系数的置信区间? R批量差异性分析 一个自己写包分析大气数据的:批量线性回归分析利器anylm R语言导出分析结果 了解officer的细则原理等不错:R语言officer、flextable包生成word报告 这个最好:R语言数据和统计结果怎么更友好显示并输出到word
“懒人”改变世界,懒得做单调重复的事情,所以耐心用了一天的时间写好代码,一键操作,减少出错,心情舒畅。
今天猛然意识到,如果是多元线性回归,应该直接用GLM generalized linear regression models啊,而不是把这么多变量都放进lm里面???