Mplus中出现‘NO CONVERGENCE. NUMBER OF ITERATIONS EXCEEDED’

          用Mplus分析数据的时候,在输出的output中出现‘NO CONVERGENCE.  NUMBER OF ITERATIONS EXCEEDED.‘的警告

    今天刚好翻到凸优化中讲解‘范数逼近中野值或大误差的灵敏性’这个知识点,略微扩展实践一下。


     一、关于野值

   野值,就是平时在统计中说的离群点或者异常值。

注:图中的id为4个的这个点明显的偏离其他样本


 或者因变量f(x)与 自变量x 回归散点图:


注:图上的两个点,一个偏离在左上角,一个偏离在右下,虚线--没有删除异常点的拟合直线,由于异常点的存在,为了照顾到这两个异常点,拟合直线发生偏移,实线--去掉异常点以后的拟合直线,接近或者穿过了图中的样本点。直观的来讲,显然不能为了照顾到这两个少数派,使拟合线发生这般倾斜。


二、当存在异常值或者大误差时有两种思路:

1 .剔除掉异常点

2 在估计时降低他们的权(weight),也就是给一个限定,避免被异常点或大误差带偏。

先花一点时间看看在优化问题中的做法--范数逼近,惩罚异常点

通过罚函数逼近来实现对异常值造成的误差大进行惩罚:

比如:

(1)设定阈值M,当误差大于阈值时,强逼误差等于M平方


对于任意小于M(M为常数)的残差,这样的罚函数与最小二乘吻合,但,对于大于M的残差,给定一个固定的权值。

优化问题变成:


针对这幅图做出解释:

比如,我们有这样的问题   

 minimize  ||Ax-b||  ,r=Ax-b  

图上的横坐标就是r,不同的样本测量误差不同,r值不同,A为已知系数矩阵,X为所要求的参数(回归系数,相关系数等)

b就是真实的测量值。minimize(最小化)是的二者之间的距离。

纵坐标就是,取不同范数衡量的一个函数。通用公式:


比如,最小二乘取的是二L2范数,即



也就是说,上图是一个关于样本个体测量误差的分布,只不过对其衡量可以用不同的范数

常用的就是取绝对值的L1范数和取平方的L2范数,优化的问题是对总误差优化。

      其实也是一幅残差Q-Q图这个知识点这里也有讲到,残差应该以0为中心,上下波动,均匀分布,若残差的QQ图中的点的大致趋势明显地不在一条直线上,则有理由怀疑对误差的正态性假设的合理性。

上图的采用L1范数逼近的目的就是让远离0的残差点的绝对值大于1时候,强制取1。

如果是采用上图的范数逼近,一个缺点是,此时的目标函数非凸,很难求解这个组合后的优化问题。

(2)另一种优化是是鲁棒最小二乘 -- Huber罚函数:


当残差小于M时,与最小二乘一致,当残差大于M时,残差线性增长,于是求解的问题就接近一个凸函数优化。(关于这个知识点这里不表)。


     下图取M=1,也就是限定当残差大于1时,使用 2|u| - 1 这个分段(阶跃)函数,约束了个体分布残差呈线性变化,避免了误差二次方分布,比如理论模型的值和实际的值为2,也就是单个样本的误差为3,采用最小二乘的平方度量的话,则发生9个变化。最后造成无法正常估计出结果的现象。SEM的拟合其实是优化实际数据矩阵f(x)与理论矩阵g(x),使得二者最小,于是模型拟合的其实是这样一个问题,即求解



使得loss function最小,也就是最小化这个loss function值,实际数据拟合了理论模型,即所谓的优化问题。

具体SEM拟合公式是否如图所说,大致道理如此,没有进一步求证。凸优化是其中对凸函数进行求解的优化,还需要说明的是,

在数据正态的无偏估计中,普通最小二乘的解与最大似然估计的解等价,见Gauss-Markov定理。


对于异常点,运用此鲁棒( robust,稳健)最小二乘逼近就可以得到更好的结果。在求解y=Ax过程中,y=f(x)是一个很好的逼近,为了使f(x)~b,同时需要x较小。大的 x 会使得A上的变动引起Ax 很大的波动,需要避免。

      上面就讲解了存在异常点时选择鲁棒性方法拟合。是在估算过程中对偏离较大的值(残差)给予一个约束,也就是说属于嵌入式,更加自动化,但是需要选择正确的计算方法,异常点的难题在模型拟合的估算过程中得到解决。略微解释下什么叫约束,本来残差可以取0-100之间的任意一个数,但是给它一个约束限定,只让它在0-1之间搜索取值,显然在很多时候更加合理。

 在最小二乘中相比OLS,更先进的总体最小二乘法(Total least squares,TLS),总体最小二乘法认为回归矩阵存在干扰,在计算最小二乘解时考虑了这个因素,而在一般最小二乘法时没有考虑该因素的影响,TLS得到效果也比较好。

