【问题标题】:non linear power regression in RR中的非线性幂回归
【发布时间】:2014-05-12 10:17:13
【问题描述】:

我有一个类似的问题,我想在 R 中计算非线性回归,但我得到一个错误。

这是我的代码:

f <- function(x1,x2,x3,a,b1,b2,b3) {a * (x1^b1) * (x2^b2) * (x3^b3) }

# generate some data
x1 <- c(9,9,12,12,12,16,9,16)
x2 <- c(0.8,1,0.8,1,1.2,1.2,1.2,1)
x3 <- c(0.14,0.12,0.16,0.14,0.12,0.16,0.16,0.14)
y <- c(304,284,435,489,512,854,517,669)
dat <- data.frame(x1,x2,x3, y)

# fit a nonlinear model
fm <- nls(y ~ f(x1,x2,x3,a,b1,b2,b3), data = dat, start = c(a=0, b1=0,b2=0,b3=0))

# get estimates of a, b
co <- coef(fm)

我得到了这个错误:

nlsModel 中的错误(公式、mf、start、wts): 初始参数估计处的奇异梯度矩阵

我该怎么办?

谢谢!

【问题讨论】:

    标签: r regression linear-regression


    【解决方案1】:

    你需要好的起始值:

    #starting values from linearization
    fit0 <- lm(log(y) ~ log(x1) + log(x2) +log(x3), data=dat)
    
    # fit a nonlinear model
    fm <- nls(y ~ f(x1,x2,x3,a,b1,b2,b3), data = dat, 
              start = list(a=exp(coefficients(fit0)[1]), 
                        b1=coefficients(fit0)[2],
                        b2=coefficients(fit0)[3],
                        b3=coefficients(fit0)[4]))
    summary(fm)
    # Parameters:
    #     Estimate Std. Error t value Pr(>|t|)    
    # a  265.19567  114.37494   2.319 0.081257 .  
    # b1   0.97277    0.08186  11.884 0.000287 ***
    # b2   0.97243    0.12754   7.624 0.001589 ** 
    # b3   0.91938    0.17032   5.398 0.005700 ** 
    

    应遵循为非线性模型推荐的常用诊断方法。

    另请注意,起始值作为列表提供给nls。

    【讨论】:

      【解决方案2】:

      或者根本没有起始值。然后 nls 将使用它的“非常便宜的猜测”,它适用于这个数据集。

      nls(y ~ f(x1,x2,x3,a,b1,b2,b3), data = dat)
      

      顺便说一句 - 至少在 3.1.0 中 - 起始值是“命名列表或命名数字向量”,因此您可以使用

      sVec <- coef(lm(log(y) ~ log(x1)+log(x2)+log(x3), dat))
      sVec[1] <- exp(sVec[1])
      names(sVec) <- c("a", "b1", "b2", "b3")
      nls(y ~ f(x1,x2,x3,a,b1,b2,b3), data = dat, start = sVec)
      

      【讨论】:

        猜你喜欢
        • 2011-10-14
        • 2015-01-02
        • 1970-01-01
        • 1970-01-01
        • 2012-01-12
        • 2016-07-09
        • 2012-07-24
        • 1970-01-01
        • 2022-01-11
        相关资源
        最近更新 更多