原文链接:http://tecdat.cn/?p=25044

1 简介

在本文,咱们将思考察看/显示所有变量的模型,以及具备潜在变量的模型。第一种有时称为“路径分析”,而后者有时称为“测量模型”。

2 进行简略的多元回归

SEM 在很大水平上是回归的多元扩大,咱们能够在其中一次查看许多预测变量和后果。SEM 还提供了查看潜在构造(即未察看到某些变量的中央)的翻新。更具体地说,“构造方程”的概念是指咱们有不止一个方程示意协方差构造模型,其中咱们(通常)有多个规范变量和多个预测变量。

让咱们从简略的演示开始,即 SEM 中的门路模型能够概括简略的单预测变量-单后果回归。咱们将查看波士顿 1970 年人口普查中的房价数据,以回顾相干和回归中的重要概念。这是一个很好的回归数据集,因为有许多相互依赖的变量:立功,污染物,财产的年龄,等等。

这是下面的单预测回归,作为门路模型运行 :

#示例数据集,包含波士顿按人口普查区划分的屋宇价格Bsnml <- otnou %>% dplyr::select(  cmv, #住宅的中位数价值,以千计  crm, #城镇人均犯罪率  nx, #一氧化氮浓度  lsa, #位置较低的人的比例  rd #凑近放射状的高速公路  ) %>% mutatesummary

