0

我正在尝试使用分段SEM 包在结构方程建模 (SEM) 框架内解释空间自相关。

不久前,spdep包被拆分为两个包,即spded和spatialreg。在此拆分之前,考虑空间自相关的 psem 运行正常(据我所知)。现在,这似乎不再发生了。似乎该问题可能与新版本的 spded/spatialreg 包中的不同类名有关(例如,hereherehere等)。

以下是使用我的一小部分数据的代表:

library(piecewiseSEM)
library(spatialreg)
library(dplyr)
library(spdep)

# #reproduce just 10 rows from my data
mydata <- data.frame(lat=c(30.12,29.88,30.12,29.12,29.88,30.12,25.88,26.12,26.38,26.62),
                     long=c(-25.12,-25.38,-25.38,-25.62,-25.62,-25.62,-25.88,-25.88,-25.88,-25.88),
                     resp1=c(0.6130,0.5990,0.6410,0.5318,0.5551,0.6280,0.4611,0.5046,0.5400,0.5491),
                     resp2=c(23.04,22.69,20.93,24.15,18.74,21.28,17.01,15.20,16.08,16.68),
                     ind1=c(0.6159,0.5782,0.6339,0.5313,0.5774,0.6102,0.4174,0.4816,0.5114,0.5269),
                     ind2=c(1674,1351,1618,1518,1311,1483,1167,1199,1255,1380),
                     ind3=c(917.4,736.7,896.5,735.2,714.7,800.9,589.8,613.1,662.1,743.5))

# #create spatial weighting matrix
dfxy  <- mydata %>% dplyr::select(lat,long)
nb_my <- tri2nb(dfxy)
plot(nb_my, dfxy, col="green", pch=20, cex=1)
listwgab <- nb2listw(nb_my)

# #try single lagsarlm
m1 <- spatialreg::lagsarlm(resp2 ~ ind1 + ind2, mydata, listwgab, tol.solve=1e-11)
summary(m1)

# #now lagsarlm within a psem
sem1 <- psem(
  spatialreg::lagsarlm(resp2 ~ ind1 + ind2, mydata, listwgab, tol.solve=1e-11),
  spatialreg::lagsarlm(resp1 ~ resp2 + ind3, mydata, listwgab, tol.solve=1e-11),
  data = mydata)
summary(sem1)

m1 是一个运行良好的单一模型。

sem1 不起作用。错误消息是: Error: Unsupported model class in model list: Sarlm. See 'help(piecewiseSEM)' for more details. 但是,piecewiseSEM 文档说支持 sarlm,所以它可能只是与“s”(“sarlm”与“Sarlm”)的大写有关的问题?

任何想法?我希望这个问题不是太容易或太傻。

非常感谢。

4

0 回答 0