【发布时间】:2026-01-18 23:15:01
【问题描述】:
我想拟合数据并预测更宽 x 范围的 y 值。
假设我有 'iris' 数据集,并使用以下数据从 post 进行预测
library(dplyr)
cc <- iris %>%
group_by(Species) %>%
do({
mod <- nlsLM(Sepal.Length ~ k*Sepal.Width/2+U, start=c(k=10,U=5), data = ., trace=F, control = nls.lm.control(maxiter=100))
pred <- predict(mod, newdata =.["Sepal.Width"])
data.frame(., pred)
})
这是拟合图
我想用更宽的Sepal width 范围来拟合这些数据,这样
new.range<- data.frame(x=seq(2,10,length.out=20))
并修改脚本
pred <- predict(mod, newdata =new.range)
绘制 new.range 拟合
library(ggplot2)
ggplot(cc,aes(y=Sepal.Length,x=Sepal.Width ,col=factor(Species)))+
geom_point()+
facet_wrap(~Species)+
geom_line(aes(x=new.range,y=pred),size=1)
错误(函数(...,row.names = NULL,check.rows = FALSE, check.names = TRUE, : 参数暗示不同的行数: 20, 150
我不明白为什么会出现此错误。我想pred 是从new.range 计算出来的,所以它们应该有相同的长度?
类似的帖子
【问题讨论】:
-
你需要调用
cc$mod而不是mod吗? -
@troh 当我尝试 cc$mod 时,
Error in predict(mod, newdata = new.range) : object 'mod' not found