为了比拟,输入 lm()

  summary(lm

回归系数是雷同的(好!)。有一点须要留神的是,咱们在输入中没有截距。这突出了一个重要的区别,根本的SEM常常关注数据的协方差构造。咱们也能够包含均值,但通常只有当它与咱们的迷信问题无关时才会包含。例如,男性和女性在抑郁症潜在因素的平均水平上是否有差别?

2.1 均匀构造

在这种状况下,咱们能够要求在模型中蕴含平均值(截距)  mean=TRUE

summary(lvt)

2.2 模型参数详情

"参数 "表提供了模型中哪些参数是必须被预计,以及用户在模型语法中要求哪些参数的重要摘要。
 

Table(mv)

在这里,'user' 指的是咱们在语法中明确申请的参数,'free' 列的非零值示意模型自在预计的参数。

请留神,咱们也能够失去标准化的估计值 。这是 SEM 中更简单的主题,因为咱们能够仅针对潜在变量(std.lv)或察看变量和潜在变量(std.all)进行标准化。后者通常是 SEM 论文中作为标准化预计报告的内容。

2.3 标准化预计

stdln(v, type)

3 住房数据的路径分析

让咱们看一些更乏味的货色。如果咱们认为一氧化氮 ( nox) 程度也能够预测房价和犯罪率,那会怎么?咱们能够将其增加为规范多元回归中的预测变量。

此外,咱们假如屋宇凑近大型高速公路(rad)预测一氧化氮的浓度,从而预测较低的房价?

模型语法能够指定为:

sem(ln2, data=toSll)

模型看起来像这样

Paths

这是文本输入:

summary

须要留神的几点:

  1. 请留神正告:“一些察看到的差别(至多)是其余差别的 1000 倍。” 
  2. 咱们的假如仿佛都失去了反对。
  3. 模型卡方十分显着,表明全局模型拟合不佳。

3.1 调整

当模型中变量的方差显着不同(数量级)时,参数估计可能会遇到困难。鉴于上述正告,让咱们来看看。

Table(lv2)

看起来nox的比例要比其余预测因素小得多,可能是因为它的单位是千万分之一!咱们能够通过乘以常数来从新调整变量的比例。在这种状况下,咱们能够通过乘以一个常数来从新划分变量的尺度。这对模型的拟合或解释没有影响--咱们只须要回顾一下新单位代表什么。另外,如果重要的话,你能够随时从参数估计中除掉常数来复原原来的单位。
 

Bonl <- BoSal %>% mutatesummary(lv2)

3.2 模型拟合指数

您能够在模型摘要输入中应用更具体的全局拟合指数。

summary(fit.me=TRUE)

您还能够应用以下办法获取适宜的度量(包含其余统计信息)

 

这些看起来很差:CFI < .95(甚至远低于 0.9),而 RMSEA 远高于咱们认为“还能够”的 0.08 程度。

3.3 模型诊断

这表明须要更具体地查看拟合。首先,咱们能够查看模型隐含和察看到的协方差矩阵之间的不匹配。

从概念上讲,构造方程建模 (SEM) 的指标是测试变量间协方差的实践动机模型是否提供了数据的良好近似。

更具体地说,咱们试图测试一个解析模型(由测量和/或构造成分组成)对察看到的协方差矩阵的再现水平。从模式上看,咱们正在寻求建设一个模型,其模型隐含的协方差矩阵靠近于样本(观测)协方差矩阵。

SXX≈ ( ^)

咱们能够从中取得这些信息, 进一步诊断模型不匹配。

首先,模型隐含的协方差矩阵:

fitted

咱们兴许能够用相干(标准化)单位更容易地解释这一点。也就是说,变量之间的模型隐含相关性是什么?能够拜访许多模型详细信息,包含:

这与察看到的相关性相比如何?

特地是,取得双变量关联的不匹配。在这里,咱们要求相干单位中的残差,这比解决未标准化的协方差更直观。请留神,这是下面察看到的模型隐含矩阵的减法。大的正值表明模型低估了相关性;大的负值表明相关性的适度预测。通常值 |r>.1|值得认真思考。

因而,该模型显着低估了 nox 和 crim之间的 关联 。

咱们也能够将问题可视化:

plot_matix

3.4 批改指数

让咱们看一下批改索引,看看咱们是否能够通过开释一个或多个门路来修复不匹配,特地是nox  和 log_crim之间的 关系 。

在这里,咱们看到如果咱们容许 log_crim 预测 ,模型拟合会大大提高nox。这是否具备实践上的意义是另一回事(而且可能更重要)。出于演示目标,让咱们承受须要自在预计这条门路。

#咱们能够应用增加参数来增加一个门路,同时放弃所有其余模型元素不变ma3 <- updatesummary

 

这在拟合方面看起来好多_了_。 立功与咱们之前错过的氮氧化物程度之间存在强烈的正相干关系。从概念上讲,这表明立功与房价之间的关系局部是由立功对污染物程度的影响所调节的。相比之下,凑近高速公路对房价的影响仿佛齐全由污染物程度调节(正如这条门路没有大的修改指数所示)。

4 测验调解

如果反对上述模型并且咱们对测试中介特地感兴趣,咱们通常心愿 1)专门测验间接效应,以及 2)应用一种办法对提供可信 _p_值的中介效应进行显着性测验。正如前段时间所指出的(例如,MacKinnon 等人,2007 年),在 SEM 框架中对中介的适当测验是基于  形成中介的成分门路的_乘积。_在这里,咱们在两个中介链中只有两条门路:

radlog\_crim→nox→cmedv→nox→cmedvrad→nox→cmedvlog\_crim→nox→cmedv

为了具体测试这些,咱们须要在 模型中定义新参数,这些参数是各个门路的产物。这能够应用 =: 运算符('定义为')来实现。请留神,这的确会扭转模型中自在参数的数量,因为这些只是现有参数的乘积。为了看哪个预计要相乘,咱们必须通过将变量预乘以任意标签来应用“参数标签”。在这里,我将“a1”和“a2”用于 X -> M 门路,将“b1”用于 M -> Y 门路。

i_1 := a1*b1i_2 := a2*b1'summary(mv4)

这看起来很有心愿,但正如我下面提到的,这种用于测试中介的“delta 办法”家喻户晓是有问题的,因为间接门路乘积项的抽样散布不失常。Bootstrapping 是解决这种问题的一种常见解决办法,它不会对感兴趣系数的散布(即两个中介门路的采样散布)做出强有力的假如。咱们能够应用参数来实现这一点 se = "bootstrap"。默认状况下,这将应用 1000 个非参数疏导样本从新预计参数估计的标准误差。您能够应用bootstrap 参数更改疏导样本的数量 

summary

 

