拓端tecdat|R语言如何解决线性混合模型中畸形拟合(Singular fit)的问题
原文链接:http://tecdat.cn/?p=14506
原文出处:拓端数据部落公众号
相关视频:线性混合效应模型(LMM,Linear Mixed Models)和R语言实现
线性混合效应模型(LMM,Linear Mixed Models)和R语言实现案例
时长12:13
假设我们有一个模型
mod <- Y ~ X*Condition + (X*Condition|subject)# Y = logit variable
# X = continuous variable
# Condition = values A and B, dummy coded; the design is repeated
# so all participants go through both Conditions
# subject = random effects for different subjects 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, 219Fixed 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"))
查看原文:如何解决线性混合模型中畸形拟合(Singular fit)的问题 | 拓端数据科技 / Welcome to tecdat
参考文献:
1.基于R语言的lmer混合线性回归模型
2.R语言用Rshiny探索lme4广义线性混合模型(GLMM)和线性混合模型(LMM)
3.R语言线性混合效应模型实战案例
4.R语言线性混合效应模型实战案例2
5.R语言线性混合效应模型实战案例
6.线性混合效应模型Linear Mixed-Effects Models的部分折叠Gibbs采样
7.R语言LME4混合效应模型研究教师的受欢迎程度
8.R语言中基于混合数据抽样(MIDAS)回归的HAR-RV模型预测GDP增长
9.使用SAS,Stata,HLM,R,SPSS和Mplus的分层线性模型HLM
拓端tecdat|R语言如何解决线性混合模型中畸形拟合(Singular fit)的问题相关推荐
- 拓端tecdat|R语言逻辑回归(Logistic回归)模型分类预测病人冠心病风险
最近我们被客户要求撰写关于冠心病风险的研究报告,包括一些图形和统计输出. 相关视频:R语言逻辑回归(Logistic回归)模型分类预测病人冠心病风险 逻辑回归Logistic模型原理和R语言分类预测冠 ...
- 拓端tecdat|R语言向量误差修正模型 (VECMs)分析长期利率和通胀率影响关系
最近我们被客户要求撰写关于向量误差修正模型的研究报告,包括一些图形和统计输出. 向量自回归模型估计的先决条件之一是被分析的时间序列是平稳的.但是,经济理论认为,经济变量之间在水平上存在着均衡关系,可以 ...
- 拓端tecdat|R语言用LOESS(局部加权回归)季节趋势分解(STL)进行时间序列异常检测
最近我们被客户要求撰写关于LOESS(局部加权回归)的研究报告,包括一些图形和统计输出. 这篇文章描述了一种对涉及季节性和趋势成分的时间序列的中点进行建模的方法.我们将对一种叫做STL的算法进行研究, ...
- 拓端tecdat|R语言线性回归和时间序列分析北京房价影响因素可视化案例
最近我们被客户要求撰写关于北京房价影响因素的研究报告,包括一些图形和统计输出. 目的 房价有关的数据可能反映了中国近年来的变化: 人们得到更多的资源(薪水),期望有更好的房子 人口众多 独生子女政策: ...
- R语言螺旋线型线性不可分数据xgboost分类:使用xgboost模型来解决螺旋数据的分类问题、可视化模型预测的结果、添加超平面区域渲染并与原始数据标签进行对比分析
R语言螺旋线型线性不可分数据xgboost分类:使用xgboost模型来解决螺旋数据的分类问题.可视化模型预测的结果.添加超平面区域渲染并与原始数据标签进行对比分析 目录
- R语言与多元线性回归方程及各种检验
R语言与多元线性回归方程及各种检验 文章目录 R语言与多元线性回归方程及各种检验 一.模型建立 二.多重共线性 (1)产生的背景: (2)多重共线性的检验 1.简单相关系数法: 2.方差膨胀因子(vi ...
- 拓端tecdat荣获掘金社区入驻新人奖
2021年7月,由掘金发起了"入驻成长礼"颁奖活动.本次活动邀请到知名开发者.服务机构代表等业界人士. 据了解,掘金社区"新入驻创作者礼"主要对已经积累了一定历 ...
- 拓端tecdat荣获2022年度51CTO博主之星
相信技术,传递价值,这是51CTO每一个技术创作者的动力与信念,2022 年度,拓端tecdat 作为新锐的数据分析咨询公司,在51CTO平台上,不断的输出优质的技术文章,分享前沿创新技术,输出最佳生 ...
- R语言计算资本资产定价模型(CAPM)中的Beta值和可视化
原文链接:http://tecdat.cn/?p=22588 今天我们将计算投资组合收益的CAPM贝塔.这需要拟合一个线性模型,得到可视化,从资产收益的角度考虑我们的结果的意义. 简单的背景介绍,资本 ...
- R语言str_trim函数去除字符串中头部和尾部的空格
R语言str_trim函数去除字符串中头部和尾部的空格 目录 R语言str_trim函数去除字符串中头部和尾部的空格 #导入包和库 #仿
最新文章
- 用于自动泊车的鸟瞰图的边缘线的语义SLAM系统
- hdu 2795 段树--点更新
- error: RPC failed; curl 18 transfer closed with outstanding read
- python statsmodel 回归结果提取
- 解决npm下载包失败的问题
- request获取数据3种方法
- ASP.NET设置ie打印两法 (精)(转)
- 一个Demo学会用Android兼容包新控件
- TensorFlow实战3——TensorFlow实现CNN
- python输入输出有问题_Python中的输入与输出
- 为什么大部分人会碌碌无为?
- 文本居中对齐(CSS、HTML)
- Jmeter中获取返回结果中的值
- oracle 分组随机抽取,Oracle 中实现随机抽取数据
- js设计模式的讲解与应用 - 【单例模式】
- Visual Studio Installer 无法下载安装,长时间停留在下载界面。vs_community__1502218517.1623916988.exe
- 村上春树 --《当我谈跑步时,我谈些什么》句子摘录​
- 第39级台阶(递归+dp)
- 2020.9.8:Spring cloud :install时报错
- java每日一练——第六天:输入3个整数,输出它们的1次幂、2次幂和3次幂