我正在使用 INLA 运行一个贝叶斯模型,该模型昨天还可以工作,今天就不再工作了(多么令人沮丧)。因此,我学习了之前检查过的教程,该教程也有效(https://becarioprecario.bitbucket.io/inla-gitbook/ch-spatial.html#spatial-models-using-stochastic-partial- Differential -equations)。但同样,由于同样的原因,它不再起作用:
\noptions(repos = c(getOption("repos"),\n INLA="https://inla.r-inla-download.org/R/stable"))\ninstall.packages("INLA", dep = TRUE)\n\nlibrary(sp)\nlibrary(gstat)\nlibrary(INLA)\ndata(meuse)\n\n\ncoordinates(meuse) <- ~x+y\nproj4string(meuse) <- CRS("+init=epsg:28992")\n\ndata(meuse.grid)\ncoordinates(meuse.grid) = ~x+y\nproj4string(meuse.grid) <- CRS("+init=epsg:28992")\ngridded(meuse.grid) = TRUE\n\nlibrary(maptools)\nmeuse.bdy <- unionSpatialPolygons(\n as(meuse.grid, "SpatialPolygons"), rep (1, length(meuse.grid))\n)\n\npts <- meuse.bdy@polygons[[1]]@Polygons[[1]]@coords\nmesh <- inla.mesh.2d(loc.domain = pts, max.edge = c(150, 500),\n offset = c(100, 250) )\n\nmeuse.spde <- inla.spde2.matern(mesh = mesh, alpha = 2)\nA.meuse <- inla.spde.make.A(mesh = mesh, loc = coordinates(meuse))\ns.index <- inla.spde.make.index(name = "spatial.field",\n n.spde = meuse.spde$n.spde)\nmeuse.stack <- inla.stack(data = list(zinc = meuse$zinc),\n A = list(A.meuse, 1),\n effects = list(c(s.index, list(Intercept = 1)),\n list(dist = meuse$dist)),\n tag = "meuse.data")\n\nA.pred <- inla.spde.make.A(mesh = mesh, loc = coordinates(meuse.grid))\nmeuse.stack.pred <- inla.stack(data = list(zinc = NA),\n A = list(A.pred, 1),\n effects = list(c(s.index, list (Intercept = 1)),\n list(dist = meuse.grid$dist)),\n tag = "meuse.pred")\n\njoin.stack <- inla.stack(meuse.stack, meuse.stack.pred)\n\nform <- log(zinc) ~ -1 + Intercept + dist + f(spatial.field, model = spde)\n\nm1 <- inla(form, data = inla.stack.data(join.stack, spde = meuse.spde),\n family = "gaussian",\n control.predictor = list(A = inla.stack.A(join.stack), compute = TRUE),\n control.compute = list(cpo = TRUE, dic = TRUE))\nRun Code Online (Sandbox Code Playgroud)\n出现错误:
\nvalidObject(.Object) 中的错误:\ninvalid class \xe2\x80\x9cdsparseModelMatrix\xe2\x80\x9d 对象:超类“xMatrix”未在对象类的环境中定义
\n\n\n*** inla.core.safe:inla.程序已崩溃:重新运行以获得更好的\n初始值。try=1/1 validObject(.Object) 中的错误:无效\n类 \xe2\x80\x9cdsparseModelMatrix\xe2\x80\x9d 对象:超类“xMatrix”未在\n对象类的环境中定义 inla 中的错误.core.safe(formula\n= Formula, family = family,对比=对比, : *** 未能获得足够好的初始值。也许是由于其他原因造成的。
\n
按照此处的建议:validObject(.Object) 中的错误:无效类 \xe2\x80\x9cdsparseModelMatrix\xe2\x80\x9d 对象:超类“Mnumeric”, https: //groups.google.com/g/r-inla-discussion -group/c/Pz7cpf4L1zU \n我重新安装了 R,但它仍然无法工作。\n我还重新安装了 Matrix 软件包,但没有任何结果。
\n你有什么线索吗?
\n乌班图22.04
\nR版本4.3.2(2023-10-31)——“眼洞”
\nINLA 版本 2009 年 9 月 23 日
\n在Matrix < 1.6-2 和Matrix >= 1.6-2之间更改后,您必须从源重新安装MatrixModel。
install.packages("MatrixModels", type = "source")
Run Code Online (Sandbox Code Playgroud)