如何用exp和ln计算R中的回归系数?

时间:2013-12-24 14:00:34

标签: r regression

我想使用以下公式为我的数据计算回归系数ab

y=exp(a * 1 - t  + b * 1 - t )

和这个数据(例子):

         t = c(1,2,5,4,8,7,5,1,2,5,4,1,2,1,5)
         t1 = c(1,2,4,4,5,3,7,5,6,8,7,1,2,1,5)

我知道我们可以使用

           lm(y ~ t + t2)

但我不知道如何加入expln。请帮忙

2 个答案:

答案 0 :(得分:3)

如果您想执行此回归:

y = exp(a * ln(1 - t / h) + b * ln(1 - t / t1))

首先在双方都申请log

log(y) = a * ln(1 - t / h) + b * ln(1 - t / t1)

如果有帮助,请使用辅助变量:

z  <- log(y)
w1 <- log(1 - t / h)
w2 <- log(1 - t / t1)
regr <- lm(z ~ w1 + w2)

答案 1 :(得分:2)

根据您的问题,tt1h都是独立变量,y是因变量,ab是模型的参数。使用定义x1 = t/hx2=t/t1,您的模型公式等同于:

y = (1-x1)^a * (1-x2)^b

在参数a和b中显然是非线性的。在这种情况下,使用非线性最小二乘法nls(...)通常要好得多。为什么呢?

最小二乘回归基于几个假设,其中最重要的是 y中的误差通常分布为均值0和常数方差。如果y属实,那么log(y)肯定不会这样。因此,使用log(y)作为自变量运行回归会为您提供ab的数字,但会显示拟合的统计数据(例如,a和{{中的误差估计值1}}等等将毫无意义。

最后,您的数据集在某种意义上是病态的,对于您的几种情况,bx1 = 1或两者都有。在这种情况下x2 = 1log(1-x1) = -Inf。此外,有几种情况log(1-x2) = -Infx1 > 1。在这些情况下,x2 > 1未定义。