结构方程模型SEM、路径分析房价和犯罪率数据、预测智力影响因素可视化2案例(上)

简介: 结构方程模型SEM、路径分析房价和犯罪率数据、预测智力影响因素可视化2案例

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


在本文,我们将考虑观察/显示所有变量的模型,以及具有潜在变量的模型点击文末“阅读原文”获取完整代码数据


1 简介


第一种有时称为“路径分析”,而后者有时称为“测量模型”。


2 进行简单的多元回归


SEM 在很大程度上是回归的多元扩展,我们可以在其中一次检查许多预测变量和结果。SEM 还提供了检查潜在结构(即未观察到某些变量的地方)的创新。更具体地说,“结构方程”的概念是指我们有不止一个方程表示协方差结构模型,其中我们(通常)有多个标准变量和多个预测变量。

让我们从简单的演示开始,即 SEM 中的路径模型可以概括简单的单预测变量-单结果回归。我们将检查人口普查中的房价数据查看文末了解数据获取方式,以回顾相关和回归中的重要概念。这是一个很好的回归数据集,因为有许多相互依赖的变量:犯罪,污染物,财产的年龄,等等。

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

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

为了比较,输出 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


点击标题查阅往期内容



01

02

03

04




这是文本输出:

summary

需要注意的几点:

  • 请注意警告:“一些观察到的差异(至少)是其他差异的 1000 倍。”
  • 我们的假设似乎都得到了支持。
  • 模型卡方非常显着,表明全局模型拟合不佳。

3.1 调整

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

Table(lv2)

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

Bonl <- BoSal %>% mutate
summary(lv2)

3.2 模型拟合指数

您可以在模型摘要输出中使用更详细的全局拟合指数。

summary(fit.me=TRUE)

您还可以使用以下方法获取适合的度量(包括其他统计信息)

这些看起来很差:CFI < .95(甚至远低于 0.9),而 RMSEA 远高于我们认为“还可以”的 0.08 水平。

3.3 模型诊断

这表明需要更详细地检查拟合。首先,我们可以查看模型隐含和观察到的协方差矩阵之间的不匹配。

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

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

SXX≈Σ (θ ^)

我们可以从中获得这些信息, 进一步诊断模型不匹配。

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

fitted

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

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

特别是,获得双变量关联的不匹配。在这里,我们要求相关单位中的残差,这比处理未标准化的协方差更直观。请注意,这是上面观察到的模型隐含矩阵的减法。大的正值表明模型低估了相关性;大的负值表明相关性的过度预测。通常值 |r>.1|值得仔细考虑。

因此,该模型显着低估了 noxcrim之间的 关联 。

我们也可以将问题可视化:

plot_matix

3.4 修改指数

让我们看一下修改索引,看看我们是否可以通过释放一个或多个路径来修复不匹配,特别是nox  和 log_crim之间的 关系 。

在这里,我们看到如果我们允许 log_crim 预测 ,模型拟合会大大提高nox。这是否具有理论上的意义是另一回事(而且可能更重要)。出于演示目的,让我们接受需要自由估计这条路径。

#我们可以使用添加参数来添加一个路径,同时保持所有其他模型元素不变
ma3 <- update
summary

这在拟合方面看起来好多_了_。 犯罪与我们之前错过的氮氧化物水平之间存在强烈的正相关关系。从概念上讲,这表明犯罪与房价之间的关系部分是由犯罪对污染物水平的影响所调节的。相比之下,靠近高速公路对房价的影响似乎完全由污染物水平调节(正如这条路径没有大的修正指数所示)。


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*b1
i_2 := a2*b1
'
summary(mv4)

这看起来很有希望,但正如我上面提到的,这种用于测试中介的“delta 方法”众所周知是有问题的,因为间接路径乘积项的抽样分布不正常。Bootstrapping 是解决这种问题的一种常见解决方法,它不会对感兴趣系数的分布(即两个中介路径的采样分布)做出强有力的假设。我们可以使用参数来实现这一点 se = "bootstrap"。默认情况下,这将使用 1000 个非参数引导样本重新估计参数估计的标准误差。您可以使用bootstrap 参数更改引导样本的数量

summary

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


结构方程模型SEM、路径分析房价和犯罪率数据、预测智力影响因素可视化2案例(下):

相关文章
|
设计模式 资源调度 Kubernetes
微前端应用 乾坤 开发实践
乾坤作为一款微前端应用框架,可以有效的实现前端应用程序的模块化设计,代码复用和可维护性。下面我们来通过实际开发来看看乾坤的使用方式以及实践。
|
机器学习/深度学习 算法 数据可视化
JAMA | 机器学习中的可解释性:SHAP分析图像复刻与解读
JAMA | 机器学习中的可解释性:SHAP分析图像复刻与解读
2947 1
|
存储 缓存 监控
JVM 21 的调优指南:如何进行JVM调优,JVM调优参数
聊聊关于JVM 21的优化指南。这篇文章将会深入探讨如何进行JVM调优,介绍一些关键的JVM调优参数,并提供12个实用的代码示例。由于篇幅较长,我会分几个部分来详细讲解,之前写的也有33篇系列教程JVM调优实战打击也可以去围观。
901 0
|
机器学习/深度学习 人工智能 自然语言处理
Transformer 能代替图神经网络吗?
Transformer模型的革新性在于其自注意力机制,广泛应用于多种任务,包括非原始设计领域。近期研究专注于Transformer的推理能力,特别是在图神经网络(GNN)上下文中。
460 5
|
数据可视化 算法 数据挖掘
结构方程模型SEM、路径分析房价和犯罪率数据、预测智力影响因素可视化2案例(下)
结构方程模型SEM、路径分析房价和犯罪率数据、预测智力影响因素可视化2案例
|
数据可视化 Python
使用Python进行数据可视化:从入门到精通
【8月更文挑战第60天】本文是一篇面向初学者的Python数据可视化教程,旨在帮助读者掌握如何使用Python及其强大的库(如Matplotlib和Seaborn)来创建引人入胜的数据可视化。我们将从基础开始,逐步深入,最终达到能够独立完成复杂数据可视化项目的水平。无论你的背景如何,只要你对数据可视化感兴趣,这篇文章都将为你开启一段新的学习之旅。
|
监控 测试技术 API
关于API接口的性能测试指南
要测试API接口的性能,需先进行功能测试,确保接口正常工作。接着编排性能测试场景,设置运行配置,使用工具如JMeter、Apifox等进行测试,监控性能指标,分析结果,优化调整,并将其纳入持续集成流程,确保高负荷下良好表现。
R语言基于表格文件的数据绘制具有多个系列的柱状图与直方图
【9月更文挑战第9天】在R语言中,利用`ggplot2`包可绘制多系列柱状图与直方图。首先读取数据文件`data.csv`,加载`ggplot2`包后,使用`ggplot`函数指定轴与填充颜色,并通过`geom_bar`或`geom_histogram`绘图。参数如`stat`, `position`, `alpha`等可根据需要调整,实现不同系列的图表展示。
325 9
|
数据可视化 数据挖掘 API
Python数据分析:数据可视化(Matplotlib、Seaborn)
数据可视化是数据分析中不可或缺的一部分,通过将数据以图形的方式展示出来,可以更直观地理解数据的分布和趋势。在Python中,Matplotlib和Seaborn是两个非常流行和强大的数据可视化库。本文将详细介绍这两个库的使用方法,并附上一个综合详细的例子。
|
数据采集 数据可视化
利用R语言进行因子分析实战(数据+代码+可视化+详细分析)
利用R语言进行因子分析实战(数据+代码+可视化+详细分析)