R语言用lme4多层次(混合效应)广义线性模型(GLM),逻辑回归分析教育留级调查数据(上)

简介: R语言用lme4多层次(混合效应)广义线性模型(GLM),逻辑回归分析教育留级调查数据

原文链接:http://tecdat.cn/?p=22813


本教程为读者提供了使用 频率学派的广义线性模型(GLM)的基本介绍。具体来说,本教程重点介绍逻辑回归在二元结果和计数/比例结果情况下的使用,以及模型评估的方法。本教程使用教育数据例子进行模型的应用。此外,本教程还简要演示了用R对GLM模型进行的多层次扩展。最后,还讨论了GLM框架中的更多分布和链接函数。


本教程包含以下结构。

1. 准备工作。

2. 介绍GLM。

3. 加载教育数据。

4. 数据准备。

5. 二元(伯努利)Logistic回归。

6. 二项式 Logistic 回归。

7. 多层次Logistic回归。

8. 其他族和链接函数。

本教程介绍了:

- 假设检验和统计推断的基本知识。

- 回归的基本知识。

- R语言编码的基本知识。

- 进行绘图和数据处理的基本知识。


广义线性模型(GLM)简介


对于y是连续值得情况,我们可以用这种方式处理,但当y是离散值我们用普通线性模型就不合适了,这时我们引用另外一种模型 --- Generalised Linear Models 广义线性模型。

为了获取GLM模型,我们列出3个条件:


  1. ,也就是y|x为指数族分布,指数族分布形式:

2. 如果我们判断y的假设为 ,则

3. 自然参数和输入x呈线性关系:

这3个条件的来由我们不讨论,我们只知道做这样的假设是基于“设计”的选择,而非必然。

我们以泊松回归为例, y服从泊松分布 ,化为指数族形式,我们可以得到 。所以

之后即为最大似然法的过程。


教育数据


本教程中使用的数据是教育数据。

该数据来源于全国性的小学教育调查。数据中的每一行都是指一个学生。结果变量留级是一个二分变量,表示一个学生在小学教育期间是否留过级。学校变量表示一个学生所在的学校。个人层面的预测因素包括。  性别(0=女性,1=男性)和学前教育(受过学前教育,0=没有,1=有)。学校层面是学校平均SES(社会经济地位)得分。

本教程利用教育数据试图回答的主要研究问题是。

忽略数据的结构,性别和学前教育对学生是否留级的影响是什么?

忽略数据的结构,学校平均SES对学生留级比例的影响是什么?

考虑到数据的结构,性别、学前教育和学校平均SES对学生是否留级有什么影响?

这三个问题分别用以下这些模型来回答:二元逻辑回归;二项逻辑回归;多层次二元逻辑回归。


数据准备


加载必要的软件包

# 如果你还没有安装这些包,请使用install.packages("package_name")命令。
library(lme4) # 用于多层次模型
library(tidyverse) # 用于数据处理和绘图

导入数据

head(Edu)

数据处理

mutate(学校 = factor(学校),
         性别 = if_else(性别 == 0, "girl", "boy"),
         性别 = factor(性别, levels = c("girl", "boy")),
         受过学前教育 = if_else(受过学前教育 == 0, "no", "yes"),
         受过学前教育 = factor(受过学前教育, levels = c("no", "yes")))

检查缺失的数据

