繁体   English   中英

R 中的非线性曲线拟合

[英]nonlinear curve fitting in R

我正在研究 R 中的非线性曲线拟合,但我无法弄清楚如何使用变量来约束数据......这是一个例子:

dat<-read.table(text="time y
1 4.62
2 13.55
3 30.82
6 93.97
12 145.93
24 179.93", header = TRUE)
plot(data);lines(data)
model <- nls(y ~ Max * (1-exp(-k * (time - Lag))),data=dat,start=list(Max = 200, k = 0.1, Lag = 0.5))

我想包括 if (time - Lag) < 0, then y = 0 但我一生都无法弄清楚如何去做。

将右手边乘以(time > Lag)

st <- list(Max = 200, k = 0.1, Lag = 0.5)
model <- nls(y ~ (time > Lag) * Max * (1-exp(-k * (time - Lag))), data = dat, start = st)
model
## Nonlinear regression model
##   model: y ~ (time > Lag) * Max * (1 - exp(-k * (time - Lag)))
##    data: dat
##      Max        k      Lag 
## 185.6447   0.1523   1.6016 
##  residual sum-of-squares: 65.06
##
## Number of iterations to convergence: 4 
## Achieved convergence tolerance: 2.016e-07

plot(dat)
lines(fitted(model) ~ time, dat, col = "red")

截屏

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM