lapply中的绘图:plot.window(…)中的错误:需要有限的'ylim'值

问题描述 投票:0回答:1

我正在尝试在列表上使用visreg()来生成多个glm预测图以及响应等级上的相关置信区间。

这是我的代码:

library(MASS)
library(ggplot2)
library(visreg)

set.seed(100)

#One Predictor 

b_0 <- 0.1
b_1 <- 0.2


design.matrix <- expand.grid("size" = c(5,10,15,30), "alpha" = seq(0.1, 1, by=0.1))


#Prediction Plots with Confidence Intervals 
lnorm_glog_plt <- lapply(1:nrow(design.matrix), function(row.i) {

  # Get values for current row
  size.i <- design.matrix$size[row.i] #size specified in current row of design matrix
  alpha.i <- design.matrix$alpha[row.i] #alpha specified in current row of design matrix
  x_i <- runif(size.i, 0, 1) #draw a sample of size 'size'
  y.true <- exp(b_0 + b_1*x_i) #produce log gamma data
  y_i <- rgamma(size.i, rate = alpha.i/y.true, shape = alpha.i) #random gamma sample produced according to shape and size values of current row

  #Lognormal Model
  visreg(glm(y_i ~ x_i,
             family = gaussian(link = "log"),
             control = glm.control(maxit=500,
                                   trace = TRUE),
             start = c(0.1, 0.2)), scale = "response")

} )

这是它产生的错误:

plot.window(...)中的错误:需要有限的'ylim'值

仅针对这种特定的glm发生(我已经安装了gamma系列glm并运行)。它也仅在“响应”范围内发生。我尝试手动设置ylim = c(a,b),但是我选择的值使我的绘图看起来不可读。

在这种情况下,有人可以建议解决方法吗?

r plot lapply glm visreg
1个回答
0
投票

[在您不了解要尝试完成的任务的情况下,我建议使用有限的ylim范围。只需将其添加到您的visreg功能:

visreg(glm(y_i ~ x_i,
           family = gaussian(link = "log"),
           control = glm.control(maxit=500,
                                 trace = TRUE),
           start = c(0.1, 0.2)), 
           scale = "response", 
           ylim = c(0,10))
© www.soinside.com 2019 - 2024. All rights reserved.