【发布时间】:2018-07-10 09:42:39
【问题描述】:
我正在尝试对我的数据集 (df_22) 中的三个变量 (retweets,media,content) 进行预测,以在泊松、负二项式和零膨胀泊松之间进行选择。三个变量之一是响应变量 (retweets),另外两个是预测变量 (media,content)。
我实现了广义线性模型并且没有问题。
零膨胀泊松数据
library("pscl")
summary( m0 <- zeroinfl(retweets ~ media + content, data=df_22,dist="poisson") )
泊松
summary( m1 <- glm(formula=retweets ~ media + content, data=df_22, family="poisson"(link=log)))
负二项式
library (MASS)
summary( m2 <- glm.nb(retweets ~ media + content, data=df_22) )
但是,当我创建新数据库进行预测时。我检查它的水平。
> levels(df_22$media)
[1] "other" "pic" "pw" "text" "web"
> levels(df_22$content)
[1] "cultura" "employ" "environment" "other" "security" "sport" "transport"
我有问题。就是两列的行不同。
newmedia = c("other","pic","pw","text", "web")
newcontent = c("cultura","employ","environment","other","security","sport","transport")
nd = data.frame(media = newmedia, content = newcontent)
data.frame(media = newmedia, content = newcontent) 中的错误:参数暗示不同的行数:5、7
我应该怎么做才能解决这些问题?
我想解决这个问题,以便能够做出这些预测,以便我可以选择三个模型中的哪一个更适合我的数据。
p0 <- cbind(nd, Count = predict(m0, newdata = nd, type = "count"), Zero = predict(m0, newdata = nd, type = "zero"))
p1 <- cbind(nd, Mean = predict(m1, newdata = nd, type="response"), SE = predict(m1, newdata = nd, type="response", se.fit=T)$se.fit)
p2 <- cbind(nd, Mean = predict(m2, newdata = nd, type="response"), SE = predict(m2, newdata = nd, type="response", se.fit=T)$se.fit)
【问题讨论】:
-
你的 data.frame
nd应该是什么样子?如果你想要所有组合,你可以试试nd<-expand.grid(newmedia,newcontent) names(nd)<-c("media","content")
标签: r multiple-columns prediction glm poisson