1

同じ名前の R パッケージの 'plspm' 関数を使用して SEM を評価しようとしています。競合する 2 つのモデルがあります。

モデル 1:

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 番目のモデル (モデル 2) は次のエラーを返します。

check_path(path_matrix) のエラー: 'path_matrix' は下三角行列でなければなりません

私の質問: WHYYYYYY???! 最初の行列を正しい形式にする方法と、2 番目の行列を正しい形式にする方法については、ロジックがわかりません。「下三角行列」を構成するものについて混乱していますか? 以下は、完全なコードと、自分で実行するためのいくつかのデータです。前もって感謝します!

#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...!)
4

1 に答える 1