三、剔除异常点和警惕大的残差项



下面看看,提前对异常点做出诊断,剔除掉异常值的‘半自动’做法。

 具体看一下Mplus中,如果存在异常点却直接使用最大似然求解会出现的什么问题。

原始数据和修改过后的数据对比:



于是,原数据取值空间在-4和4之间,修改了四个比较大的数以后,原来应用ML估计没有出现异常的输出,但是由于有了这些异常点的存在,使得软件估算输出以下内容:



出现‘NO CONVERGENCE.  NUMBER OF ITERATIONS EXCEEDED’ 同时伴随的问题 “S.E. cannot be computed”

软件默认的迭代次数时10000次,绝大多数时候都是够用的,不用特意去修改迭代默认的最大值。

正常的语句和数据见Mplus example中的5.1,用Mplus软件的同学,可以在软件中调用测试。

       验证了上文所说,异常点或大的误差对于估计的影响。上文数据中加入了4个异常点后,变量的误差是有明显增大,造成误差的增大有其他的原因,异常点只是其一,本文讲的是由异常点引起大的误差。


同时,还有另外的办法(trick)让这份异常的数据最后成功的估算出结果:

如下,只是在analysis中加上一句CONVERGENCE = 0.01; 

修改了默认的收敛条件,放宽了迭代收敛的限制,在没有提示NO CONVERGENCE的情况下计算出来。



      放宽了收敛条件,是会使得迭代次数减少,不必理论矩阵和实际数据矩阵迭代减小到0.0001,当二者的距离为0.01的时候就收敛。这种做法在一定程度上缓解了由于严格的更多次迭代产生误差的极速增大,使得最终使用完10000次的软件默认下限。

依然没有触发在0.0001精度的迭代停止条件。当然放宽收敛条件的做法,得出的结果是值得考量的,只是一个大概正确,在更加严格的拟合数据时需要谨慎。


四、总结

        在Mplus中不使用更加稳健(鲁棒)的估计方法对异常值或迭代中出现大的误差进行惩罚的时候。

我们有两种途径可以克服‘NO CONVERGENCE’不收敛的问题:

1,对数据进行描述的时候,发现异常点,对其删除

2,放宽迭代收敛的条件,比如把原始默认的0.0001放宽至0.01

3,经过平时实践发现,项目相关度非常低或者为负(项目的反向计分是否调正)或者相关系数非常高

(协方差,或者相关矩阵存在0,或者非常大的系数可能也会出现无法拟合)

4, 对数据做标准化处理,把所有的变量缩放到0-1之间

在线形回归建模时候,出现这样的问题应该选择ridge regression 。

(Mplus中暂时有这两种可行方法,再发现解决方法再更)

      同时,还有一个值得辩证看待的问题,我们说ML方法是一种稳健的估计方法,其实也是相对来讲。当存在严重异常点时,‘稳健’的ML得出的结果似乎也是值得怀疑(也因为异常值的存在使的样本偏离了正态分布,也一再的告诫我们需要对数据的分布有一个大致了解和检验以及数据分析之前的预处理,而非一股脑的放入模型中)。

    当检测出存在严重的异常点或者残差很大时,不建议放宽收敛条件。正确的做法应该是删除异常点,其实也解释了我们为何要在论文中报告S.E.,作为一个对变量变异性的描述,当标准差很大的时候,说明这批数据差异大,估计的值有可能存在问题。

贴一篇,多元线形方程组使用极大似然估算过程中收敛的论文截图。



五、讨论

        剔除异常值的做法缺点是无法利用这部分数据,尤其是当数据比较少的时候,同时,可能这部分异常值有其存在的合理性,往往这种剔除的做法显得武断;在文章开头讲到的罚函数(正则化)做法就更加客观和充分的利用了这批数据本身的信息,二者方法选择的共同点是,数据分析当然要人为的提前做出假设和干预,并没有完全客观和自由的东西存在。

在学习凸优化过程中关于范数逼近对野值的惩罚(不收敛的原因另有其他),夹带SEM估计及其软件说明,暂时总结如上,可能有些细节并不够严谨和正确。


六、附录

        有几个同义词在不同的领域称谓不同,常不加区别的交替使用,简单罗列如下:

野值  -- 异常点

鲁棒(robust) -- 稳健

罚函数 --正则项

权(weight) --  系数

评论 3
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值