![](/img/trans.png)
[英]error when fitting random effects model using bam() rather than gam() function in mgcv package, R
[英]Error when serializing an mgcv gam model with jsonlite
我想以一种稳健的方式“序列化”一个带有 jsonlite 的 mgcv gam model,以便稍后在 rpy2 中使用它。
(我所说的健壮的意思是:使用 python 时,我认为 Pickle 并不健壮,因为在每次 Python 更新之后,序列化管道就会中断。这就是为什么我更喜欢使用 Z466DEEC76ECDF5FCA6D38571F6324D54 格式的原因我可能错了)。)
jsonlite 与 RJSONIO 相比做得非常好:mgcv model 的每个细节都被正确序列化,除了一个名为 Environnement 的子变量:
您可以在前两个图像中看到: Environnement: namespace:stats变为Environnement: R_GlobalEnv
我不知道如何处理。 欢迎每一个建议。
这是一个最小的可重现示例:
> library(mgcv)
> n = 40
> x <- 1:n/n # data between [0, 1]
> x2 <- 1:n/n # data between [0, 1]
> x3 <- 1:n/n # data between [0, 1]
> mu <- exp(-400*(x-.6)^2)+5*exp(-500*(x-.75)^2)/3+2*exp(-500*(x-.9)^2)
> y <- mu+0.5*rnorm(n)
> b <- gam(y~s(x)+te(x2, x3))
>
> library(jsonlite)
> json_str = serializeJSON(b)
> new_b = unserializeJSON(json_str)
> mat <- predict.gam(b , type = "terms")
> new_mat <- predict.gam(new_b, type = "terms")
Error in if (object$by != "NA") { :
valeur manquante là où TRUE / FALSE est requis
>
jsonlite 中存在问题:“NA”被序列化为 NA。 (问题不是由不断变化的环境变量引起的)
快速解决:
new_b$smooth[[2]]$by = "NA"
new_b$smooth[[1]]$by = "NA"
new_mat <- predict.gam(new_b, type = "terms")
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.