我想拟合数据并预测更宽x范围的y值。
假设我有虹膜'数据集并使用以下数据进行预测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
计算出来的,所以它们应该有相同的长度?
类似的帖子
答案 0 :(得分:1)
这可以达到你想要的效果。原始问题的原因是,在回归过程中,预测变量的名称为vh
而不是Sepal.width
,并且您的预测根本不会使用x
,因此,您必须执行new.range
之类的操作才能对new.range<- data.frame(Sepal.Width=seq(2,10,length.out=50))
进行预测。
另一个问题是,您必须将new.range
的长度设为50,以便new.range
和pred
适合原始data.frame。< / p>
然后你可以绘制你想要的情节,注意new.range
变成new.range
。
Sepal.Width.1