使用lme4拟合逻辑回归的结尾为
Error in mer_finalize(ans) : Downdated X'X is not positive definite.
此错误的可能原因显然是等级不足。什么是等级不足,我该如何解决?
caret
有一个名为的函数findLinearCombos
,它将告诉您哪些是有问题的变量。
使用lme4拟合逻辑回归的结尾为
Error in mer_finalize(ans) : Downdated X'X is not positive definite.
此错误的可能原因显然是等级不足。什么是等级不足,我该如何解决?
caret
有一个名为的函数findLinearCombos
,它将告诉您哪些是有问题的变量。
Answers:
在这种情况下,排名不足表示数据中包含的信息不足,无法估计所需的模型。它起源于许多地方。我将在这里谈论在相当普遍的上下文中进行建模,而不是显式地进行逻辑回归,但是一切仍然适用于特定上下文。
不足可能源于太少的数据。通常,您不能唯一地估计少于n个数据点的n个参数。这并不意味着您只需要n点,就好像过程中有任何噪音一样,您也会得到较差的结果。您需要更多的数据来帮助算法选择一种解决方案,以最小的误差来表示所有数据。这就是为什么我们使用最小二乘工具。您需要多少数据?在过去的生活中,总是有人问我这个问题,答案比你想的要多,甚至要多。:)
有时,您可能拥有比所需更多的数据,但是某些(太多)点是重复数据。从某种意义上说,复制是好的,它有助于减少噪音,但无助于提高数字等级。因此,假设您只有两个数据点。您无法通过这些点来估计唯一的二次模型。每点重复一百万次,仍然只能通过一对有效点,而使您无法容纳超过一条直线的直线。本质上,复制不会添加信息内容。它所做的只是减少您已经掌握信息的位置的噪音。
有时,您在错误的位置获得了信息。例如,如果所有点都是二维直线,则不能拟合二维二次模型。也就是说,假设您的点仅沿平面中的x = y线分散,并且您希望为曲面z(x,y)拟合模型。即使有成千上万的点(甚至没有重复点),您也将拥有足够的信息来智能地估算比恒定模型更多的信息。令人惊讶的是,这是我在采样数据中看到的常见问题。用户想知道为什么他们不能建立一个好的模型。问题已内置到他们采样的数据中。
有时,它只是模型的选择。可以将其视为“没有足够的数据”,但是从另一端看。您希望估算一个复杂的模型,但提供的数据不足。
在上述所有情况下,答案都是要获取更多数据,这些数据是从可以提供有关您当前缺少的流程的信息的地方进行智能采样的。实验设计是一个很好的起点。
但是,即使是良好的数据有时也不足够,至少在数字上是不足够的。(为什么不好的事情会发生在好的数据上?)这里的问题可能与模型有关。它可能只不过是单位选择不佳而已。它可能源于为解决该问题而进行的计算机编程。(U!从哪里开始?)
首先,让我们谈谈单位和缩放比例。假设我尝试解决一个变量比另一个大许多个数量级的问题。例如,假设我遇到一个涉及我的身高和鞋子尺寸的问题。我将以纳米为单位测量身高。因此,我的身高约为17.8亿(1.78e9)纳米。当然,我会选择以千帕秒为单位来衡量我的鞋子尺码,所以9.14e-21千克帕秒。在进行回归建模时,线性回归全都与线性代数有关,线性代数涉及变量的线性组合。这里的问题是这些数字相差很多个数量级(甚至没有相同的单位)。当计算机程序尝试对相差很大数量级的数字进行加减运算时,数学将失败。数,
诀窍通常是使用通用单位,但是在某些问题上,甚至当变量变化太多数量级时,这也是一个问题。更重要的是将数字缩放到相似的大小。
接下来,您可能会看到数字较大且这些数字变化较小的问题。因此,假设您尝试使用输入都位于区间[1,2]中的数据构建适度高阶多项式模型。在双精度算术中工作时,平方,平方等数量为1或2的数字不会造成任何问题。或者,将1e12添加到每个数字。从理论上讲,数学将允许这样做。它所做的只是移动我们在x轴上构建的任何多项式模型。它将具有完全相同的形状,但将向右平移1e12。实际上,由于秩不足问题,线性代数将惨败。除了转换数据外,您什么也没做,但是突然之间您开始看到弹出奇异矩阵。
通常,所做的评论将建议“集中并扩展数据”。实际上,这意味着对数据进行移位和缩放,以便使其均值接近零且标准偏差约为1。这将大大改善大多数多项式模型的条件,从而减少秩不足问题。
存在等级不足的其他原因。在某些情况下,它直接内置在模型中。例如,假设我提供了函数的派生类,是否可以唯一地推断函数本身?当然不是,因为积分涉及积分常数,所以通常通过某个时候知道函数的值来推断未知参数。实际上,这有时也会在估计问题中出现,其中系统的奇异性是根据所研究系统的基本性质得出的。
在线性系统中,我肯定会排除等级不足的许多原因,而现在我已经吵了很久。希望我能用简单的术语来解释我所介绍的内容,以及缓解问题的方法。
有关矩阵等级的定义,您可以参考线性代数上的任何优秀教科书,或查看Wikipedia页面。
甲矩阵被认为是满秩如果,及其列不是彼此的线性组合。在这种情况下,矩阵是正定的,这意味着它具有逆。
如果等级不高,则其中的一列将由其他列完全解释,因为它是其他列的线性组合。一个简单的示例是重复列时。如果您具有0-1变量并且一列仅包含0或仅包含1,则也会发生这种情况。在这种情况下,矩阵的秩小于并且没有逆。
由于许多回归问题(包括逻辑回归)的解决方案都涉及计算中间,因此无法估计模型的参数。出于好奇,您可以在此处检查该术语如何包含在多元线性回归公式中。
绝对排名不足就是这样。但是有时问题会在矩阵几乎“不完全”排列时出现,如@woodchips详尽介绍的那样。这个问题通常被称为多重共线性。这个问题相当普遍,您可以在这里和那里的相关文章中找到有关如何处理它的更多信息。
从建模的角度来看,user974的答案是极好的,从数学的角度来看,gui11aume的答案是极好的。我想严格从混合建模的角度来完善前一个答案:特别是广义混合建模(GLMM)的角度。如您所见,您引用了R 包mer_finalize
,该lme4
包在出色的包中。您还说您正在拟合逻辑回归模型。
这种类型的数值算法会引起很多问题。正如user974提到的,固定效果的模型矩阵的矩阵结构问题当然值得考虑。但这很容易评估,只需在模型中计算model.matrix
您formula=
和data=
参数的和,然后使用det
函数确定其行列式即可。但是,随机效应使解释,数值估计例程和对固定效应的推断(在“常规”回归模型中通常称为回归系数)大大复杂化。
假设在最简单的情况下,您仅拟合了随机截距模型。然后,您基本上考虑的是,成千上万个无法测量的异质性源在集群内的重复测量中保持不变。您估计了一个“大”截距,但是通过假设特定于群集的截距具有一定的均值正态分布来解决异构性问题。对截距进行迭代估计,并用于更新模型效果,直到实现收敛(对数似然(或其对数)最大化)。混合模型非常容易设想,但是在数学上,可能性非常复杂,并且容易出现奇点,局部极小值和边界点(奇数比= 0或无穷大)的问题。混合模型不像规范GLM那样具有二次似然性。
不幸的是,Venerables和Ripley并未为诊断像您这样的融合失败而投入大量资金。实际上甚至无法推测导致这种消息的无数错误。然后,考虑以下我使用的诊断类型:
或者,您可以考虑一些不同的建模方法: