导读
在**篇系列文章中,我们向您展示了如何使用 Monte Carlo 模拟计算 t 检验的功效,如何将您的模拟集成到 Stata 的 power 命令中,以及如何对线性和逻辑回归模型以及多层次模型进行此操作。这篇文章,我们将向您展示如何使用模拟来估计结构方程模型 (SEM) 的功效。
我们的目标是编写一个程序,计算给定 SEM 在不同样本大小下的功率。我们将遵循与前两篇文章相同的一般程序,但我们模拟数据的方式略有不同。我们将从给定的协方差矩阵中同时模拟所有变量,而不是单独模拟*模型的每个变量。如果您的 SEM 具有均值结构,例如组内分析或增长曲线分析,则每个变量的均值也可用于模拟数据。
有三种方法可以获得协方差矩阵来模拟SEM数据:
1. 使用发表在论文或其他来源中的协方差矩阵。
2. 使用网状作用模型 (RAM) 使用预期参数估计推导出模型隐含的协方差矩阵。
3. 在 Stata 中对您自己的试点研究数据或其他数据源执行 sem 分析后,提取模型隐含的协方差矩阵。
RAM 方法将在本文末尾演示。下面将演示使用 sem 命令后提取模型隐含的协方差的过程。无论您选择哪种方法来获取协方差矩阵以进行模拟,我们过程的其余部分都将与前两篇文章中的相同。我们将通过以下步骤进行:
1.获取或推导与备选假设下的假设模型相对应的协方差矩阵(和均值,如果适用)。
2.模拟单个数据集并拟合模型。
3.编写一个程序来创建数据集,拟合模型并使用 simulate 来测试程序。
4.编写一个名为 power_cmd_simsem 的程序,允许您使用 power 运行模拟。
5.可选项:编写一个名为 power_cmd_simsem_init 的程序,以便您可以查看模型在不同样本大小下模型的收敛速度。
我们正在计划一项新的研究来评估年龄和性别对健康的相互影响。我们可以使用 NHANES 数据集获得一个合理的协方差矩阵,从中我们可以模拟新数据。我们将健康定义为通过测量收缩压(bpsystol)、舒张压(bpdiast)、血清胆固醇(tcresult)和血清甘油三酯(tgresult)的潜在变量。具体来说,我们希望拟合以下模型:
图1:假设模型的路径图
第 1 步:获取或导出与假设模型相对应的协方差矩阵(和均值,如果适用)
我们将使用模型隐含的协方差矩阵将上述模型拟合到 NHANES 数据。首先,我们需要加载数据集,创建交互变量,然后拟合我们的模型。
具体数据,搜索公众号:友万学院
第 2 步:假设备择假设模拟单个数据集,并拟合模型
接下来,我们使用 draworm 命令从协方差矩阵(和均值)创建一个模拟数据集。drawnorm 基于样本大小、均值和协方差模拟一个变量或一组变量。在这里,我们将使用 200 个样本量。
第 3 步:编写一个程序来创建数据集,拟合模型并使用 simulate 来测试程序
接下来让我们编写一个程序,在备择假设下创建数据集,拟合 sem 模型,测试感兴趣的原假设,并使用 simulate 运行程序的多次迭代。该程序与我们在之前的文章中编写的程序之间的主要区别是,该程序需要接受矩阵作为输入参数。这可能有点棘手。我们需要做的是将输入类型*为字符串而不是矩阵。然后在程序中,我们将根据矩阵的名称定义矩阵,将其作为字符串传递给程序,即mat C = `cov'。后,我们可以使用这些矩阵用drawnorm模拟我们的数据,拟合我们的模型,并检验原假设。我们还在 sem 命令前面添加了捕获,以在模型不收敛的情况下捕获错误。下面的代码块包含此程序的语法,称为simsem。
第 4 步:编写一个名为 power_cmd_simsem 的程序,允许您使用 power 运行模拟
如果我们只对一组特定的假设感兴趣,我们可以停止模拟。但是编写一个名为 power_cmd_simsem 的附加程序很容易,它允许我们使用 Stata 的 power 命令为一系列样本大小创建表格和图表。我们只需要像在 simsem 命令中那样包含输入语法,使用 simsem 命令进行模拟,然后返回结果。
第 5 步:可选项:编写一个名为 power_cmd_simsem_init 的程序,以便您可以查看模型在不同样本大小下模型的收敛速度
收敛通常是 SEM 模拟中的一个问题。如果您的模型在较小的样本量下难以收敛,则在功率输出表中添加convergence rate 列可能会很有用。
北京友万信息科技有限公司专注于Minitab,Stata,SPSS等