R数据分析:如何绘制回归分析结果的森林图

本文介绍了如何使用R语言绘制逻辑回归模型的森林图,包括显示系数、置信区间和自变量排序,并展示了如何自定义图形样式和添加重要信息。这种可视化方式常用于SCI论文,有助于清晰展示模型结果。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

今天给大家写写如何把你做的模型系数画出来,就是你的模型中自变量都有一个系数和置信区间嘛,那么我们把系数和其置信区间画出来的样子就像是meta中的森林图差不多,所以我把文章起了个绘制回归分析结果的森林图。

有人要问画这个有啥用呢?

你发SCI总能用得到的,虽然中文文章画这个的我没太见着,英文文章很多使用这种森林图展示结果的,下图就是一个例子,所以赶紧收藏一下哦。

 

实例描述

今天给大家画一个逻辑回归的。

今天的例子为研究GRE,GPA和学校排名是否会影响一个人被录取为研究生,在这个例子中GRE和GPA都是连续变量,学校排名rank为分类变量,是否录取admit为(0/1)二分类

读入数据拟合模型一气呵成:

mydata <- read.csv('C:/Users/hrd/Desktop/bootcamp/dataset/binary.csv')
mylogit <- glm(admit ~ gre + gpa + rank, data = mydata, family = "binomial")

然后我们可以看一看模型的OR值和置信区间:

exp(cbind(OR = coef(mylogit), confint(mylogit)))

 

那么要画出模型系数的森林图最简单的就是直接把整个模型喂给plot_model这个函数:

plot_model(mylogit)

 

注意,我们图中间有个线比较白,这个叫做零作用线,在逻辑回归或者其他的广义线性回归中为1,在一般的线性回归中为o,那么我们可以改变这个线的颜色以示强调:

plot_model(mylogit, vline.color = "red")

 

当然,我们还可以改变量的排序,比如我想要效应大的自变量首先展示:

plot_model(mylogit, sort.est = TRUE,vline.color = 'blue')

 

当然了,我们还可以自定义自变量的排序,你只需要把顺序喂给order.items参数就行:

plot_model(mylogit, order.terms = c(3,4, 5, 1, 2))

 

还有一个比较有用的技巧就是,你可以在图中展示自变量效应的大小和p值:

plot_model(mylogit,show.values = T)

 

很多情况下你还想改变图的默认标题,也很好办,比如我可以改成我想要的标题:

plot_model(mylogit,show.values = T,title ='关注Codewar,数据处理不迷路,哈哈哈')

 

这种森林图还有很多技巧,以后给大家一一介绍。

小结

今天给大家写了一个逻辑回归的系数可视化,感谢大家耐心看完,自己的文章都写的很细,代码都在原文中,希望大家都可以自己做一做,请关注后私信回复“数据链接”获取所有数据和本人收集的学习资料。如果对您有用请先收藏,再点赞转发。

也欢迎大家的意见和建议。

如果你是一个大学本科生或研究生,如果你正在因为你的统计作业、数据分析、论文、报告、考试等发愁,如果你在使用SPSS,R,Python,Mplus, Excel中遇到任何问题,都可以联系我。因为我可以给您提供最好的,最详细和耐心的数据分析服务。

如果你对Z检验,t检验,方差分析,多元方差分析,回归,卡方检验,相关,多水平模型,结构方程模型,中介调节,量表信效度等等统计技巧有任何问题,请私信我,获取最详细和耐心的指导。

If you are a student and you are worried about you statistical #Assignments, #Data #Analysis, #Thesis, #reports, #composing, #Quizzes, Exams.. And if you are facing problem in #SPSS, #R-Programming, #Excel, Mplus, then contact me. Because I could provide you the best services for your Data Analysis.

Are you confused with statistical Techniques like z-test, t-test, ANOVA, MANOVA, Regression, Logistic Regression, Chi-Square, Correlation, Association, SEM, multilevel model, mediation and moderation etc. for your Data Analysis...??

Then Contact Me. I will solve your Problem...

加油吧,打工人!

 

### 使用广义线性模型创建森林 #### 广义线性模型概述 广义线性模型(Generalized Linear Models, GLMs)是一类灵活的统计模型,适用于多种类型的响应变量。GLM通过连接函数将线性预测器与响应变量关联起来[^2]。 #### 创建森林的目的 森林通常用于展示多个研究结果或不同因素的影响程度。对于广义线性模型而言,森林可以用来直观地表示各个自变量对因变量影响大小及其置信区间。 #### 方法及实现过程 ##### 数据准备阶段 首先需要准备好适合于广义线性模型的数据集,并确保数据已经过适当预处理,如缺失值填充、异常检测等操作。这里假设已经有了一个经过清洗后的数据框`df`以及目标列名`target_column`和特征列表`feature_columns`。 ##### 构建并训练广义线性模型 使用Python中的`statsmodels`库构建广义线性模型: ```python import statsmodels.api as sm X = df[feature_columns] y = df[target_column] # 添加常数项 X_with_const = sm.add_constant(X) model = sm.GLM(y, X_with_const, family=sm.families.Poisson()) result = model.fit() print(result.summary()) ``` ##### 提取系数估计值与标准误 从拟合好的模型对象中提取每个解释变量对应的参数估计值及其对应的标准误差,这些信息将会被用来绘制森林。 ```python params = result.params conf_int = result.conf_int(alpha=0.05) p_values = result.pvalues forest_data = pd.DataFrame({ 'coef': params, 'low_CI': conf_int.iloc[:, 0], 'high_CI': conf_int.iloc[:, 1], 'p_value': p_values }) ``` ##### 绘制森林 利用matplotlib或其他绘工具包来制作森林。下面是一个简单的例子,它会显示各因子相对于参照组的变化情况。 ```python import matplotlib.pyplot as plt import seaborn as sns plt.figure(figsize=(8, 6)) sns.set(style="whitegrid") for i in range(len(forest_data)): ci_low = forest_data.loc[i,'low_CI'] ci_high = forest_data.loc[i,'high_CI'] plt.plot([ci_low, ci_high], [i,i], color='blue', linewidth=2) plt.scatter([forest_data.loc[i,'coef']], [i], s=75, marker='o', facecolors='none', edgecolors='red') plt.yticks(range(len(forest_data)), list(forest_data.index), fontsize=12) plt.axvline(x=0, linestyle="--", c=".5") plt.xlabel('Log Odds Ratio (95% CI)', size=14) plt.title('Forest Plot of Coefficients from Generalized Linear Model', weight='bold') plt.show() ```
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

公众号Codewar原创作者

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值