我正在运行以下代码:
c.model<-glm(cars$speed~cars$dist, family=gaussian)
summary(c.model)
c.x<-seq(0,1,0.01)
c.x
c.y<-predict.glm(c.model,as.data.frame(c.x), type="response")
c.y
plot(cars$dist)
lines(c.x,c.y)
Run Code Online (Sandbox Code Playgroud)
并收到错误消息,“xy.coords(x, y) 中的错误:'x' 和 'y' 长度不同”。我不太确定是什么导致了这个错误。
在匹配模型中使用的变量名称和预测期间使用的变量名称时,您需要更加小心。您得到的错误是因为 preidct 函数中 data.frame 中的名称与模型中术语的名称不匹配,因此您实际上并未预测新值。问题是predict本质上是从
model.frame(~cars$dist, data.frame(dist=c.x))
Run Code Online (Sandbox Code Playgroud)
因此,因为您cars$dist的公式中明确存在,所以不会从您的 newdata 参数中获取“免费”符号。将其与来自的结果进行比较
model.frame(~dist, data.frame(dist=c.x))
Run Code Online (Sandbox Code Playgroud)
这一次,dist没有特别绑定到cars变量,可以在 newdata data.frame 的上下文中“解析”。
此外,您要确保将 dist 值保持在相同的范围内。例如。
c.model <- glm(speed~dist, data=cars, family=gaussian)
summary(c.model)
c.x <- seq(min(cars$dist),max(cars$dist),length.out=101)
c.y <- predict.glm(c.model,data.frame(dist=c.x), type="response")
plot(speed~dist, cars)
lines(c.x,c.y)
Run Code Online (Sandbox Code Playgroud)

在这里,我们预测观察值的范围而不是 0-1,因为实际上没有距离值小于 1。
| 归档时间: |
|
| 查看次数: |
5017 次 |
| 最近记录: |