[英]R 'plspm' error: path_matrix must be a lower triangular matrix (partial least squares path modeling/sem)
我正在嘗試使用同名 R 包中的“plspm”函數來評估 SEM。 我有兩個競爭模型:
型號一:
A<-c(0,0,0)
B<-c(1,0,0)
C<-c(0,1,0)
sat_path=rbind(A,B,C)
innerplot(sat_path)
相對
模型 2:
A<-c(0,1,0)
B<-c(0,0,0)
C<-c(0,1,0)
sat_path=rbind(A,B,C)
innerplot(sat_path)
因此,區別僅在於 A 和 B 之間的箭頭方向。
當我運行代碼時(見下文),第一個模型(模型 1)返回一個答案,而第二個模型(模型 2)返回以下錯誤:
check_path(path_matrix) 錯誤:'path_matrix' 必須是下三角矩陣
我的問題:WHYYYYYY???,我看不到第一個矩陣如何采用正確格式的任何邏輯。 而第二個不能? 我對什么構成“下三角矩陣”感到困惑嗎? 下面是完整的代碼和一些自己運行的數據。 提前致謝!
#Some play data:
Xdat<-rep(c(1,1,0,0,1),300)
XX<-matrix(Xdat,ncol=3,byrow=TRUE)
colnames(XX)<-c("A","B","C")
XX<-as.data.frame(XX)
attach(XX)
### Model 1: ####
pf<-c(0,0,0)
pm<-c(1,0,0)
po<-c(0,1,0)
sat_path=rbind(pf,pm,po)
# plot diagram of path matrix
innerplot(sat_path)
# blocks of outer model
sat_blocks = list(which(names(XX)=="A"), which(names(XX)=="B"), which(names(XX)=="C"))
# vector of modes (reflective indicators)
sat_mod = rep("A", 3)
# apply plspm
satpls = plspm(XX, sat_path, sat_blocks, modes = sat_mod,
scaled = FALSE)
# plot diagram of the inner model
innerplot(satpls)
### Model 2: ####
A<-c(0,1,0)
B<-c(0,0,0)
C<-c(0,1,0)
sat_path=rbind(pf,pm,po)
# plot diagram of path matrix
innerplot(sat_path)
# blocks of outer model
sat_blocks = list(which(names(XX)=="A"), which(names(XX)=="B"), which(names(XX)=="C"))
# vector of modes (reflective indicators)
sat_mod = rep("A", 3)
# apply plspm
satpls = plspm(XX, sat_path, sat_blocks, modes = sat_mod,
scaled = FALSE)
# this ends in an error (or should...!)
我已經弄清楚為什么這是一個問題。 坐在同樣的問題上,無法弄清楚如何解決它。
我在 wiki 上查找了三角矩陣,發現三角矩陣是對角線上有 0 的矩陣。 這意味着要能夠創建模型 2,您只需要碰巧指定因素的順序即可。
型號 2
A<-c(0,1,0)
B<-c(0,0,0)
C<-c(0,1,0)
sat_path=rbing(A,B,C)
而是這樣做: 模型 2:
B<-c(0,0,0)
A<-c(1,0,0)
C<-c(1,0,0)
sat_path=rbing(B,A,C)
相同的模型,但不是三角矩陣。
希望你能弄明白;)
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.