原文链接:http://tecdat.cn/?p=24203
本教程应用 R 介绍了具备非信息先验的贝叶斯 GLM(狭义线性模型)。
以后教程特地关注贝叶斯逻辑回归在二元后果和计数 / 比例后果场景中的应用,以及模型评估的相应办法。应用 教育数据 示例。此外,本教程简要演示了贝叶斯 GLM 模型的多层次扩大。
本教程遵循以下构造:
1. 筹备工作;
2.GLM 介绍;
3. 教育数据;
4. 数据筹备;
5. 贝叶斯逻辑回归;
6. 贝叶斯二项 Logistic 回归;
7. 贝叶斯档次逻辑回归。
筹备
本教程须要:
– 假设检验和统计推断的基础知识;
– 贝叶斯统计推断的基础知识;
– R 编码的基础知识;
– 应用 tidyverse 进行绘图和数据操作的基本知识。
狭义线性模型 (GLM) 介绍
狭义线性模型,是为了克服线性回归模型的毛病呈现的,是线性回归模型的推广。首先自变量能够是离散的,也能够是间断的。离散的能够是 0 - 1 变量,也能够是多种取值的变量。狭义线性模型勾销了对残差 (因变量) 遵从正态分布的要求。残差不肯定要遵从正态分布,能够遵从二项、泊松、负二项、正态、伽马、逆高斯等散布,这些散布被统称为指数分布族。
教育数据
本教程中应用的数据是教育数据。
这些数据来自于全国性的小学教育考察。数据中的每一行都是指一个学生。后果变量 REPEAT 是一个二分变量,示意一个学生在小学教育期间是否留过级。SCHOOLID 变量示意一个学生所在的学校。集体层面的预测因素包含。性别(0= 女性,1= 男性)和 PPED(受过学前教育,0= 没有,1= 有)。学校层面的是 MSESC,代表学校均匀 SES(社会经济位置)得分。
本教程试图应用教育数据答复的次要钻研问题是:
- 疏忽数据的层次结构,性别和学前教育对学生是否留级有什么影响?
- 疏忽数据的层次结构,学校均匀 SES 对学生留级比例的影响是什么?
- 思考到数据的层次结构,性别、学前教育和学校均匀社会经济位置对学生是否留级有什么影响?
这三个问题别离通过应用以下模型来答复:贝叶斯二元逻辑回归;贝叶斯二项式逻辑回归;贝叶斯多层次二元逻辑回归。
数据筹备
加载必要的包
library(tidyverse) #用于数据处理和绘图
library(sjstats) #用于计算类内相干(ICC)。library(ROCR) #用于计算曲线下面积(AUC)的统计数据
library(modelr) #用于数据处理
导入数据
数据处理
Ed\_e <- Ed\_Ra %>%
mtae(SCHLI = fcor(SCLID,
SEX = if_se(SX == 0, "grl", "by"),
SEX = facor(SEX, lvls = c("gil", "boy")),
PED = if_ese(PPED == 0, "no", "yes"),
PED = facr(PPD, leel = c("no", "yes")))
查看缺失数据
New %>%
summar(lst(~sm(is.na(.)))) %>%
gaer()
该数据短少 1066 个MSESC
变量的观测 值。缺失数据的解决自身就是一个简单的话题。为不便起见,咱们在本教程中简略地按列删除短少数据的案例。
New <- New %>%
fltr(!is.na(MEC))
贝叶斯二元逻辑回归(具备非信息先验)
摸索数据:REPEAT
与 SEX
和 PPED
gru_y(SEX) %>%
suma(RPEAT = sm(REEAT))
group_by(PED) %>%
sumais(RPEAT = sum(REEA))
看来,留级的学生人数在男女之间有很大的不同,更多的男学生不得不留级。更多没有承受过学前教育的学生留级。这一察看结果表明,性别和学前教育可能对留级有预测作用。
拟合贝叶斯二元 Logistic 回归模型
执行贝叶斯 GLM。然而,请留神,在 family
参数中,咱们须要为二元逻辑回归指定 bernoulli
(而不是 binomial
)。还有一些额定的参数:warmup
指定预烧期(即应该抛弃的迭代次数);iter
指定总迭代次数;chains
指定链数;inits
指定迭代的起始值(通常你能够应用参数的最大似然预计作为起始值,或者简略地要求算法从零开始);cores
指定用于算法的外围数;seed
指定随机种子,容许复制后果。
请参阅上面的具备两个预测变量的二元逻辑回归模型的标准,不应用信息先验。
Baysoel(fr= RPEAT ~ SX + PED,
famly = benouli(link = "logit"),
)
模型收敛
在查看模型摘要之前,咱们应该查看是否存在两条链不收敛的根据。
首先,咱们为每个感兴趣的参数绘制毛毛虫图。
plot(BysMenr,
tpe = "trce")
该图仅显示预烧期后的迭代。两条链对所有参数都很好地混合,因而,咱们得出收敛的根据。
咱们还能够查看自相干,思考到强自相干的存在会使方差预计产生偏差。
plot(Byory,tye = "afbar")
该图没有显示两个链中所有模型变量的自相干证据,因为自相干参数都迅速减小到零左近。
解释
当初,咱们能够进行模型的解释。上面是贝叶斯二元逻辑回归模型的模型摘要。
smma(Bayoenry)
为了比拟,上面是频率论二元逻辑回归模型的模型摘要。
glm(fma= REEA ~ SX + PPD,
famly = bnmia(link = "logit"),
daa = Ne)
从下面的模型总结中,咱们能够看到贝叶斯模型的预计与频率论模型的预计简直雷同。这些预计的解释在频率论和贝叶斯模型中是雷同的。然而,请留神,不确定性区间的解释在两个模型之间是不同的。在频率论模型中,应用 95% 的不确定性区间(置信区间)背地的想法是,在反复抽样的状况下,95% 的后果不确定性区间将笼罩实在的总体值。这让咱们能够说,对于给定的 95% 置信区间,咱们有 95% 的置信区间蕴含实在的总体值。然而,它不容许咱们说置信区间有 95% 的机会蕴含实在的总体值(即 频率论不确定性区间不是概率陈说)。相比之下,在贝叶斯模型中,95% 的不确定性区间(称为可信区间)更具可解释性,表明实在总体值有 95% 的机会落入该区间内。当 95% 可信区间不蕴含零时,咱们得出结论,相应的模型参数可能有意义。
让咱们应用可视化点估计及其相干的不确定性区间。
plot(asMdeBinr,
tye = "aeas",
prb = 0.95)
上图显示了参数估计的密度。每个密度中的深蓝色线示意点估计,而浅蓝色区域示意 95% 的可信区间。咱们能够很容易地看到,SEX
和 PPED
都是有意义的预测变量,因为它们的置信区间不蕴含零,并且它们的密度具备十分窄的形态。SEX
侧面预测学生留级的概率,而PPED
负面预测。具体来说,与作为女孩相比,作为男孩更有可能留级,假如其余所有都放弃不变。假如其余所有都放弃不变,之前的教育不太可能导致留级。
为了解释参数估计的值,咱们须要对预计取幂。见下文。
ex(fef(BeBiry)\[,-2\])
咱们还能够绘制这些参数估计的密度。
plt(ay\_dl\_iay,
type ="areas",
prb = 0.95,
trnsoatos = "exp") +
mne(xtp = 1, clo = gey")
请留神,参数估计的解释与几率而不是概率无关。几率的定义是。P(事件产生)/P(事件未产生)。在本剖析中,假如其余所有放弃不变,与女孩相比,男孩会减少 54% 的留级几率;与没有学前教育相比,假如其余所有放弃不变,领有学前教育会升高(1-0.54)%=46% 的留级几率。留级的基线几率(由截距项示意),即如果你是一个没有受过学校教育的女孩,大概是 17%。
参数成果的可视化
咱们能够绘制模型中变量的边际效应(即反复评分的预计概率)。上面,咱们展现了如何不同组合 SEX
和 PPED
不同的概率预计后果。这种办法的长处是概率比几率更容易解释。
Nw %>%
dta_gd(SX PE) %>%
d\_fddws(Baeo\_inry) %>%
plt(ae(x = .vau, y = inatn(SEX, PED))) +
如咱们所见,未受过学前教育的男生概率最高(~0.21),其次是未受过学前教育的女孩(~0.15),受过学前教育的男孩(~0.13),最初,是一个受过学前教育的女孩(~0.09)。请留神,估计值的 68%(较粗的内线)和 95%(较细的内线)置信区间都包含在内,以使咱们对估计值的不确定性有所理解。
模型评估
咱们理解到咱们能够应用似然比测验和 AIC 来评估模型的拟合优度。然而,这两种办法不适用于贝叶斯模型。相同,贝叶斯模型利用所谓的 _后验预测 P 值 (PPP)_ 来评估模型的拟合度。此外,许多模型还应用 _贝叶斯因子_ 来量化数据对模型的反对。
另外两个度量 是 _正确分类率_ 和 _曲线下面积(AUC)_。它们与模型无关,也就是说,它们能够利用于频率论和贝叶斯模型。
正确分类率
正确分类的百分比是查看模型与数据拟合水平的有用度量。
# 应用 \`prdct()\` 函数,从拟合的模型中计算出原始数据中学生的预测概率
Prd <- prdct(BadlBay, type = "espnse")
Ped <- ilse(Ped\[,1\] > 0.5, 1, 0)
CnuMx<- tale(Pre, pul(Nw,REPT)) #\`pull\` 的后果是一个向量
#正确的分类率
sm(dag(Cosaix))/sum(Cofinaix)
CMatix
咱们能够看到,该模型对所有观测值的 85.8% 进行了正确分类。然而,仔细观察混同矩阵能够发现,模型预测所有的察看值都属于 “0 “ 类,也就是说,所有的学生都被预测为不会留级。思考到 REPEAT 变量的少数类别是 0(不),该模型在分类中的体现并不比简略地将所有观测值调配给少数类别 0(不)更好。
AUC(曲线下面积)
应用正确分类率的代替办法是曲线下面积 (AUC) 度量。AUC 掂量歧视,即测试正确分类那些有和没有指标响应的能力。在以后数据中,指标响应是反复一个等级。咱们从“留级”组中随机抽取一名学生,从“不留级”组中随机抽取一名学生。预测概率较高的学生应该是“反复问题”组中的学生。AUC 是随机抽取的对的百分比,这是正确的。此过程将 AUC 与正确分类率辨别开来,因为 AUC 不依赖于后果变量中类别比例的不均衡。值 0.50 示意模型的分类成果并不比机会好。
应用正确分类率的一个代替办法是曲线下面积(AUC)测量。AUC 掂量的是分辨力,即测试对因变量进行正确分类的能力。在目前的数据中,指标因变量是留级。咱们从 “ 留级 “ 组和 “ 不留级 “ 组中随机抽取一名学生。预测概率较高的学生应该是 “ 留级 “ 组中的学生。AUC 是随机抽出的对子的百分比,这一点是实在的。这个程序将 AUC 与正确分类率辨别开来,因为 AUC 不依赖于后果变量中类的比例的变动。0.50 的值意味着该模型的分类成果不比随机好。一个好的模型的 AUC 分数应该远远高于 0.50(最好是高于 0.80)。
# 计算用该模型预测类别的 AUC
Pr <- prdit(Bas\_odl\_iay type="rsone")
Pr <- rob\[,1\]
Prd <- prition(Prb, as.tor(ull(Ne, REPAT)))
auc <- pemneed, easre = "auc")
auc
AUC 得分靠近 0.60,模型不能很好地区分。
贝叶斯二项式逻辑回归(具备非信息先验)
逻辑回归也可用于对计数或比例数据进行建模。二元逻辑回归假如后果变量来自伯努利散布(这是二项分布的特例),其中试验次数 nn 为 1,因而后果变量只能是 1 或 0。相同,二项逻辑回归假如指标事件的数量遵从 n 次试验和概率 q 的二项式散布。通过这种形式,二项逻辑回归容许后果变量采纳任何非负整数值,因而可能解决计数数据。
汇集在学校内的个别学生的 信息。通过汇总按学校留级的学生人数,咱们取得了一个新数据集,其中每一行代表一所学校,以及无关该学校留级学生比例的信息。该 MSESC
(均匀得分 SES)也对学校的程度; 因而,它可用于预测特定学校留级学生的比例或数量。见下文。
转换数据
Prop <-New %>%
gouby(SOLD,MSC) %>%
suie(EAT = sum(RPT),
TAL = n()) %>%
urup()
在这个新的数据集中,REPEAT
指的是留级的学生人数;TOTAL
指特定学校的学生总数。
摸索数据
Prop %>%
plot(aes(x , y) +
point()
咱们能够看到,留级的学生比例与 的逆对数呈(中等)负相关 MSESC
。请留神,咱们将变量建模 MSESC
为其逆 logit,因为在二项式回归模型中,咱们假如线性预测变量的逆 logit 与后果(即事件的比例)之间存在线性关系,而不是预测变量自身与预测变量之间的线性关系后果。
拟合二项 Logistic 回归模型
为了拟合贝叶斯二项逻辑回归模型,咱们还应用了brm
与之前的贝叶斯二项逻辑回归模型一样的 函数。然而,有两个不同之处:首先,要在公式中指定后果变量,咱们须要指定指标事件数 (REPEAT
) 和蕴含在 中的试验总数 (TOTAL
) trials()
,它们之间用 分隔 |
。此外,family
应该是“二项式”而不是“伯努利”。
ay_Moe(REAT | rias(TTAL) ~ SEC,
daa = Pop,
inillnk "logt"))
summary
频率模型(用于比拟):
glm(fla =ind(PEAT, TAL-PET) ~ SS,
famiy = inal(lgit),
dta =Prop)
咱们能够看到贝叶斯和频率二项式逻辑回归模型之间的模型预计十分类似。请留神,为了使本教程更简短,咱们跳过了查看模型收敛的步骤。您能够应用咱们之前展现的雷同代码(应用二元逻辑回归模型)来查看该模型的收敛性。
解释
二项式回归模型中的参数解释与二项逻辑回归模型中的参数解释雷同。咱们从下面的模型总结中晓得,一所学校的均匀 SES 分数与该学校学生留级的几率呈负相关。为了加强可解释性,咱们再次计算 的指数系数预计 MSESC
。因为 MSESC
是一个连续变量,咱们能够对指数MSESC
预计进行标准化(通过将原始预计与变量的 SD 相乘,而后对后果数字取幂)。
exp(fxef(Bodlrp)\[2,-2\]*sd(pll(_p,MSC), n.rm = T))
咱们能够看到,随着 的 SD 减少 MSESC
,学生留级的几率升高了大概 (1 – 85%) = 15%。“Q2.5”和“Q97.5”别离指不确定区间的上限和下限。该置信区间不蕴含零,表明该变量可能有意义。
咱们能够将 的成果可视化 MSESC
。
reraw(btrct, SSC) %>%
grp(MSESC) %>%
sume(ped_m = mean(ed,ar = R
re_lw = qantle(ped,po = 0.025),
rd_hgh = quatle(pd, prb = 0.975)) %>%
plt(as(x = SC, y = pedm)) +
line() +
gmn(es(ymn = pe_ow,yma = redig), aha=.2) +
上图显示了MSESC
对学生留级概率的预期影响。放弃其余所有不变,随着 MSESC
减少,学生留级的概率升高(从 0.19 到 0.08)。灰色暗影区域示意每个 值处预测值的 95% 置信区间 MSESC
。
模型评估
与贝叶斯二元逻辑回归模型相似,咱们能够应用 PPPS 和贝叶斯系数(本教程中没有探讨)来评估贝叶斯二元逻辑回归模型的拟合度。正确分类率和 AUC 在这里不适宜,因为该模型不波及分类。
贝叶斯 多层次 二元逻辑回归(具备非信息先验)
后面介绍的贝叶斯二元逻辑回归模型仅限于对学生层面的预测因素的影响进行建模;贝叶斯二元逻辑回归仅限于对学校层面的预测因素的影响进行建模。为了同时纳入学生层面和学校层面的预测因素,咱们能够应用多层次模型,特地是贝叶斯的多层次二元逻辑回归。
除了上述动机之外,还有更多的理由来应用多层次模型。例如,因为数据是在学校内聚类的,来自同一学校的学生很可能比来自其余学校的学生更类似。正因为如此,在一所学校,一个学生留级的概率可能很高,而在另一所学校,则很低。此外,即便是后果(即留级)和预测变量(如性别、学前教育、SES)之间的关系,在不同的学校也可能不同。还要留神的是,MSESC 变量中存在缺失值。应用多层次模型能够适当地解决这些问题。
以下图为例。该图显示了各个学校留级学生的比例。咱们能够看到不同学校之间的微小差别。因而,咱们须要多层次模型。
Edu %>%
grop_(ID) %>%
sumrie(RP = sum(PA)/n()) %>%
plt()
咱们还能够绘制 SEX
和 REPEAT
,SCHOOLID
之间的关系,查看性别和留级之间的关系是否因学校而异。
Euew %>%
utt(SX = ifelse(EX == "boy", 1, 0)) %>%
plt(es(x = SE, y = REAT)) +
pint(alpha = .1)+
ooth(mehod = "glm", se = F,
hd.s= lsily = "binomial"))
在下面的图中,不同的色彩代表不同的学校。咱们能够看到,不同学校的 SEX 和 REPEAT 之间的关系仿佛有很大不同。
咱们能够为 PPED
和 REPEAT
绘制雷同的图。
due %>%
tat(PED = ifelse(PED == "yes", 1, 0)) %>%
pot(as(x = PP, y = RPT, cor =a.fcor(ID)) +
goi(lha=.1,)+
goth(method = "glm",
ehog = lst(family = "binomial")) +
PPED
和 之间的关系 REPEAT
仿佛也因学校而异。然而,咱们也能够看到,大多数关系遵循降落趋势,从 0(未受过教育)到 1(受过教育),表明 PPED
和 REPEAT
之间存在负相关关系。
因为上述察看,咱们能够得出结论,须要在以后数据中进行多层次建模,不仅具备随机截距 (SCHOOLID
),而且还具备SEX
和 的 潜在随机斜率 PPED
。
核心变量
在拟合多层次模型之前,有必要应用适当的中心化办法(即大均值中心化或簇内中心化)对预测因子进行中心化,因为中心化办法对模型预计的解释很重要。依据 Enders 和 Tofighi(2007)的倡议,咱们应该对第一档次的预测因子 SEX 和 PPED 应用组内中心化,对第二档次的预测因子 MSESC 应用平均值中心化。
Euee <- New %>%
group_by(ID) %>%
muae(SEX - mean(SE),
PED - mean(PED)) %>%
uou() %>%
muate(ME - mean(MEC, na.rm = T))
仅截距模型
为了指定多层次模型,咱们再次应用 包中的 brm
函数 brms
。请留神,随机效应项应蕴含在括号中。此外,在括号内,随机斜率项和聚类项之间应以 隔开 |
。
咱们首先指定一个仅截距模型,以评估数据聚类构造的影响。咱们将跳过模型收敛诊断的步骤。
BaeselMti(RPAT ~ 1 + (1|SOLID),
data
famly = beouli(link = "logt"
上面咱们计算仅截距模型的 ICC(类内相关性)。请留神,对于非高斯贝叶斯模型(例如逻辑回归),咱们须要设置“ppd = T”,以便方差计算基于后验预测散布。
icc(BylMunrept, pd = T)
0.29 的方差比(与 ICC 相当)意味着后果变量中 29% 的变异能够由数据的聚类构造来解释。这提供了证据,表明与非多层次模型相比,多层次模型可能会对模型预计产生影响。因而,多层次模型的应用是必要的。
残缺模型
循序渐进地建设多层次模型是一个好的做法。然而,因为本教程的重点不是多层次模型,咱们间接从仅有的截距模型到咱们最终感兴趣的残缺模型。在残缺模型中,咱们不仅包含 SEX、PPED 和 MSESC 的固定效应项和一个随机截距项,还包含 SEX 和 PPED 的随机斜率项。请留神,咱们指定 family = bernoulli(link = “logit”),因为这个模型实质上是一个二元逻辑回归模型。
baysMoel(RPET ~ EX + PED + SESC + (1 + EX + PPD|ID),
data
famy = brnuli(lnk = "loit"))
summary(BaeMil)
咱们能够绘制相干模型参数估计的密度。
plot(ByodlMtil,
prb = 95)
后果(与固定效应无关)与之前贝叶斯二元逻辑回归和二元逻辑回归模型的后果类似。在学生层面上,性别对学生留级的几率有正向影响,而 PPED 有负向影响。在学校层面上,MSESC 对后果变量有负面的影响。在三个预测因子中,SEX 和 PPED 的置信区间(由密度中的浅蓝色暗影区域示意)显然不蕴含零。因而,它们应该被视为有意义的预测因素。相同,MSESC 只管有 95% 的可信区间不含零,但可信区间的上界十分接近于零,其密度只蕴含零。正因为如此,MSESC 可能是一个比 SEX 和 PPED 更不相干的预测因子。
当初让咱们看看随机效应项 (sd(Intercept)
, sd(SEX)
和 sd(PPED)
)。图中的密度 sd(Intercept)
显著远离零,表明在模型中蕴含此随机截距项的相关性。的随机斜率方差SEX
为 0.382=0.140.382=0.14,随机斜率方差 PPED
为 0.262=0.070.262=0.07。这两种差别都不可漠视。然而,如果咱们看一下密度图,两者的置信区间的上限 sd(SEX)
和 sd(PPED)
十分靠近零,并且它们的密度也没有明确的从零离开。这表明可能不须要包含这两个随机斜率项。
咱们还能够绘制跨学校的随机效应项。
# 提取所有随机效应项的后验散布
RdEffct <- rf(aoFl)
#提取 "sd(Intecpt)" 的后验散布
r_ec <- dRf$CI\[, , 1\] %>%。abbe() %>
roton(var = "ID") %>%
uae(Vrible = "d(Inercpt)")
#提取 \`sd(SEX)\` 的后验散布。r_ <- dam$OD\[, , 2\] %>%>。astle() %>%。rnlmn(var = "ID") %>%
mae(Vaiae = "sd(SEX)")
#提取 \`sd(PPED)\` 的后验散布
r_ED <-atdSH, 3\] %>%>。ate() %>%。rotcnr = ID") %>%
ute(Vaiale = "sdPE)")
#绘图
r_ntct %>%
bdows(r_EX) %>%
biws(_PED) %>%
mat(Coro= ifese(Q2.5*Q97.5 > 0, "no", "yes") ) %>%
pot() +
goint() +
erbr(as(yin=Q2.5, ymx=Q97.5))
同样,咱们能够看到随机截距项 (sd(Intercept)
)的后验散布在不同学校之间有很大的差别。他们中的很多人也远离零。因而,咱们能够得出结论,蕴含随机截距是必要的。相比较而言,所有的后验散布的 sd(SEX)
,并 sd(PPED)
通过零,这表明有可能是没有必要在模型中蕴含两个随机斜率。
为了解释固定效应项,咱们能够计算指数系数估计值。
## 分类变量:SEX 和 PPED
exp(fif(BeoMiF)\[-4,-2\])
## 间断的变量:MSESC
exp(fxf(BelFl)\[4,-2\]*sd(ul(i_o))
咱们能够看到,SEX、PPED 和 MSESC 的影响与之前的模型后果十分类似。
参考
Sing, T., Sander, O., Beerenwinkel, N. & Lengauer, T. (2005)。_ROCR:可视化 R. 生物信息学中的分类器性能,21_ (20),第 7881 页。http://rocr.bioinf.mpi-sb.mpg.de
最受欢迎的见解
1.matlab 应用贝叶斯优化的深度学习
2.matlab 贝叶斯隐马尔可夫 hmm 模型实现
3.R 语言 Gibbs 抽样的贝叶斯简略线性回归仿真
4.R 语言中的 block Gibbs 吉布斯采样贝叶斯多元线性回归
5.R 语言中的 Stan 概率编程 MCMC 采样的贝叶斯模型
6.Python 用 PyMC3 实现贝叶斯线性回归模型
7.R 语言应用贝叶斯 层次模型进行空间数据分析
8.R 语言随机搜寻变量抉择 SSVS 预计贝叶斯向量自回归(BVAR)模型
9.matlab 贝叶斯隐马尔可夫 hmm 模型实现