在 GLM 中指定协方差结构有什么好处(而不是将协方差矩阵中的所有非对角项都视为零)?除了反映人们对数据的了解之外,它是否
- 提高合身度?
- 提高对保留数据的预测准确性?
- 允许我们估计协方差的程度?
施加协方差结构的成本是多少?可以
- 为估计算法增加计算复杂性?
- 增加估计参数的数量,也增加AIC、BIC、DIC?
是否有可能根据经验确定正确的协方差结构,或者这取决于您对数据生成过程的了解?
我没有提到的任何成本/收益?
在 GLM 中指定协方差结构有什么好处(而不是将协方差矩阵中的所有非对角项都视为零)?除了反映人们对数据的了解之外,它是否
施加协方差结构的成本是多少?可以
是否有可能根据经验确定正确的协方差结构,或者这取决于您对数据生成过程的了解?
我没有提到的任何成本/收益?
基本上,您必须在 GLM 中指定协方差结构。如果通过“假设没有协方差”,您的意思是“协方差矩阵中的所有非对角线条目都为零”,那么您所做的就是假设一个非常具体的协方差结构。(您可以更具体,例如,假设所有方差都相等。)
这实际上是“我不赞同任何哲学;我是一个实用主义者”的变体。- “你刚刚描述了你所认同的哲学。”
因此,我想说考虑协方差结构的好处是有机会使用更适合您的数据的模型。正如您应该为观察的期望值(或平均值)包括已知的函数关系一样,您应该考虑协方差中已知的任何结构。
当然,“缺点”是您需要真正考虑所有这些。使用软件的默认设置要容易得多。但这有点像总是以一档驾驶,因为您的汽车在您购买时处于一档,并且了解换档需要付出努力。不建议。
这是另一个不完整的答案,甚至与 GLM 没有直接关系……在我对结构方程建模 (SEM) 非常有限的经验中,我提出了一些想法,希望可以为讨论增添一些东西。请始终牢记,我是从 SEM 的(有限)经验而不是 GLM本身说的,而且我完全不知道这种区别是否以及在何处变得重要。我更像是一个统计用户而不是统计学家,所以我也不确定这些想法是否适用于所有甚至大多数数据;我只发现它们适用于我自己的大部分。
首先,我要回应@StephanKolassa 对建模你已经知道的东西的重要性的强调。你承认这是一个旁白,但我认为你所问的好处是建模你所知道的东西的好处。因此,它们有意义地反映了您的结果模型拥有有关您添加的协方差结构的信息。
在 SEM中,我发现(通过有限的经验,而不是通过理论研究):
好处
如果协方差远强于其标准误差(即,如果对称路径显着),则对协方差结构建模会提高拟合优度 (GoF)。这意味着您通常不会通过对接近零的相关性进行建模来改进 GoF,并且多重共线性可能会导致 GoF 出现问题,因为它会夸大标准误差。
尚未尝试保留数据进行预测,但我的直觉是,将模型中的协方差固定为零类似于通过组合一组单独的单 IV 线性回归方程来预测 DV。与这种方法不同,多元回归在生成方程模型以预测 DV 时考虑了 IV 中的协方差。通过将直接影响与完全发生在所包含的 IV 集中的间接影响分开,这无疑提高了可解释性。老实说,我不确定这是否一定会改善对 DV 的预测。作为一个统计用户而不是统计学家,我将以下模拟测试函数放在一起给出一个不完整的答案(显然,“是的,当模型包含 IV 协方差时,预测准确性会提高”)在这个有希望的类似案例中......
simtestit=function(Sample.Size=100,Iterations=1000,IV.r=.3,DV.x.r=.4,DV.z.r=.4) {
require(psych); output=matrix(NA,nrow=Iterations,ncol=6); for(i in 1:Iterations) {
x=rnorm(Sample.Size); z=rnorm(Sample.Size)+x*IV.r
y=rnorm(Sample.Size)+x*DV.x.r+z*DV.z.r
y.predicted=x*lm(y~x+z)$coefficients[2]+z*lm(y~x+z)$coefficients[3]
bizarro.y.predicted=x*lm(y~x)$coefficients[2]+z*lm(y~z)$coefficients[2]
output[i,]=c(cor(y.predicted,y)^2,cor(bizarro.y.predicted,y)^2,
cor(y.predicted,y)^2>cor(bizarro.y.predicted,y)^2,cor(x,z),cor(x,y),cor(y,z))}
list(output=output,percent.of.predictions.improved=100*sum(output[,3])/Iterations,
mean.improvement=fisherz2r(mean(fisherz(output[,1])-fisherz(output[,2]))))}
# Wrapping the function in str( ) gives you the gist without filling your whole screen
str(simtestit())
此函数生成随机样本 ( Iterations
,= Sample.Size
) 来自三个正态分布的变量:z
x
随机噪声,和y
x
z
随机噪声。用户可以通过覆盖最后三个参数的默认值来影响它们的相关性,但随机噪声也会影响样本相关性,因此这模拟了采样误差影响真实相关性参数估计的方式。y
该函数基于以下的回归系数x
计算预测值z
:
() 多元回归 ( y.predicted
) 和...
() 两个独立的双变量线性回归 ( bizarro.y.predicted
)。
该output
矩阵包含Iterations
行和六列:的和, 真假检验, 和二元x
s 代表, y
, &的三个独特组合z
。此函数生成一个三元素列表,其中第一个是output
矩阵。默认情况下,这是 1,000 行长,因此我建议simtestit()
在str( )
函数中包装或从函数本身的列表中删除此元素,除非您出于某种原因对单个样本统计信息感兴趣。迭代的百分比,其中通过使用() 多元回归来解释 IV 的协方差,以及这些改进在迭代中的平均值(在,通过psych
包使用Fisher变换)。
该函数默认为对最大基本多元回归进行相当典型情况的简短模拟测试。它允许用户更改单个样本大小和可变相关性,以适应研究和关系强度的先前理论。我没有测试所有可能的设置,但是每次我运行这个函数时,100% 的迭代都会产生更高的值与多元回归。平均改善当 IV 的协方差(可以通过输入IV.r
) 更大。由于您可能比我更熟悉您的 GLM 函数(这根本不是),您可能会更改此函数或使用基本思想来比较 GLM 预测,而无需太多麻烦。假设结果会(或确实)以相同的方式出现,看来您的第二个问题的基本答案可能是肯定的,但多少取决于 IV 的共变强度。保留数据和用于拟合模型的数据之间的抽样误差差异可能会压倒后者数据集中预测准确性的提高,因为同样,除非 IV 相关性很强(至少,在只有两个 IV 的最大基本情况)。
为模型中的 IV 之间的协方差指定自由路径意味着要求模型拟合函数估计该路径的系数,该系数表示 IV 之间的协方差程度。如果您的 GLM 函数允许您指定一个模型,其中 IV 之间的协方差是自由估计的,而不是固定为零,那么您的问题是一个希望简单的问题,即弄清楚如何执行此操作以及如何让您的函数输出那个估计。如果您的函数默认估计 IV 协方差,则您的问题会进一步简化为仅后者(与 的情况一样lm( )
)。
费用
是的,自由估计 IV 之间的协方差意味着模型拟合算法必须做一些工作来估计该路径的系数。不指定模型中的路径通常意味着将系数固定为零,这意味着模型拟合算法不需要估计系数。估计额外的协方差参数意味着整个模型需要更多的时间来拟合。在已经需要很长时间来估计的模型中,额外的时间可能很长,尤其是在您有很多 IV 的情况下。
是的,自由估计的协方差结构意味着参数估计。总体具有协方差参数,因此如果您在估计总体协方差,那么您就是在估计参数。但是,如果您的模型拟合得更好,因为您选择估计非平凡相关性而不是将其固定为零,那么您可能会期望 Akaike 和贝叶斯信息标准得到改进,就像其他包含 GoF 的标准一样。我不熟悉偏差信息标准(您指的是DIC,对吗?),但从其 Wikipedia 页面来看,它似乎也包含了 GoF 和对模型复杂性的惩罚。
因此,GoF 应该只需要按比例提高,而不是模型复杂性增加来提高 DIC。如果总体上没有发生这种情况,那么当您估计更多的 IV 协方差时,诸如此类惩罚模型复杂性的标准将会恶化。这可能是一个问题,例如,您的 IV 不相关,但协方差结构是自由估计的,因为您认为 IV 可能相关,或者因为这是您的函数的默认设置。如果您有先前的理论理由假设相关性为零,并且您不希望您的模型测试此假设,则在这种情况下您可能有理由将路径固定为零。如果你之前的理论大致正确,
不知道您正在使用哪个函数,但我再次确定我不熟悉它,所以我确信这个答案可以改进,尤其是我对第二个好处问题的回答(一方面,一个数学我通过关于多元回归的模拟回答的证据可能在某处可用)。我什至不熟悉 GLM(假设你的意思是generalized,而不是一般线性建模,正如标签所暗示的那样),所以如果与 SEM 的区别使我对你的问题的回答无效,我希望有人能评论或编辑这个答案一点也不。
尽管如此,我们似乎已经等了十个月让大师们发声,所以如果这不能让他们这样做,我想它只能自己做。让我知道您是否有一个特定的 GLM 功能,但您希望我在 R 中处理这些功能。如果您可以在 R 中指定感兴趣的 GLM 函数,我也许能够弄清楚如何更直接地为您的应用程序回答 #3。我也不是模拟测试专家,但我认为您的其他四个问题可以进行模拟测试(更直接地)也是。