我正在尝试使用'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)
有关此问题的任何意见都会有所帮助。谢谢!
答案 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不能用于缺失值,因此我必须从已知观察中插入一些缺失值。完成后,上面的代码工作得很好!