曲线拟合到自定义功能

时间:2018-11-30 21:54:26

标签: r

我正在尝试创建一些自定义增长函数,并将增长函数拟合到数据中。

测试数据:

x_yrs<-c(2005, 2006, 2007, 2008, 2009, 2010, 2011, 2012, 2013, 2014, 
 2015, 2016, 2017)
y<-c(1.89, 0.34, 0.47, 2.46, 2.13, 7.49, 47.24, 117.84, 202.8, 322.7, 
540.72, 744.22, 1148.7)

第一个自定义功能:

我不得不div购买我认为将使该功能正常工作的最大潜力(上渐近线)。

fun1 <- function(a, x_yrs, b){
    result <-(1 / (1+exp(a*x_yrs +b)))
    return(result)
}
y <- y/110000
x_yrs <- x_yrs-2004
MaxPop<-110000
my_model <- nls(y ~ fun1(a, x_yrs, b),start=list(a=-0.005,b=-0.05))
plot(x_yrs,y*MaxPop,xlim = c(0, 40), ylim = c(0, MaxPop))
Years<-seq(2005, 2050, 1)-2004
alpha <- coef(my_model)
curve(fun1(alpha[1], x, alpha[2])*MaxPop, add = T, col = "blue") 

我要尝试的下一个功能是:

gompertz_LimitSet <- function(t, beta, k) {
    alpha<-1#UpperLimit
    #' @param t time
    #' @param x size
    #' @param alpha upper asymptote
    #' @param beta growth displacement
    #' @param k growth rate 
    #' 
    result <- alpha * exp(-beta * exp(-k * t));
    return(result)
 }

 y <- y/110000
 x_yrs <- x_yrs-2004
 plot(x_yrs,y)
 my_model <- nls(y ~ gompertz_LimitSet(x_yrs, beta, k),start=list(t=1, beta=1, k=0.5))

但是此功能在尝试拟合时出现以下错误。

Error in nlsModel(formula, mf, start, wts) : 
    singular gradient matrix at initial parameter estimates

您知道如何解决此问题吗?或正确吗?

谢谢

0 个答案:

没有答案