R语言如何解决线性混合模型中畸形拟合(Singular fit)的问题

简介: R语言如何解决线性混合模型中畸形拟合(Singular fit)的问题

假设我们有一个模型



mod <- Y ~ X*Condition + (X*Condition|subject)


#Y = logit变量
#X =连续变量
#条件=值A和B,伪编码;重复设计
#因此所有参与者都要同时符合这两个条件
#主题=不同主题的随机效果


summary(model)
Random effects:
Groups  Name             Variance Std.Dev. Corr
subject (Intercept)      0.85052  0.9222
X                0.08427  0.2903   -1.00
ConditionB       0.54367  0.7373   -0.37  0.37
X:ConditionB     0.14812  0.3849    0.26 -0.26 -0.56
Number of obs: 39401, groups:  subject, 219


Fixed effects:
Estimate Std. Error z value Pr(>|z|)
(Intercept)       2.49686    0.06909   36.14  < 2e-16 ***
X                -1.03854    0.03812  -27.24  < 2e-16 ***
ConditionB       -0.19707    0.06382   -3.09  0.00202 **
X:ConditionB      0.22809    0.05356    4.26 2.06e-05 ***

在这里,我们观察到奇异拟合,因为截距和x随机效应之间的相关性是-1。处理该模型的一种方法是删除高阶随机效应(例如X:ConditionB),并查看在测试奇异性时是否有区别另一种是使用贝叶斯方法,例如blme软件包以避免奇异性。

 

什么是首选方法,为什么?

我之所以这样问,是因为使用第一个或第二个会导致不同的结果-在第一种情况下,我将删除X:ConditionB随机效应,并且无法估计X和X:ConditionB随机效应之间的相关性。另一方面,使用blme允许我保留X:ConditionB并估计给定的相关性。

通常有以下几种解决办法:

 

1.处理此模型的一种方法是删除高阶随机效应(Variance ,并查看在测试奇异性时是否有所不同。

当获得奇异拟合时,这通常表明模型过度拟合-也就是说,随机效应结构太复杂而无法由数据支持,这自然导致建议删除随机效应中最复杂的部分结构(通常是随机斜率)。这种方法的好处在于,它生成了一个更加简约的模型,但并没有过度拟合

 

2.另一种是使用贝叶斯方法,例如blme软件包以避免奇异性。

如果希望使用最大随机效应结构来拟合模型,并且lme4获得奇异拟合,那么在贝叶斯框架中拟合相同的模型可能很好地通过检查迹线图以及各种参数的好坏来告知lme4为什么会出现问题估计收敛。采用贝叶斯方法的优点是,这样做可能会发现原始模型的问题。(数据不支持最大随机效应结构的原因),或者可能揭示lme4无法拟合模型的原因。

简而言之,以上两种方法都有其优点。

 

3.与其他线性模型一样,固定效应中的共线性可能导致奇异拟合。

那将需要通过删除条款来修改模型。但是,在lmer中,当估计随机效应方差非常接近零并且(非常宽松地)数据不足以拖动时,也可以在非常简单的模型中触发该警告(或“边界(奇异)拟合”警告)。估计远离零起始值。

两种方法的正式答案大致相似。删除估计为零的字词。但是有时候,可以忽略不计的方差是合理的,但是希望将其保留在模型中。例如,因为正在故意寻找可能存在较小差异的区间,或者可能正在进行多个类似实验,并且希望始终提取所有差异,可以通过lmerControl禁止显示这些警告,可以将其设置为不使用相关测试。例如,可以包括


control=glmerControl(check.conv.singular = .makeCC(action = "ignore",  tol = 1e-4))

这保留了默认公差(makeCC需要),但是抑制了奇异拟合测试。(默认值为action =“ warning”,它将运行测试并发出警告)。

 

4.尝试重新调整预测变量x,例如,



lmerfit <- glmer(y~ I(x/10) +


                  (1 + I(x/10) | s), data = d)

并且还可以使用nlme :: lme(),即

 lmefit <- lme(y~ x, data = d,


               random = ~ x| s)
 

要么

 
 lmefit <- lme(y~ I(x/10), data = d,


               random = ~ I(x/10) | s)

并且还可能将优化算法更改为lme()中的最优化;

或者



library(GLMMadaptive)






model4 <- mixed_model(fixed = y ~ x, random = ~ 1 | group,


               data = data,


               family = binomial(link="logit"))


library(glmmTMB)

model4 <- glmmTMB(y ~ x + (1 | group),


                data = data,


                family = binomial(link = "logit"))
相关文章
【R语言实战】——带有高斯新息的金融时序的GARCH模型拟合预测及VAR/ES风险度量
【R语言实战】——带有高斯新息的金融时序的GARCH模型拟合预测及VAR/ES风险度量
【R语言实战】——带有新息为标准学生t分布的金融时序的GARCH模型拟合预测
【R语言实战】——带有新息为标准学生t分布的金融时序的GARCH模型拟合预测
|
数据可视化
【R语言实战】——金融时序分布拟合
【R语言实战】——金融时序分布拟合
|
机器学习/深度学习 算法 前端开发
R语言基础机器学习模型:深入探索决策树与随机森林
【9月更文挑战第2天】决策树和随机森林作为R语言中基础且强大的机器学习模型,各有其独特的优势和适用范围。了解并熟练掌握这两种模型,对于数据科学家和机器学习爱好者来说,无疑是一个重要的里程碑。希望本文能够帮助您更好地理解这两种模型,并在实际项目中灵活应用。
|
资源调度 数据挖掘
R语言回归分析:线性回归模型的构建与评估
【8月更文挑战第31天】线性回归模型是统计分析中一种重要且实用的工具,能够帮助我们理解和预测自变量与因变量之间的线性关系。在R语言中,我们可以轻松地构建和评估线性回归模型,从而对数据背后的关系进行深入的探索和分析。
|
机器学习/深度学习 数据可视化
R语言Stan贝叶斯回归置信区间后验分布可视化模型检验|附数据代码
R语言Stan贝叶斯回归置信区间后验分布可视化模型检验|附数据代码
|
数据采集 机器学习/深度学习 数据可视化
R语言从数据到决策:R语言在商业分析中的实践
【9月更文挑战第1天】R语言在商业分析中的应用广泛而深入,从数据收集、预处理、分析到预测模型构建和决策支持,R语言都提供了强大的工具和功能。通过学习和掌握R语言在商业分析中的实践应用,我们可以更好地利用数据驱动企业决策,提升企业的竞争力和盈利能力。未来,随着大数据和人工智能技术的不断发展,R语言在商业分析领域的应用将更加广泛和深入,为企业带来更多的机遇和挑战。
|
6月前
|
数据采集 机器学习/深度学习 数据可视化
探索大数据分析的无限可能:R语言的应用与实践
探索大数据分析的无限可能:R语言的应用与实践
239 9
|
数据可视化 数据挖掘 API
【R语言实战】聚类分析及可视化
【R语言实战】聚类分析及可视化