正如咱们所狐疑的,这两种间接路径都很重要,表明了调节的证据。

5 带有潜在变量的 SEM

当咱们对测试有潜变量的模型感兴趣时,怎么办?通常,这将是一个 "反映性潜变量 "模型,咱们认为一个假设的潜变量是由几个(通常是3个以上)显性指标来掂量的。这样的变量通常被称为 "因子 "或 "潜在特质"。在SEM世界中,确认性因子分析是最常见的反映性潜变量模型。

这样的模型中应用=~操作符('测量的')来指定。

让咱们以 掂量智力为例,其中有 9 个我的项目能够掂量智力的不同方面:视觉、文本和速度。察看到的变量是 x1-x9

这是一个“经典”数据集,用于许多对于构造方程建模 (SEM) 的论文和书籍,包含一些商业 SEM 软件包的手册。数据包含来自两所不同学校的七年级和八年级儿童的心理能力测试问题。在咱们的数据集版本中,仅蕴含原始 26 个测试中的 9 个。通常针对这 9 个变量提出的 CFA 模型由三个潜在变量(或因子)组成,每个潜在变量具备三个指标:

  • 由 3 个变量测量的 _视觉_ 因子 x1: x2 和 x3
  • 由 3 个变量测量的 _文本_ 因子 x4: x5 和 x6
  • 由 3 个变量测量的 _速度_ 因子 x7: x8 和 x9

一个 3 因素 CFA 示例

5.1 指定因子模型

指定此模型的相应 语法如下:

     visual =~ x1 + x2 + x3    textual =~ x4 + x5 + x6      speed =~ x7 + x8 + x9

在此示例中,模型语法仅蕴含三个“潜在变量定义”。

5.2 典型 CFA 输入

默认状况下,第一个指标具备 1 的固定负载以缩放根底因子(“单位负载标识”)。让咱们来看看:

summary

 

 

 

5.3 CFA 的修改指数

modification

修改指数表明 x9 可能会加载 visual 因子,或者 x7 可能 x9 具备惟一的残差相关性。这又是一个实践上的问题,但咱们能够测试批改后的模型以进行演示。咱们应用 ~~ 运算符来指定模型中的(残差)方差或协方差项。

summary(fit2, fit.meas)

依然不是很好。咱们能够从新查看批改指数

modificatio

当初是时候征询你对于潜在构造应该是什么的预测或实践了。这是一个模型构建和模型比拟问题,很大水平上超出了本教程的范畴。然而,咱们至多能够测试这些模型之间的全局拟合差别。这些是嵌套模型(因为 x7 ~~ x9 在更简略的模型中残差协方差为 0),这容许咱们应用似然比测验(也称为模型卡方差):

anova

该 anova 函数将应用 LRT 办法测试整体拟合差别。LRT 的自由度是自在参数数量的差别(此处为 1)。

5.4 具体看模型

咱们能够查看自在参数在矩阵标准中的地位。自在参数被编号(按程序),零示意可能的参数,固定为零(即不预计)。
 

inspect

 

咱们还能够看到矩阵模式的参数估计:

inspect( "est")

5.5 构造模型呢?

下面的 CFA 只蕴含一个测量模型——一个具备因子之间相关性的三因子模型。如果咱们还想看看学校的年级在多大程度上能够预测智力因素(视觉、文本、速度)的程度,该怎么办?

summary( fit.measures=TRUE)

semPath

正如人们所意料的那样,高年级的孩子在潜在智力因素上得分更高。

最初,如果咱们想在构造模型中应用个别与特定(残差)方差怎么办?为了让它们在雷同的参数矩阵中适当地发挥作用,咱们为感兴趣的我的项目残差创立了一个单指标潜在变量。

x1d =~ 1*x1 #定义烦扰因子,将1.0加载到指标上(如RAM的符号)。x1 ~~ 0*x1 #指标的零残差(所有加载到烦扰因素上)。#依据规范模型,烦扰因素与因子不相干x1d ~~ 0*视觉x1d ~~ 0*文本x1d ~~ 0*速度#咱们当初能够看看X1的具体方差和视觉因素是否能惟一地预测人的年龄summary(fitne)

 

 

