1

抱歉,我的 R 似乎已经很生锈了,因为我上次来这里。随着时间的推移,我有几个系列的比率数据,如下所示:

years <- c(1890, 1891, 1894, 1896, 1899, 1905, 1917)
ratio <- c(0.8,   0.9,  0.5, 0.25,  0.1, 0.02,    0)
plot(ratio~years)

叠加在散点图上,我需要一条尊重比率数据的 0 到 1 限制的平滑线。直截了当lines(predict(loess(ratio~years))~years)有点太生涩了,我尝试了一些方法来平滑它,有时我的真实数据会低于零。我在这里需要什么功能?

4

1 回答 1

4

看起来你的模型是指数衰减的。您可以使用非线性最小二乘回归估计这一点,使用nls()

fit <- nls(ratio ~ exp(-b*(years-1890)), start=list(b=0.5))
fit

Nonlinear regression model
  model:  ratio ~ exp(-b * (years - 1890)) 
   data:  parent.frame() 
     b 
0.2051 
 residual sum-of-squares: 0.05669

Number of iterations to convergence: 5 
Achieved convergence tolerance: 5.016e-06 

现在绘制结果:

plot(ratio~years, ylim=c(0,1))
newdata <- data.frame(years=1890:1917)
lines(newdata$years, predict(fit, newdata=newdata), col="red")

在此处输入图像描述

于 2013-04-03T07:04:08.887 回答