使用plspm进行路径分析

时间:2014-02-28 11:50:53

标签: r path

我正在尝试使用'plspm'构建偏最小二乘路径模型。阅读完教程并格式化我的数据之后,我就陷入了错误:

"Error in if (w.dif < tol || itermax == iter) break : missing value where TRUE/FALSE needed".

我认为这个错误是某些潜在变量缺失值的结果(例如Soil_Displaced)有很多NA,因为这个变量仅在实验中的重复子集中测量。有没有办法解决这个错误,并使用具有大量缺失值的变量。我在这里附加我的代码和日期集,数据集也可以在这个dropbox文件中找到; https://www.dropbox.com/sh/51x08p4yf5qlbp5/-al2pwdCol

这是我现在的代码:

# inner model matrix
warming = c(0,0,0,0,0,0)
Treatment=c(0,0,0,0,0,0)
Soil_Displaced = c(1,1,0,0,0,0)
Mass_Lost_10mm = c(1,1,0,0,0,0)
Mass_Lost_01mm = c(1,1,0,0,0,0)
Daily_CO2      = c(1,1,0,1,0,0)

Path_inner = rbind(warming, Treatment, Soil_Displaced, Mass_Lost_10mm, Mass_Lost_01mm,Daily_CO2 )

innerplot(Path_inner) 

#develop the outter model 
Path_outter = list (3, 4:5, 6, 7, 8, 9)

# modes
#designates the model as a reflective model 
Path_modes = rep("A", 6)                                                          

# Run it plspm(Data, inner matrix, outer list, modes)
Path_pls = plspm(data.2011, Path_inner, Path_outter, Path_modes)

有关此问题的任何意见都会有所帮助。谢谢!

2 个答案:

答案 0 :(得分:2)

plspm确实在缺少值的情况下工作,您必须将缩放设置为数字。

对于您的示例,代码如下所示:

example_scaling = list(c("NUM"),
                       c("NUM", "NUM"),
                       c("NUM"),
                       c("NUM"),
                       c("NUM"),
                       c("NUM"))

Path_pls = plspm(data.2011, Path_inner, Path_outter, Path_modes, scaling = example_scaling)

但是受到限制:

但是,如果您的数据集包含一个观察结果,其中潜在变量的所有指标都缺失值,则无法工作。

第一种情况:F.e。潜在的变量&#34;治疗&#34;有2个指标,如果其中一个是NA,它就可以正常工作。

第二种情况:但是如果只有一个观察指标是两个指标都是NA,它就不会起作用。

由于您只用一个指标测量其他5个潜在变量,并且您说您的数据包含大量缺失值,第二个可能就是这种情况。

答案 1 :(得分:0)

PLSPM不能用于缺失值,因此我必须从已知观察中插入一些缺失值。完成后,上面的代码工作得很好!