我想使用以下公式为我的数据计算回归系数a
和b
:
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)
但我不知道如何加入exp
和ln
。请帮忙
答案 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)
根据您的问题,t
,t1
和h
都是独立变量,y
是因变量,a
和b
是模型的参数。使用定义x1 = t/h
和x2=t/t1
,您的模型公式等同于:
y = (1-x1)^a * (1-x2)^b
在参数a和b中显然是非线性的。在这种情况下,使用非线性最小二乘法nls(...)
通常要好得多。为什么呢?
最小二乘回归基于几个假设,其中最重要的是 y中的误差通常分布为均值0和常数方差。如果y
属实,那么log(y)
肯定不会这样。因此,使用log(y)
作为自变量运行回归会为您提供a
和b
的数字,但会显示拟合的统计数据(例如,a
和{{中的误差估计值1}}等等将毫无意义。
最后,您的数据集在某种意义上是病态的,对于您的几种情况,b
或x1 = 1
或两者都有。在这种情况下x2 = 1
或log(1-x1) = -Inf
。此外,有几种情况log(1-x2) = -Inf
或x1 > 1
。在这些情况下,x2 > 1
未定义。