nls模型奇异梯度的误差

时间:2015-07-24 22:39:58

标签: r

我正在尝试为路面数据运行nls模型,我有不同的部分,我需要运行相同的模型(当然每个部分使用不同的变量) 以下是我的模特

data<-read.csv(file.choose(),header=TRUE)
data
SecNum=data[,1]
t=c()
PCI=c()
t
PCI
for(i in 1:length(SecNum)){
  if(SecNum[i] == SecNum[i+1]){
    tt=data[i,2]
    PCIt=data[i,3]
    t=c(t, tt)
    PCI=c(PCI, PCIt)
  } else {
    tt=data[i,2]
    PCIt=data[i,3]
    t=c(t, tt)
    PCI=c(PCI, PCIt)
    alpha=1
    betha=1
    theta=1
    fit = nls(PCI ~ alpha-beta*exp((-theta*(t^gama))),
       start=c(alpha=min(c(PCI, PCIt)),beta=1,theta=1,gama=1))
    fitted(fit)
    resid(fit)
    print(t)
    print(PCI)
    t= c()
    PCI= c()
  }
}

运行我的模型后,我收到了这样的错误

Error in nls(PCI ~ alpha - beta * exp((-theta * (t^gama))), start =     c(alpha = min(c(PCI,  : 
 singular gradient

我的教授告诉我使用&#34; nlsList&#34;相反,这可能会解决问题。 因为我是R的新人,所以我不知道如何做到这一点。如果有人可以建议我怎么做,我真的很感激。 这是我的数据样本。

    SecNum  t    PCI   AADT     ESAL
    1       962  1  90.46 131333  3028352
    2       962  2  90.01 139682  3213995
    3       962  3  86.88 137353  2205859
    4       962  4  86.36 137353  2205859
    5       962  5  84.56 137353  2205859
    6       962  6  85.11 137353  2205859
    7       963  1  91.33  91600  3726288

0 个答案:

没有答案