使用SEMinR包拟合PLS模型时遇逻辑判断缺失值错误求助
关于SEMinR包PLS模型拟合报错的排查与解决
我正在使用SEMinR包运行结构方程模型(SEM),数据集无缺失值。已按如下代码指定模型,但拟合数据时出现错误:
模型代码
national_mm= constructs( composite('NatCont', multi_items('nat_',1:4))) model_nat_sm=relationships( paths(from='NatCont',to=c('coauthor','imfjourn'))) modelnational=estimate_pls(data=dataNational, measurement_model = national_mm, structural_model = model_nat_sm)
报错信息
error in if ((mmMatrix[mmMatrix[, "construct"] == construct, "type"][1] == : missing value, where TRUE/FALSE needed
错误原因及解决办法
核心原因:结构模型里的
coauthor和imfjourn两个构念,没有在测量模型national_mm中定义。SEMinR要求所有参与结构路径的构念,必须先在测量模型里明确其测量方式(复合式/反映式),否则程序无法识别构念类型,导致逻辑判断时出现缺失值,触发报错。解决步骤:
把coauthor和imfjourn补充到测量模型中,根据实际测量项调整代码:national_mm= constructs( composite('NatCont', multi_items('nat_',1:4)), # 按实际情况定义coauthor的测量项,多项目用multi_items,单项目用single_item composite('coauthor', multi_items('coauth_', 1:3)), # 同理定义imfjourn的测量项 composite('imfjourn', single_item('imfjourn')) ) model_nat_sm=relationships( paths(from='NatCont',to=c('coauthor','imfjourn'))) modelnational=estimate_pls(data=dataNational, measurement_model = national_mm, structural_model = model_nat_sm)额外检查项:
- 确认数据集中的变量名和测量模型里的命名完全匹配,比如
nat_1至nat_4确实存在于dataNational中,没有拼写错误。 - 确保每个构念的测量类型(
composite或reflective)指定正确,这是SEMinR运行PLS模型的必要前提。
- 确认数据集中的变量名和测量模型里的命名完全匹配,比如
内容的提问来源于stack exchange,提问作者Daria
相关产品推荐
相关产品推荐

