我想请求预测函数的帮助。我希望得到一个与我的数据类似的拟合线abline()。对于不同的系统,我之前使用过这种方法。
mod1<-glm(data$Lengthmm ~ data$qbH.yr.med, family=quasipoisson,
subset = data$Age==1)
xv <- seq(min(data$qbH.yr.med), max(data$qbH.yr.med),
length.out = length(data$Lengthmm)) # poisson regression
yv <- predict(mod1 ~ data$qbH.yr.med, family=quasipoisson, list(x = xv))
UseMethod(“预测”)中的错误: 没有适用于“预测”的方法适用于“公式”类的对象
typeof(mod1)
# [1] "list"
typeof(xv)
# [1] "double"
class(mod1)
# [1] "glm" "lm"
class(xv)
# [1] "numeric"
我不知道为什么它要求“公式”,因为我的因素不属于这个类......我会很乐意帮助,或者想出这个错误。
答案 0 :(得分:2)
正如其他人所评论的那样,很难看出这在过去是如何发挥作用的。这里有几点:
data
参数并仅使用变量的名称(即Lengthhmm
,而不是data$Lengthmm
),尤其是如果您需要{{1和其他后拟合机械工作predict()
,您应该提供拟合的模型和(可选)与原始数据框匹配的predict
参数newdata
(这会屏蔽内置的R函数,尽管它通常 导致问题)制作一个可重复的例子:
data
小配件:
set.seed(101)
dd <- data.frame(Lengthmm=1:10,qbH.yr.med=rpois(10,1),
Age=rep(1,10))
顺便说一句,将mod1 <- glm(Lengthmm ~ qbH.yr.med, family=quasipoisson,
data=dd,
subset = (Age==1))
xv <- with(dd,
data.frame(qbH.yr.med=seq(min(qbH.yr.med), max(qbH.yr.med),
length.out = length(Lengthmm))))
yv <- predict(mod1, newdata=xv)
用于名为family=quasipoisson
的响应似乎有点可疑 - 我通常会认为长度是连续的,因此更可能是正常或对数正常(或正常的一些其他变换)而不是泊松分布或分布与其均值成比例的方差(即&#34;准泊松&#34; ...)
答案 1 :(得分:0)
您正在预测mod1 ~ data$qbH.yr.med
这是类公式的对象。您可以通过注意~
轻松识别此信息。在您的情况下,您希望使用您创建的模型对象,即mod1