如何用R语言画森林图展示Logistic回归分析的结果,很多新手对此不是很清楚,为了帮助大家解决这个难题,下面小编将为大家详细讲解,有这方面需求的人可以来学习下,希望你能有所收获。
就采用表格的形式展示Logistic回归分析的结果,上述表格把有统计学意义的结果进行了加粗,使得读者看起来不那么费劲。那么,有没有更加直观的方法展示回归结果呢?当然有,那就是森林图。近年来,越来越多文献用森林图来展示回归的结果。接下来我们一起来学习一下如何用R作森林图。
森林图展示的数据通常是Logistic回归分析的系数和95%置信区间以及显著性检验的P值,那么如何获得这些结果呢?
logistic回归分析的代码
data(Affairs,package = "AER")df<-Affairsdf$ynaffairs<-ifelse(df$affairs>0,1,0)df$ynaffairs<-factor(df$ynaffairs, levels = c(0,1), labels = c("No","Yes"))fit.full<-glm(ynaffairs~gender+age+yearsmarried+ children+religiousness+education+occupation+rating, data=df,family = binomial())fit.result<-summary(fit.full)df1<-fit.result$coefficientsdf2<-confint(fit.full)df3<-cbind(df1,df2)df4<-data.frame(df3[-1,c(1,4,5,6)])df4$Var<-rownames(df4)colnames(df4)<-c("OR","Pvalue","OR_1","OR_2","Var")df5<-df4[,c(5,1,2,3,4)]df5$OR_mean<-df5$ORdf5$OR<-paste0(round(df5$OR,2), "(", round(df5$OR_1,2), "~", round(df5$OR_2,2), ")")df5$Pvalue<-round(df5$Pvalue,3)write.csv(df5,file = "forestplot_example.csv", quote = F,row.names = F)
导出数据以后需要自己手动添加一行, 最终作图的数据如下
这里准备数据的过程稍微有些繁琐了,不知道大家有没有简便的方法呢?欢迎留言讨论呀!
首先是安装
install.packages("forestplot")
读入数据并作图
library(forestplot)fp<-read.csv("forestplot_example.csv",header=T)forestplot(labeltext=as.matrix(fp[,1:3]), mean=fp$OR_mean, lower=fp$OR_1, upper=fp$OR_2, zero=0, boxsize=0.2, graph.pos=2)
接下来是简单的美化
forestplot(labeltext=as.matrix(fp[,1:3]), mean=fp$OR_mean, lower=fp$OR_1, upper=fp$OR_2, zero=0, boxsize=0.2, lineheight = unit(7,'mm'), colgap=unit(2,'mm'), lwd.zero=1.5, lwd.ci=2, col=fpColors(box='#458B00', summary='#8B008B', lines = 'black', zero = '#7AC5CD'), xlab="OR", lwd.xaxis =1, txt_gp = fpTxtGp(ticks = gpar(cex = 0.85), xlab = gpar(cex = 0.8), cex = 0.9), lty.ci = "solid", title = "Forestplot", line.margin = 0.08, graph.pos=2)
看完上述内容是否对您有帮助呢?如果还想对相关知识有进一步的了解或阅读更多相关文章,请关注亿速云行业资讯频道,感谢您对亿速云的支持。
亿速云「云服务器」,即开即用、新一代英特尔至强铂金CPU、三副本存储NVMe SSD云盘,价格低至29元/月。点击查看>>
免责声明:本站发布的内容(图片、视频和文字)以原创、转载和分享为主,文章观点不代表本网站立场,如果涉及侵权请联系站长邮箱:is@yisu.com进行举报,并提供相关证据,一经查实,将立刻删除涉嫌侵权内容。
原文链接:https://my.oschina.net/u/4579431/blog/4911421