r中的指数拟合奇点

时间:2016-03-14 16:38:04

标签: r

我正在尝试在此数据集上拟合双指数函数,但我似乎无法使其收敛。我尝试使用nls2网格搜索获得最佳起点,我也尝试使用nlsLM,但这两种方法都不起作用。有没有人有任何建议?

  

功能:y = a1 * exp(-n1 * t)+ a2 * exp(-n2 * t)+ c

这是代码:

y <- c(1324,1115,1140,934,1013,982,1048,1143,754,906,895,900,765,808,680,731,728,794,706,531,629,629,519,514,516,454,465,630,415,347,257,363,275,379,329,263,301,315,283,354,230,257,196,268,262,236,220,239,255,213,275,273,294,169,257,178,207,169,169,297,
227,189,214,168,263,227,185,220,169,229,174,231,178,141,195,223,258,206,181,200,150,200,169,194,230,162,174,194,225,216,196,213,150,235,231,224,244,161,219,222,210,
186,188,197,177,251,248,223,273,145,257,236,214,194,211,213,175,168,223,192,318,
263,234,163,202,239,189,216,206,185,185,191,340,145,188,305,112,252,213,245,240,196,196,179,235,241,177,196,191,181,240,164,202,201,306,214,212,185,192,178,203,203,239,141,203,190,216,174,219,153,177,223,207,186,213,173,210,191,258,277)
t <- seq(1,length(y),1)

mydata <- data.frame(t=t,y=y)
library(nls2)
fo <- y~a1*exp(-n1*t)+a2*exp(-n2*t)+c
grd <- expand.grid(a1=seq(-12030,1100,by=3000),
              a2=seq(-22110,1900,by=2000),
              n1=seq(0.01,.95,by=0.4),
              n2=seq(0.02,.9,by=0.25),
              c=seq(100,400,by=50))

fit <- nls2(fo, data=allout, start=grd, algorithm='brute-force', control=list(maxiter=100))
fit2 <- nls(fo, data=allout, start=as.list(coef(fit)), control=list(minFactor=1e-12, maxiter=200),trace=F)
  

错误:超出最大迭代次数

但是,如果我使用nlsLM,那么我会在初始参数估计时得到奇点梯度矩阵。

0 个答案:

没有答案