结构方程相关

一、什么是结构方程模型?

SEM结构方程模型是一种基于因子分析、线性回归方法、用于分析错综复杂变量之间路径关系的一种模型。

SEM结构方程模型可以用于探索变量之间的关系。它通过将变量之间的因果关系与测量误差纳入统一的分析框架中来分析数据,从而可同时评估多个变量之间的关系。这些变量可以是观测数据(如问卷调查中的各项指标)或潜在变量(如认知、情感、信仰等难以直接观察的因素)。

与线性回归不一样的是,SEM是以量表为单位的,也就是将量表通过因子分析降维成1个主成分(多个变量转化为一个变量),再进行路径分析。

二、结构方程模型的数据要求

1、多个变量:结构方程模型需要多个变量来建立因果关系模型。这些变量可以是观测到的变量,如问卷调查中的题目得分,也可以是潜变量,如心理特征。

2、大样本量:由于结构方程模型需要估计大量参数,通常建议样本量至少在200以上。

3、正态分布:结构方程模型假设变量服从正态分布,如果数据不服从正态分布,则需要进行数据转换或使用非参数方法。(如何检验数据正态性)

4、缺失值处理:由于数据缺失的存在,需要对缺失值进行处理,例如使用最大似然估计或多重插补等方法。

5、独立观测:结构方程模型假设每个观测之间是相互独立的,需要确保观测之间不存在相关性或依赖性。

三、结构方程模型案例操作

案例:研究"幸福感"的影响因素,有四个因子可能对幸福感有影响,他们分别是:经济水平、受教育程度、情感支持。

每个因子又由多个变量组成,其中经济水平包括(衣、食、住、行)、情感支持包括(父母关心、同学相处、老师指导)、受教育程度包括(学校资源、补课程度)、幸福度包括(满足感、开心感),通过路径分析可以得到这四个变量如右图所示路径关系作用于幸福感。

下面是R语言的代码去实现结构方程

bash 复制代码
# load plspm
library(plspm)
library(readxl)
library(dplyr)

# 选择数据的第3-38列
mydata <- read_xlsx("pattern_analysis.xlsx") %>% 
  dplyr::select(3:38) %>%
  na.omit() %>%
  as.data.frame()

# 对GEP和生态系统类型面积除以面积
mydata$GEP00_23 <- mydata$GEP00_23 / mydata$area
mydata$TJ00_23 <- mydata$TJ00_23 / mydata$area
mydata$forest00_23 <- mydata$forest00_23 / mydata$area
mydata$nature00_23 <- mydata$nature00_23 / mydata$area
mydata$wetland00_23 <- mydata$wetland00_23 / mydata$area
mydata$csha00_23 <- mydata$csha00_23 / mydata$area
mydata$grass00_23 <- mydata$grass00_23 / mydata$area
mydata$wood00_23 <- mydata$wood00_23 / mydata$area
mydata$crop00_23 <- mydata$crop00_23 / mydata$area
mydata$roadlength <- mydata$roadlength / mydata$area
mydata$pop00_23 <- mydata$pop00_23 / mydata$area

# load dataset satisfaction
mydata <- subset(mydata, select = c(area, GEP00_23,
                                    pop00_23,roadD,
                                    tem00_23,pre00_23,
                                    DEM,slope,
                                    forest00_23,crop00_23))


# define path matrix (inner model)
# 5个潜变量之间的路径关系,1表示存在路径,0表示不存在路径
#      ESV MET ECO GEO LUCC
ECO <-  c(0,0,0,0,0)
GEO <-  c(0,0,0,0,0)
MET <-  c(1,1,0,0,0)
LUCC <- c(1,1,1,0,0) 
ESV <-  c(1,1,1,1,0) 

sat_path <- rbind(ECO, GEO, MET, LUCC, ESV)

# define list of blocks (outer model)
sat_blocks <- list(3:4, 7:8, 5:6, 9:10, 2:2) # 5个潜变量,每个潜变量对应的观测变量的列索引

# vector of modes (reflective indicators)
# 反射指标(A)和形成指标(B)的模式,分别对应每个潜变量
sat_modes <- c("A", "A", "A", "B", "A") 

# apply plspm with bootstrap validation
satpls <- plspm(mydata, sat_path, sat_blocks, modes = sat_modes, 
                scaled = FALSE, boot.val = TRUE) #  br = 10000,  # Bootstrap重复次数(10,000次) seed = 123 # 设定随机种子保证结果可重现

# default print
satpls

# summary of results
summary(satpls)

# plot inner model results
plot(satpls, what = "inner")

# plot outer model loadings
plot(satpls, what = "loadings")

# plot outer model weights
plot(satpls, what = "weights")

# 参考plspm的基础设计

参考文献

https://mp.weixin.qq.com/s/koLGa4cJHgUw5OplyGlPmg
结构方程模型原理及应用

相关推荐
Navigator_Z23 分钟前
LeetCode //C - 1311. Get Watched Videos by Your Friends
c语言·算法·leetcode
小小张说故事29 分钟前
Python 的 list 为什么能装下任何类型?拆开 PyObject* 数组,以及它让你多付了多少内存
后端·python
鬼手点金30 分钟前
提示注入:上下文安全的核心威胁
人工智能·安全·microsoft·机器学习·缓存·prompt
chi113033 分钟前
【无标题】
前端·javascript·python
ZhengEnCi34 分钟前
脉冲神经网络是什么:从LIF神经元到第三代神经网络的能耗优势
人工智能·神经网络·机器学习
云析赢指标公式网437 分钟前
通达信ATAN均线角度公式源码笔记:四周期角度计算与DRAWBAND色带实现
笔记·算法
编程见习者1 小时前
Deep Agents介绍
人工智能·python·langchain
梦幻精灵_cq1 小时前
《SGR修行之路》——二○二一五二〇,初识终端点红裳
python·生活
21岁被迫秃头1 小时前
SVT-AV1 Mini-Gop决策算法详解+源码分析.md
算法·av1·svt-av1·源码详解·mini-gop决策
Kobebryant-Manba1 小时前
IEKT向量矩阵流程&评估
人工智能·算法·矩阵