首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >R- GLMM中的预测

R- GLMM中的预测
EN

Stack Overflow用户
提问于 2018-01-26 21:07:54
回答 1查看 2K关注 0票数 3

当我们使用传统的逻辑回归并在R中进行预测时,例如:

代码语言:javascript
复制
library(dplyr)
n = 300
xx<-c("r1","r2","r3","r4","r5")
xxx<-c("e1","e2","e3")
p=0.3
df1 <- data_frame(
  xx1 = runif(n, min = 0, max = 10),
  xx2 = runif(n, min = 0, max = 10),
  xx3 = runif(n, min = 0, max = 10),
 School = factor(sample(xxx, n,re=TRUE)),
 Rank = factor(sample(xx, n,re=TRUE)),
 yx = as.factor(rbinom(n, size = 1, prob = p))
)
df1
mm<-glm(yx ~ xx1 + xx2 + xx3 + School + Rank,binomial,df1)
n11 = data.frame(School="e3",Rank="r2",xx1=8.58,xx2=8.75,xx3=7.92)

我们使用:

代码语言:javascript
复制
predict(mm, n11, type="response") #No meu caso especifico

你预测(mm,n11)

取决于我们感兴趣的是什么,没问题。

但是当我们使用GLMM时

代码语言:javascript
复制
library(lme4)
mm2 <- glmer(yx ~ xx1 + xx2 + xx3 + Rank +  (Rank | School), data = df1, 
family = "binomial",control = glmerControl(calc.derivs = FALSE))
predict(mm2, n11, type="response") #No meu caso especifico

显示错误

代码语言:javascript
复制
 Error in `contrasts<-`(`*tmp*`, value = contr.funs[1 + isOF[nn]]) : 
contrasts can be applied only to factors with 2 or more levels

我试着这么做

代码语言:javascript
复制
 predict(m2,n11, re.form=(~Rank|School))

这将显示错误

代码语言:javascript
复制
Error in UseMethod("predict") : 
no applicable method for 'predict' applied to an object of class "glmmadmb"

R- GLMM中预测的正确形式是什么?

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2018-01-30 21:07:46

问题是您的模型规范与您提供的新数据的结构不匹配。更具体地说,(自动转换为因子)变量学校和等级的水平只有一个水平,而模型预期有三个水平。它有三个级别的参数,所以如果找不到这三个级别,您就不能使用适当的设计矩阵来计算新的预测。

这就是为什么@Roland在注释中是正确的,并且您必须专门创建一个与训练模型的数据中使用的级别相同的变量的根本原因。

代码语言:javascript
复制
n11 <- data.frame(School=factor("e3", levels = levels(df1$School)), 
                  Rank=factor("r2", levels =levels(df1$Rank)),
                  xx1=8.58,xx2=8.75,xx3=7.92)
票数 6
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/48461980

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档