非线性回归的指数(在 R 中)?

机器算法验证 r 非线性回归
2022-03-26 02:49:15

我有一个非线性关系,我想找到确定指数值的最佳方法γ在以下回归中:

y=βxγ

我最好在 R 中执行此操作。

1个回答

为了得到答案(尽管它可能不会给 whuber 的评论增加太多):

我想找到确定指数值的最佳方法γ在以下回归中:y=βxγ

观察到的y实际上不会βxγ; 如果是的话就不需要统计了。

我们可能会说E(y)=βxγ,例如,但这还不够。

为了解决这个问题,我们通常会考虑分布y给定x,并描述分布 - 或至少描述分布的参数,例如至少平均值和方差 - 与x.

特别是,我们将(至少)考虑误差项进入关系的方式,例如:

y=βxγ+ε, 或者

y=βxγ×η

如果它是第一种形式,并且(零均值)误差项与Var(ε)常数,那么我们将使用普通的非线性最小二乘法来估计βγ.

如果是第二种形式,并且误差项是独立的,η是积极的(这样log(η)是零均值和恒定方差),那么我们可以取对数并估计βγ使用线性回归。

另一方面,如果我们假设η是伽马分布的,那么我们可能会拟合带有对数链接的伽马家族 GLM。

在某些情况下,指定一个错误项根本没有意义。考虑以下情况yPoisson(βxγ); 规范E(y)=βxγ是正确的,但是要从那里处理事情,我们最好将模型保留为yPoisson(βxγ). 同样,这将通过带有日志链接的 GLM 进行安装。

还有许多其他的可能性。

如果您确实需要非线性回归选项(加性误差、恒定方差),则可以nls在 R中使用。

这与 的工作方式略有不同lm,因为lm可以简单地为每个预测变量假设一个系数。相比之下,nls需要我们指定模型的形式包括参数。


这是一个例子(数据来自 R。它不一定适合这个模型)。

carsfit=nls(dist~beta*speed^gamma,data=cars,start=list(beta=exp(-.73),gamma=1.6))

这些start值来自对 y 和 x 变量的对数的 OLS 回归。

 summary(carsfit)

Formula: dist ~ beta * speed^gamma

Parameters:
      Estimate Std. Error t value Pr(>|t|)    
beta    0.5897     0.3357   1.757   0.0853 .  
gamma   1.5493     0.1920   8.068 1.74e-10 ***
---
Signif. codes:  0 ‘***’ 0.001 ‘**’ 0.01 ‘*’ 0.05 ‘.’ 0.1 ‘ ’ 1

Residual standard error: 15.06 on 48 degrees of freedom

Number of iterations to convergence: 3 
Achieved convergence tolerance: 4.979e-07

在此处输入图像描述