R 巴尔的摩数据中空间相关数据簇的异构回归模型及其错误信息
我想为空间相关数据的集群拟合异质回归模型。我的数据是spdep包中的巴尔的摩。当我运行这个模型时,我收到了这个错误消息,我无法理解它。有人能帮我吗R 巴尔的摩数据中空间相关数据簇的异构回归模型及其错误信息,r,R,我想为空间相关数据的集群拟合异质回归模型。我的数据是spdep包中的巴尔的摩。当我运行这个模型时,我收到了这个错误消息,我无法理解它。有人能帮我吗 library(spdep) data("baltimore") str(baltimore) N <- S <- 211 ## pairwise matrix of distance distMat <- matrix(nrow = nrow(baltimore), ncol = nrow(
library(spdep)
data("baltimore")
str(baltimore)
N <- S <- 211
## pairwise matrix of distance
distMat <- matrix(nrow = nrow(baltimore), ncol = nrow(baltimore))
for (i in 1:nrow(distMat)) {
for (j in i:nrow(distMat)) {
distMat[i, j] <- distMat[j, i] <-
sqrt(sum((baltimore[i, c("X", "Y")] - baltimore[j, c("X", "Y")]))^2)
}
}
## normalization
distMat <- distMat / max(distMat) * 10
library(nimble)
SLMMCode <- nimbleCode({
for (i in 1:S) {
y[i] ~ dnorm(mu_y[i], tau = tau_y)
mu_y[i] <- b[i, 1] * x1[i] + b[i, 2] * x2[i] +
b[i, 3] * x3[i] + b[i, 4] * x4[i] + b[i, 5] * x5[i] +
b[i, 6] * x6[i] + b[i, 7] * x7[i] + b[i, 8] * x8[i] +
b[i, 9] * x9[i] + b[i, 10]* x10[i] + b[i,11] * x11[i] +
b[i,12] * x12[i]+ b[i,13] * x13[i] + W[i]
b[i, 1:13] <- bm[latent[i], 1:13]
latent[i] ~ dcat(zlatent[1:M])
}
for (j in 1:S) {
for (k in 1:S) {
H[j, k] <- exp(-Dist[j, k]/phi)
}
}
W[1:S] ~ dmnorm(mu_w[1:S], prec = prec_W[1:S, 1:S])
prec_W[1:S, 1:S] <- tau_w * inverse(H[1:S, 1:S])
phi ~ dunif(0, D)
tau_w ~ dgamma(1, 1)
mu_w[1:S] <- rep(0, S)
for (k in 1:M) {
bm[k, 1:13] ~ dmnorm(mu_bm[1:13], cov = var_bm[1:13, 1:13])
}
var_bm[1:13, 1:13] <- 1/tau_bm * diag(rep(1, 13))
tau_bm ~ dgamma(1, 1)
for (j in 1:13) {
mu_bm[j] ~ dnorm(0, 1)
}
zlatent[1:M] <- stick_breaking(vlatent[1:(M - 1)])
for (j in 1:(M - 1)) {
vlatent[j] ~ dbeta(1, alpha)
}
alpha ~ dgamma(1, 1)
tau_y ~ dgamma(1, 1)
})
SLMMdata <- list(y = baltimore$PRICE, x1 = baltimore$NROOM,
x2 = baltimore$DWELL,x3 = baltimore$NBATH,
x4 = baltimore$PATIO,x5 = baltimore$FIREPL,
x6 =baltimore$AC, x7 = baltimore$BMENT,
x8 =baltimore$NSTOR, x9 = baltimore$GAR,
x10 =baltimore$AGE, x11=baltimore$CITCOU,
x12 =baltimore$LOTSZ,x13=baltimore$SQFT,
Dist = distMat)
SLMMConsts <- list(S = 211, M = 50, D = 100)
SLMMInits <- list(tau_y = 1,
latent = rep(1, SLMMConsts$S),
alpha = 2,
tau_bm = 1,
mu_bm = rnorm(13),
phi = 1,
tau_w = 1,
vlatent = rbeta(SLMMConsts$M - 1, 1, 1))
mcmc.out <- nimbleMCMC(code = SLMMCode, data = SLMMdata,
constants = SLMMConsts,
inits = SLMMInits,
monitors = c("bm","b","phi", "tau_w",
"alpha", "latent", "tau_y"),
niter = 50000,
thin = 10, nchains = 1, setSeed = TRUE)
## discard the first 2000 burn-in samples
library(coda)
pos_mcmc <- as.mcmc(mcmc.out[-c(1:2000),])
库(spdep)
数据(“巴尔的摩”)
str(巴尔的摩)
N
defining model...
building model...
setting data and initial values...
running calculate on model (any error reports that follow may simply reflect missing values in model variables) ... Error in solve.default(x) :
Lapack routine dgesv: system is exactly singular: U[49,49] = 0
checking model sizes and dimensions... This model is not fully initialized. This is not an error. To see which variables are not initialized, use model$initializeInfo(). For more information on model initialization, see help(modelInitialization).
checking model calculations...
Error in solve.default(x) :
Lapack routine dgesv: system is exactly singular: U[49,49] = 0
Error in solve.default(x) :
Lapack routine dgesv: system is exactly singular: U[49,49] = 0
Note: cannot calculate logProb for node prec_W[1:211, 1:211] .
Error in chol.default(model$prec_W[1:211, 1:211]) :
the leading minor of order 1 is not positive definite
Note: cannot calculate logProb for node lifted_chol_oPprec_W_oB1to211_comma_1to211_cB_cP[1:211, 1:211] .
NAs were detected in model variables: prec_W, bm, logProb_bm, lifted_chol_oPprec_W_oB1to211_comma_1to211_cB_cP, W, logProb_W, b, mu_y, logProb_y.
model building finished.
compiling... this may take a minute. Use 'showCompilerOutput = TRUE' to see C++ compilation details.
Error: Failed to create the shared library. Run 'printErrors()' to see the compilation errors.
> ## discard the first 2000 burn-in samples
> library(coda)
Warning message:
package ‘coda’ was built under R version 4.0.4
> pos_mcmc <- as.mcmc(mcmc.out[-c(1:2000),])
Error in as.mcmc(mcmc.out[-c(1:2000), ]) : object 'mcmc.out' not found