在 R 中使用 nls 时,xy.coords 中的线函数出现错误
我正在 R 中运行非线性回归,其初始输出看起来不错。但是,当我尝试使用线函数绘制值时,线函数本身会给出错误“xy.coords(x, y) 中的错误:'x' 和 'y' 长度不同”。 x 和 y 数据的长度是相同的,而且我知道它具体来自lines 函数,因为数据绘制但线没有绘制。如何正确绘制线条?
通常我的代码如下所示:
x = c(400,240,230,130,117,28)
y = c(0,15,35,85,110,135)
df = data.frame(x,y)
plot(x,y,ylim=rev(range(y)),ylab='y',xlab='x',las=1)
m=nls(x~Y0*exp(-a*y),data=df,start=list(Y0=415,a=0.015))
b=0:415
y=predict(m,list(x=b))
lines(b,y,type="l",col="blue")
m
我现在唯一的问题是线不会绘制(点会绘制)。回归本身也运行良好,但我想知道lines函数的上游是否有某些东西导致绘制回归线的错误。
我怀疑你需要
list(y=b)
而不是 list(x=b)
。
您的
x
是目标值(位于nls
回归的左侧),y
是相关值(右侧),predict
通常将其newdata=
参数视为a因变量列表/框架。
df = data.frame(x = c(400,240,230,130,117,28), y = c(0,15,35,85,110,135))
m <- nls(x ~ Y0*exp(-a*y), data = df, start = list(Y0 = 415, a = 0.015))
b <- 0:415
ynew <- predict(m, list(y = b))
lines(b, ynew, type = "l", col = "blue")