楼主: dqj1551007438
4457 7

[学习分享] 悬赏 R语言结构方程模型有三个函数 lavaan(), sem(), cfa() 可以用,不知道区别在哪里 [推广有奖]

  • 0关注
  • 2粉丝

已卖:89份资源

本科生

9%

还不是VIP/贵宾

-

威望
0
论坛币
80 个
通用积分
1.0800
学术水平
0 点
热心指数
0 点
信用等级
0 点
经验
538 点
帖子
28
精华
0
在线时间
92 小时
注册时间
2014-4-23
最后登录
2021-8-12

楼主
dqj1551007438 学生认证  发表于 2021-6-15 18:25:19 |AI写论文
10论坛币


非常希望能解答我的疑惑~

1. 本人目前一直在看学习如何R语言解决结构方程模型,具体来说有三个函数 lavaan(), sem() 和 cfa() 可以用来编程。但是看完了英文的帮助文档依然一头雾水,不知道区别在哪里,也不知道实际大家都是用哪个函数呢?
2. 另外 lavaan()这个函数的编程例子里面并没有提供 调节变量(moderator) 如何处理的问题??很多资料也都没有写。不知道这个是否真的支持 调节变量的分析。
非常感谢大家!

最佳答案

llb_321 查看完整内容

在这个包里,可以这样理解,lavaan是基本函数,提供全部参数设定可能,cfa和sem都是lavaan的马甲,只不过部分具体参数已经替你设定了。 三者的输出都是lavaan。 cfa是验证式因子分析模型,sem是常说的结构方程模型,应用上的差异主要体现在二者的第一个参数model通常是不同的,sem处理的model通常需要定义潜变量公式、回归公式和残差公式,而cfa处理的model只需要定义潜变量公式。 你说的第二个问题,不是lavaan的问题,而是 ...
关键词:结构方程模型 结构方程 不知道 R语言 CFA R语言 结构方程模型

本帖被以下文库推荐

沙发
llb_321 在职认证  发表于 2021-6-15 18:25:20
在这个包里,可以这样理解,lavaan是基本函数,提供全部参数设定可能,cfa和sem都是lavaan的马甲,只不过部分具体参数已经替你设定了。
三者的输出都是lavaan。
cfa是验证式因子分析模型,sem是常说的结构方程模型,应用上的差异主要体现在二者的第一个参数model通常是不同的,sem处理的model通常需要定义潜变量公式、回归公式和残差公式,而cfa处理的model只需要定义潜变量公式。

你说的第二个问题,不是lavaan的问题,而是lavaan要处理的model的问题。理论上,都是变量,就看变量在公式中的什么位置及如何发挥作用。
我的理解是,结构方程模型的主要目的是潜变量,至于调节变量,如果需要的话,可以在“外层代码”结构上实现。
已有 2 人评分论坛币 学术水平 热心指数 信用等级 收起 理由
cheetahfly + 10 热心帮助其他会员
dqj1551007438 + 1 + 1 + 1 精彩帖子

总评分: 论坛币 + 10  学术水平 + 1  热心指数 + 1  信用等级 + 1   查看全部评分

藤椅
owenqi 在职认证  学生认证  发表于 2021-6-17 02:11:54
纯路人,查了一下你说的这个东西,不知道这个答案能不能帮助你,关于区别
https://stats.stackexchange.com/questions/153590/is-structural-equation-modeling-sem-just-another-name-of-confirmatory-factor-a
关于使用
https://methodenlehre.github.io/SGSCLM-R-course/cfa-and-sem-with-lavaan.html#confirmatory-factor-analysis-cfa
已有 3 人评分论坛币 学术水平 热心指数 信用等级 收起 理由
cheetahfly + 10 热心帮助其他会员
dqj1551007438 + 1 + 1 + 1 精彩帖子
llb_321 + 5 + 5 精彩帖子

总评分: 论坛币 + 15  学术水平 + 1  热心指数 + 1  信用等级 + 6   查看全部评分

板凳
dqj1551007438 学生认证  发表于 2021-6-17 21:12:51
llb_321 发表于 2021-6-17 14:06
在这个包里,可以这样理解,lavaan是基本函数,提供全部参数设定可能,cfa和sem都是lavaan的马甲,只不过部 ...
听完您的讲解让人豁然开朗!非常感谢!
但是针对第2个问题,lavaan的标准结构是:
library(lavaan)
model = '
ind60 =~ x1 + x2 + x3   # 左边的表示潜变量,右边表示用来度量这个潜变量的变量
dem60 =~ y1 + y2 + y3 + y4
dem65 =~ y5 + y6 + y7 + y8

dem60 ~ ind60                    ##表示回归,左边是因变量,右边是自变量
dem65 ~ ind60 + dem60            

y1 ~~ y5                         ##表示有相关关系
y2 ~~ y4                     
y3 ~~ y7
y4 ~~ y8
y6 ~~ y8
'
fit = sem(model, data = PoliticalDemocracy)
summary(fit, standardized = TRUE)
#画出路径图
library(semPlot)
semPaths(fit) #可以进行设置


很显然,符号 ~ 可以表示出中介变量结构(这个例子中 dem60是中介变量)
那么针对 调节变量的结构,要怎么表达呢?英文帮助文档里就没有出现过?

再次感谢您~

报纸
dqj1551007438 学生认证  发表于 2021-6-17 21:14:24
owenqi 发表于 2021-6-17 02:11
纯路人,查了一下你说的这个东西,不知道这个答案能不能帮助你,关于区别

关于使用
感谢您的回复,对我很有帮助

地板
llb_321 在职认证  发表于 2021-6-18 10:17:11
dqj1551007438 发表于 2021-6-17 21:12
听完您的讲解让人豁然开朗!非常感谢!
但是针对第2个问题,lavaan的标准结构是:
library(lavaan)
通常在回归公式中用“*”定义交互变量,调节变量其实也是交互变量。但在lavaan包中,"*"的作用不一样,好像是对变量x的系数估值进行调整的,在这个包里称为“modifier”,显然和"moderator"调节变量不是一回事。

但这个包的模型语法函数中有个“conditional.x”参数,应该可以实现模型以某个显变量为条件,但是没有示例代码。

我理解,如果调节变量是类别变量的话,是否可以通过分组回归的方式考察该变量的作用。

7
dqj1551007438 学生认证  发表于 2021-6-21 16:46:35
llb_321 发表于 2021-6-18 10:17
通常在回归公式中用“*”定义交互变量,调节变量其实也是交互变量。但在lavaan包中,"*"的作用不一样,好 ...
已经找到具体的做法了,https://ademos.people.uic.edu/Chapter15.html 后面有sem处理同时有moderator 和 mediator的例子!

8
llb_321 在职认证  发表于 2021-6-22 23:54:03
dqj1551007438 发表于 2021-6-21 16:46
已经找到具体的做法了,https://ademos.people.uic.edu/Chapter15.html 后面有sem处理同时有moderator 和 ...
参照那个方法,做了个模型,结果是这样的,不知道是否符合调节变量和中介变量的要求

lavaanSEM
已有 1 人评分论坛币 收起 理由
cheetahfly + 10 热心帮助其他会员

总评分: 论坛币 + 10   查看全部评分

您需要登录后才可以回帖 登录 | 我要注册

本版微信群
加好友,备注cda
拉您进交流群
GMT+8, 2025-12-29 08:19