这里没有骰子,但你明确了。

6 分类数据

反对应用阈值构造来正式解决内生的分类数据。这源于这样的观点:一个我的项目的根本散布是间断的(高斯),但咱们的离散化(如二元或多态)在特定的点上升高了这个维度。
 

咱们有4个级别的变量(1、2、3、4),但只有三个阈值--每个阈值指定两个相邻级别(锚)之间的边界。如果咱们有能源来阐明这个构造,这些阈值能够被指定为模型中的自在参数。这本质上是在预计参数沿着间断体的落点;它们不须要均匀分布

如果咱们对一个我的项目有5个以上的锚,咱们兴许能够把它当作间断的,而不会呈现重大的谬误。请留神,这就是咱们在最后的CFA中所做的事件--咱们将x1-x9视为正态/间断散布。事实证明,它们是(即不是高度离散的)。
 

hist(Holz$x1)

然而,如果咱们有具备 2、3 或 4 个值的数据,将变量视为连续变量通常是不适合的,并且可能导致有偏差、不精确的后果。

通常,具备阈值构造的模型是应用“加权最小二乘”(WLS)预计器而不是最大似然(ML;SEM 中的典型预计器)预计的。均值和协方差调整的 WLS(又名“WLSMV”)通常是可行的办法,因为它能够比典型的 WLS 更好地解决多元散布的非正态性。

6.1 CFA分类数据演示

这是一个疾速演示——如果咱们的每个智力测试项目只有三分法怎么办?

hist

咱们用有序参数通知R哪些项目是有序分类的。

summary(fiat)

 

请留神,咱们当初对每个我的项目都有阈值预计,其中较高的数值示意对一个类别和下一个类别之间的边界有较高的预计,而这个潜在的间断体据说是该项目标根底。

7 预计

最初, 能够用许多不同的算法来预计模型中的参数。“ML”是间断数据的默认值,“WLS”是(局部)分类数据的默认值。

这些预计器的'持重'通常会在整个模型的卡方测验和标准误差的层面上对非正态性(以及潜在的其余货色,如聚类)进行持重解决,因而,显著性测验。让你的统计数据对非正态性具备鲁棒性通常是一件坏事......因而,许多人将应用 "MLR "作为他们对间断数据的首选,而 "WLSMV "则用于分类数据。

能够应用 estimator 参数指定它。

summary(filr, fit.measures=TRUE)

 

 

咱们当初有一列“持重”的全局拟合指数,并留神标准误差是应用 Huber-White 预计器预计的(对非正态性和聚类持重)。

8 缺失数据

默认状况下, 通常会删除短少任何变量的样本。然而您可能会失落大量数据,并且因为它可能会给数据带来偏差。尽管远远超出了本教程,但通常最好在数据随机缺失的假如下应用所谓的全信息最大似然 (FIML),即给定变量的缺失可能与其余变量相干,然而而不是变量自身。应用 FIML,预计尝试依据具备可用数据的案例来预计所有参数。

以下是默认状况下产生的状况:

 

 

留神输入:

后果不现实。

好的,上面是FIML

summary(fiiml, fit.measures=TRUE)

 

 

这更让人释怀:

同样,对于缺失数据的实践和正式办法超出了本教程的范畴,但我心愿这能让大家理解到如何在sem中解决缺失问题。


最受欢迎的见解

1.R语言多元Logistic逻辑回归 利用案例

2.面板平滑转移回归(PSTR)剖析案例实现剖析案例实现")

3.matlab中的偏最小二乘回归(PLSR)和主成分回归(PCR)

4.R语言泊松Poisson回归模型剖析案例

5.R语言混合效应逻辑回归Logistic模型剖析肺癌

6.r语言中对LASSO回归,Ridge岭回归和Elastic Net模型实现

7.R语言逻辑回归、Naive Bayes贝叶斯、决策树、随机森林算法预测心脏病

8.python用线性回归预测股票价格

9.R语言用逻辑回归、决策树和随机森林对信贷数据集进行分类预测