我正在使用R中的plspm
包来模拟信息安全风险评估。但是,当我运行分析时,出现以下错误:
if(w_dif< specs $ tol || iter == specs $ maxiter)中断的错误: 缺少需要TRUE / FALSE的值
这是我的代码:
library(dplyr)
library(plspm)
risk <- tbl_df(read.csv("case2.csv", stringsAsFactors=F))
risk[is.na(risk)] <- 0
#Rows construction
Env <- c(0,0,0,0,0,0,0,0,0)
Malc <- c(0,0,0,0,0,0,0,0,0)
Phy <- c(1,0,0,0,0,0,0,0,0)
Knowledge <- c(0,0,0,0,0,0,0,0,0)
Hygiene <- c(1,0,1,0,0,0,0,0,0)
Capacity <- c(0,1,0,1,0,0,0,0,0)
Legal <- c(0,0,0,1,0,0,0,0,0)
Malf <- c(1,1,0,0,0,0,0,0,0)
Risk <- c(1,1,1,1,1,1,1,1,0)
#Row Binding
foot_path <- rbind(Env, Malc, Phy, Knowledge, Hygiene, Capacity, Legal, Malf, Risk)
#Column Names
colnames(foot_path) <- rownames(foot_path)
riskarranged <- select(risk, X1, X2, X3, X4, X6, X11,X12,X13,X14,X15,X20,X21,X22,X24,X25,X27,X28,X29,X31,X32,X5,X9,X10,X16,X19,X23,X26,X7,X8,X17,X30,X18,Y1,Y2)
foot_blocks <- list(1:5, 6:20, 21:24, 25:27, 28:29,30,31,32,33:34)
plspm(riskarranged, foot_path, foot_blocks)
riskarranged
没有任何NA。在这里完全失去了。帮助将不胜感激。
这是指向数据文件的链接:
https://www.dropbox.com/s/ddhyz931c3vg0xu/case2.csv?dl=0
答案 0 :(得分:3)
好吧,我联系了plspm
包的作者Gaston Sanchez,这就是他要说的: -
该错误与plspm算法的迭代部分有关,无法收敛。出现此错误的最常见原因是存在具有全部或几乎所有常量值的变量。
果然,我有三个变量在整个列中具有相同的观察值。删除这些后,我能够运行该模型。希望这有助于某人。