我想使用以下方程计算数据的回归系数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)
但是我不知道如何包括CCD_ 3和CCD_。PLease帮助
如果您想执行此回归:
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)
根据您的问题,看起来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
和b
中的误差估计等)将毫无意义。
最后,您的数据集是病态的,因为对于您的几个案例,要么是x1 = 1
,要么x2 = 1
,要么两者都有。在这种情况下为CCD_ 24或CCD_。此外,在x1 > 1
或x2 > 1
。在这些情况下,log(...)
是未定义的。