如何测试协方差矩阵是否在两个时间点发生了变化?

机器算法验证 假设检验 重复测量 多元分析 协方差矩阵
2022-03-22 03:08:23

我的任务是测试 6 个变量的协方差矩阵是否发生变化。6 个变量的值从同一受试者测量两次(测量间隔为 3 年)。

我怎样才能做到这一点?我一直在使用 SAS 完成我的大部分工作。

3个回答

假设您的分布是多元正态分布(因为协方差矩阵的检验倾向于假设,无论如何),您的零假设是这两个总体仅因移位而不同。您可以使用 Kolmogorov-Smirnov 检验对减去均值的两组数据进行检验。

Rencher (2002)(第 7.3.2 节)提供了用于比较两个矩阵(Box M 检验)的似然比检验统计量,如下所示:

M=|S1|ν1/2|S2|ν2/2/|Sp|(ν1+ν2)/2

其中是两个样本中的样本协方差矩阵,是池化协方差矩阵,是自由度(样本大小减 1)。渐近地,服从分布,自由度为是矩阵的大小。Rencher (2002) 还给出了检验的 Bartlett 校正版本和近似值。但是,这是一个双样本测试,而不是重复测量测试,因此可能有些保守。S1S2Spν1ν22logMχ2p(p+1)/2pF

您可以使用结构方程建模软件。这是该过程在 Amos 中如何工作的草图:

  • 添加时间 1 的所有变量(X1,...,X6) 和时间 2 (Y1,...,Y6)
  • 在所有变量之间绘制双头箭头(即,您要让软件知道所有方差和协方差都可以自由变化,因此您的模型应该完美地表示数据)
  • 命名所有方差和协方差
  • 以上是模型1(即无等式约束)
  • 然后将等式语句添加到模型 2(即方差和协方差受限)
    • 对应变量在不同时间点的等方差:例如,var_x1 = var_y1 var_x2 = var_y2以此类推
    • 对应时间点的相等协方差:例如,cov_x1_x2 = cov_y1_y2 cov_x1_x3 = cov_y1_y3依此类推
  • 检查两个模型之间的拟合差异
    • 模型 2 嵌套在模型 1 中,因此您应该能够使用嵌套模型比较测试,例如卡方差异测试。

这可能可以用 proc mixed 进行测试(你必须假设多元正态性)。将所有数据堆叠在一列上。然后,您将需要主题 ID 和时间点的指示符。您必须将主题 ID 和时间点指示符都定义为类变量。拟合仅截距模型;然后可能使用重复的语句来拟合不受约束的方差/协方差结构 ( type=un)。写下2ln(L)在哪里L是可能性)和自由度。然后拟合第二个模型,但这次在重复语句中,使用group=选项SAS为每个时间点拟合单独的协方差结构(即每个时间点是一个组)。写下2ln(L)和df。然后使用两个模型之间的 -2loglikelihoods 和 dfs 的差异进行拟合无差异的 LRT 检验,在两个模型之间拟合无差异的零假设下,该差异应分布卡方。