summarise_each((~sum(is.na(.))

数据中,经济地位变量有1066个观测值缺失。对缺失数据的处理本身就是一个复杂的话题。为了方便起见,我们在本教程中简单地将数据缺失的案例删除。


二元逻辑回归


探索数据:按性别和学前教育分类的留级数量

group_by(性别) %>%
  summarise(是否留过级 = sum(是否留过级))

看来,留级的学生人数在男女之间有很大的不同,更多的男学生留级。更多没有接受过学前教育的学生留级。这一观察结果表明,性别和学前教育可能对留级有预测作用。


构建二元逻辑回归模型


R默认安装了基础包,其中包括运行GLM的glm函数。glm的参数与lm的参数相似:公式和数据。然而,glm需要一个额外的参数:family,它指定了结果变量的假设分布;在family中我们还需要指定链接函数。family的默认值是gaussian(link = "identity"),这导致了一个线性模型,相当于由lm指定的模型。在二元逻辑回归的情况下,glm要求我们指定一个带有logit链接的二项分布,即family = binomial(link = "logit") 。

glm(formula ,
                    family = binomial(link = "logit"))

解释


从上面的总结输出中,我们可以看到,性别对学生留级的概率有正向和显著的预测,而学前教育则有负向和显著的预测。具体来说,与女孩相比,男孩更有可能留级。以前上过学的学生不太可能导致留级。

为了解释参数估计值,我们需要对估计值进行指数化处理。

请注意,参数估计的解释与几率而不是概率有关。赔率的定义是。P(事件发生)/P(事件未发生)。在本分析中,假设其他一切保持不变,与女孩相比,男孩增加了54%的留级几率;与没有学前教育相比,假设其他一切保持不变,拥有学前教育降低了(1-0.54)%=46%的留级几率。


参数效应的可视化


为了使参数效应的解释更加容易,我们可以对参数效应可视化。

plot(Effects)

请注意,在这两张图中,Y刻度指的是留级的概率,而不是几率。概率比几率更容易解释。每个变量的概率分数是通过假设模型中的其他变量是常数并采取其平均值来计算的。正如我们所看到的,假设一个学生有平均的学前教育,作为一个男孩比作为一个女孩有更高的留级概率(~0.16)~0.11)。同样,假设一个学生有一个平均的性别,有学前教育的学生比没有学前教育的学生留级的概率低(~0.11)(~0.18)。请注意,在这两幅图中,还包括了估计值的置信区间,以使我们对估计值的不确定性有一些了解。

请注意,平均学前教育和性别的概念可能听起来很奇怪,因为它们是分类变量(即因素)。如果你对假设一个平均因素的想法感到奇怪,你可以指定你的预期因素水平作为参考点。

predictors = list( values=c(性别boy=0, 受过学前教育yes = 0))

设置性别boy = 0意味着在学前教育效应图中,性别变量的参考水平被设置为0;学前教育yes = 0导致0成为性别效应图中学前教育变量的参考水平。

因此,正如上面两幅图所示,假设学生没有接受过学前教育,作为男孩的留级概率(~0.20)比作为女孩的留级概率(~0.14)要高;假设学生是女性,有学前教育的留级概率(~0.09)比没有学前教育的留级概率(~0.15)要低。


点击标题查阅往期内容


多水平模型、分层线性模型HLM、混合效应模型研究教师的受欢迎程度


01

02

03

04


模型评估:拟合度


评价逻辑回归模型的拟合度有不同的方法。


似然比检验


如果一个逻辑回归模型与预测因子较少的模型相比,显示出拟合度的提高,则该模型对数据有较好的拟合度。这是用似然比检验进行的,它将完整模型下数据的似然性与较少预测因素的模型下数据的似然性进行比较。从一个模型中删除预测变量几乎总是会使模型的拟合度降低(即模型的对数似然率较低),但测试观察到的模型拟合度差异是否具有统计学意义是很有用的。

#指定一个只有`性别'变量的模型
#使用\`anova()\`函数来运行似然比测试
anova(ModelTest, Model, test ="Chisq")

我们可以看到,同时包含性别和学前教育的预测因子的模型比只包含性别变量的模型对数据的拟合效果要好得多。请注意,这种方法也可以用来确定是否有必要包括一个或一组变量。


AIC


Akaike信息准则(AIC)是另一个模型选择的衡量标准。与似然比检验不同,AIC的计算不仅要考虑模型的拟合度,还要考虑模型的简单性。通过这种方式,AIC处理了模型的拟合度和复杂性之间的权衡,因此,不鼓励过度拟合。较小的AIC是首选。

在AIC值较小的情况下,同时具有性别和学前教育预测因子的模型优于只具有性别预测因子的模型。


正确分类率


正确分类率是另一个有用的衡量标准,可以看出模型对数据的合适程度。

#使用\`predict()\`函数,从拟合的模型中计算出原始数据中学生的预测概率
Pred <- if_else(Pred > 0.5, 1, 0)
ConfusionMatrix <- table(Pred, TRUE)
#正确的分类率

我们可以看到,该模型对所有观测值的85.8%进行了正确分类。然而,仔细观察可以发现,模型预测所有的观察值都属于 "0 "类,也就是说,所有的学生都被预测为不留级。考虑到留级变量的多数类别是0(不),该模型在分类上的表现并不比简单地将所有观测值分配到多数类别0(不)更好。


AUC(曲线下面积)


使用正确分类率的一个替代方法是曲线下面积(AUC)测量。AUC测量区分度,即测试对有目标反应和无目标反应的人进行正确分类的能力。在目前的数据中,目标变量是留级。我们从 "留级 "组和 "不留级 "组中随机抽取一名学生。预测概率较高的学生应该是 "留级 "组中的学生。AUC是随机抽出的对子的百分比。这个程序将AUC与正确分类率区分开来,因为AUC不依赖于结果变量中类的比例的变化。0.50的值意味着该模型的分类效果不比随机好。一个好的模型应该有一个远远高于0.50的AUC分数(最好高于0.80)。

# 计算用该模型预测类别的AUC
AUC <- performance(Pred, measure = "auc")
AUC <- AUC@y.values\[\[1\]\]
AUC

AUC分数为0.60,该模型的判别能力不强。


R语言用lme4多层次(混合效应)广义线性模型(GLM),逻辑回归分析教育留级调查数据(下):https://developer.aliyun.com/article/1490591?spm=a2c6h.13148508.setting.26.658d4f0eueN6WO

相关文章
|
6月前
|
机器学习/深度学习 数据可视化
R语言逻辑回归logistic模型ROC曲线可视化分析2例:麻醉剂用量影响、汽车购买行为2
R语言逻辑回归logistic模型ROC曲线可视化分析2例:麻醉剂用量影响、汽车购买行为
|
3月前
|
机器学习/深度学习 资源调度 算法
R语言逻辑回归与分类模型的深度探索与应用
【8月更文挑战第31天】逻辑回归作为一种经典的分类算法,在R语言中通过`glm()`函数可以轻松实现。其简单、高效且易于解释的特点,使得它在处理二分类问题时具有广泛的应用价值。然而,值得注意的是,逻辑回归在处理非线性关系或复杂交互作用时可能表现不佳,此时可能需要考虑其他更复杂的分类模型。
|
3月前
|
机器学习/深度学习 数据采集
R语言逻辑回归、GAM、LDA、KNN、PCA主成分分类分析预测房价及交叉验证
上述介绍仅为简要概述,每个模型在实施时都需要仔细调整与优化。为了实现高度精确的预测,模型选择与调参是至关重要的步骤,并且交叉验证是提升模型稳健性的有效途径。在真实世界的房价预测问题中,可能还需要结合地域经济、市场趋势等宏观因素进行综合分析。
69 3
|
6月前
|
数据可视化
R语言广义线性混合模型GLMMs在生态学中应用可视化2实例合集|附数据代码2
R语言广义线性混合模型GLMMs在生态学中应用可视化2实例合集|附数据代码
|
6月前
|
数据可视化 数据挖掘
R语言广义线性混合模型GLMMs在生态学中应用可视化2实例合集|附数据代码1
R语言广义线性混合模型GLMMs在生态学中应用可视化2实例合集|附数据代码
|
6月前
|
前端开发 数据可视化
R语言广义线性混合模型(GLMM)bootstrap预测置信区间可视化
R语言广义线性混合模型(GLMM)bootstrap预测置信区间可视化
|
2月前
|
数据采集 机器学习/深度学习 数据可视化
R语言从数据到决策:R语言在商业分析中的实践
【9月更文挑战第1天】R语言在商业分析中的应用广泛而深入,从数据收集、预处理、分析到预测模型构建和决策支持,R语言都提供了强大的工具和功能。通过学习和掌握R语言在商业分析中的实践应用,我们可以更好地利用数据驱动企业决策,提升企业的竞争力和盈利能力。未来,随着大数据和人工智能技术的不断发展,R语言在商业分析领域的应用将更加广泛和深入,为企业带来更多的机遇和挑战。
|
23天前
|
数据挖掘 C语言 C++
R语言是一种强大的统计分析工具,提供了丰富的函数和包用于时间序列分析。
【10月更文挑战第21天】时间序列分析是一种重要的数据分析方法,广泛应用于经济学、金融学、气象学、生态学等领域。R语言是一种强大的统计分析工具,提供了丰富的函数和包用于时间序列分析。本文将介绍使用R语言进行时间序列分析的基本概念、方法和实例,帮助读者掌握R语言在时间序列分析中的应用。
41 3
|
6月前
|
数据可视化 数据挖掘 API
【R语言实战】聚类分析及可视化
【R语言实战】聚类分析及可视化
|
2月前
|
数据采集 数据可视化 数据挖掘
R语言在金融数据分析中的深度应用:探索数据背后的市场智慧
【9月更文挑战第1天】R语言在金融数据分析中展现出了强大的功能和广泛的应用前景。通过丰富的数据处理函数、强大的统计分析功能和优秀的可视化效果,R语言能够帮助金融机构深入挖掘数据价值,洞察市场动态。未来,随着金融数据的不断积累和技术的不断进步,R语言在金融数据分析中的应用将更加广泛和深入。