【问题标题】:Matching lm and optim coefficient estimates for linear model with multiplicative error匹配具有乘法误差的线性模型的 lm 和 optim 系数估计
【发布时间】:2020-12-09 17:33:58
【问题描述】:

这个问题是数学和编程的混合体,但我猜解决方案在于编程方面。

假设我有一个带有乘法误差的线性模型。

我想估计我在 R 中的系数 ab。我在最佳答案 here 和证明中找到了解决方案似乎有道理。我还发现了如何使用异方差稳健标准错误here 进行 OLS。我对两种资源之间结果的解释是,plain-Jane OLS 和异方差稳健 OLS 中系数的估计值保持不变,但 tF-values 和标准错误会有所不同。但是,我不关心那些,只关心系数的估计。如果我要记录原始方程,似乎可以得出这样的结论

然后通过R中的优化函数最小化如下

那么系数的结果应该与lm(y~x)$coefficients 的结果相匹配。我没有看到。到目前为止,这是我的代码。

library(dplyr)
library(wooldridge)

# Get the data ready.

data("saving")

saving <- saving %>% filter(sav > 0, 
                            inc < 20000, 
                            sav < inc)

x = saving$inc
y = saving$sav

# Define LinearLogError and generate coefficient estimates.

LinearLogError = function(coeffs){
  a = coeffs[1]; b = coeffs[2]
  yhat = log(a + b*x)
  return(sum((log(y) - yhat)^2))
}

lmCoeffs = lm(y~x)$coefficients

startCoeffs = c(1, 1)
optimCoeffs = optim(par = startCoeffs, fn = LinearLogError)$par

# Results.

lmCoeffs
optimCoeffs

结果是

> lmCoeffs
(Intercept)           x 
316.1983535   0.1405155 
> optimCoeffs
[1] -237.0579080    0.1437663

所以我的问题是我是否正确理解了解决方案 - 即我的数学是否正确?如果是,那么我需要在 R 中做什么才能看到与lmCoeffs 类似的结果?不是,我不明白什么以及为我的问题找到合适的系数估计值的正确方法是什么?

*已编辑:更正了我的代码中的一个错字。

【问题讨论】:

    标签: r statistics least-squares nonlinear-optimization


    【解决方案1】:

    您正在优化不同的最小二乘,因此没有理由假设它们应该给您相同的系数。

    所以引用你的第一篇文章:

    现在很容易验证??,方括号中的东西, 以?为条件,均值为零,方差为 (???+?)2?2。所以, 这个乘法误差模型只是一个巧妙伪装的线性 具有异方差性的模型。

    这意味着假设同方差(等方差)的正常线性回归不成立。您的第二篇文章显示了另一种在运行正常线性回归后测试您的系数不为零的方法。

    如果您实际上需要对系数进行良好估计,则需要运行linear regression for unequal variances。这绝对不是您在优化函数中所拥有的,因为您不需要除以 yhat,而且我不太确定您如何确保 log(ax + b) 为正数。

    您可以尝试 R 中的 gls 函数,同时指定上面引用中列出的方差结构 (ax^2 + b):

    library(nlme)
    vf <-varConstPower(form =~ inc)
    fit<-gls(sav ~ inc,weights = vf, data = saving)
    fit
    
    Generalized least squares fit by REML
      Model: sav ~ inc 
      Data: saving 
      Log-restricted-likelihood: -641.6587
    
    Coefficients:
    (Intercept)         inc 
    177.8608409   0.1557556
    

    【讨论】:

    • 哦不...除以 yhat 是旧代码的遗留物;它应该只是 sum((log(y) - yhat)^2),但我发布的结果是基于此的。接得好!对不起,但我还是有点困惑。在我提供的第一个链接中,答案是“如果这是模型,那么我们知道 BLUE 是 GLS 估计量。此外,我们知道 OLS 将是无偏的、一致的、渐近正态的。”,这似乎意味着我们不需要同方差来证明 OLS 估计量是无偏的。那么为什么 lmCoeffs 和 optimCoeffs 的系数不匹配呢?
    • 没关系,我想通了。为了真正最小化我的函数,optim 将我的常数拉到负值区域,这使得一些 yhat 值未定义。
    • 您也可以发布您的解决方案作为答案。所以你为我猜的最小二乘优化定义了边界
    猜你喜欢
    • 2021-06-30
    • 2021-06-28
    • 1970-01-01
    • 2020-01-29
    • 1970-01-01
    • 2012-03-09
    • 2014-11-28
    • 2019-09-29
    • 1970-01-01
    相关资源
    最近更新 更多