我试图建立一个偏最小二乘路径模型使用'plspm‘。在阅读了本教程并格式化了我的数据之后,我被挂起了一个错误:
"Error in if (w.dif < tol || itermax == iter) break : missing value where TRUE/FALSE needed".
我假设这个误差是一些潜在变量(例如Soil_Displaced)丢失值的结果,因为这个变量只是在实验中复制的子集中测量的。是否有一种方法可以避免此错误,并处理存在大量缺失值的变量。我在这里附加我的代码和数据集,数据集也可以在这个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)
关于这一问题的任何投入都将是有益的。谢谢!
发布于 2014-08-18 17:26:55
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.潜在变量“治疗”有2个指标,其中一个指标是NA,效果很好。
第二种情况:但是,如果只有一个观察结果,这两个指标都是NA,它就行不通了。
因为你只是用一个指标来测量其他5个潜在变量,而且你说你的数据包含了很多缺失的值,所以第二个可能是这样的。
发布于 2014-03-17 10:53:01
PLSPM将无法处理丢失的值,因此我不得不从已知的观测结果中插入一些缺失的值。当这样做的时候,上面的代码很好用!
https://stackoverflow.com/questions/22094408
复制相似问题