R是否具有“predict.glmList”功能?

时间:2016-05-19 13:40:37

标签: r

根据分组因素对数据进行分区后,有一个R函数(通过nlme软件包)lmList包含一个具有公共模型的lm对象列表。这有很多模型通常具有的有用方法,例如预测。 glm是否有相同的功能?

我确实看到glmlist,但与lmlist不同,它似乎更像是一个花哨的容器,没有像预测那样的方法。

即。是否有相当于glm的以下代码?

library(nlme)
fit <- lmList(disp ~ hp | vs, mtcars)
predict(fit,mtcars)

2 个答案:

答案 0 :(得分:2)

lmList包中的lme4版本也可以处理GLM。它可能尚未针对此用例进行广泛测试,因此请小心/报告您在https://github.com/lme4/lme4/issues/找到的任何问题...

e.g。

library(lme4)
fit <- lmList(round(disp) ~ hp | vs, family=poisson, mtcars)
predict(fit,mtcars)

给出线性预测器标度上的预测值。令人困惑的是,predict(fit)给出了响应等级的拟合值,即

all.equal(c(predict(fit)),c(exp(predict(fit,mtcars))))

TRUE(在这种情况下,只要模型使用日志链接)。 predict(fit,mtcars,type="response") 默默地忽略type规范...

答案 1 :(得分:1)

引用vcdExtra的文档,似乎没有一个:

  

glmlist创建一个glmlist对象,其中包含一个带有名称的glm对象列表。 [...]

     

目的是提供对象类以便于模型比较,提取,总结和   绘制模型组件等,可能使用lapply或类似。

但是,您可以这样做,并根据lapply定义您自己的预测方法:

library(vcdExtra)

# simulate data
x <- rnorm(100)
y <- as.numeric(rnorm(100)>0)

fit <-  glm(y~x, family=binomial(link=logit))
gl <- glmlist(fit,fit)

# define method
predict.glmlist <- function(object, ...){

  expr <- substitute(predict.glm(obj,...))
  lapply(object, function(obj) eval(expr))

}

# use method
predict(gl)
predict(gl, type="response")