Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/reporting-services/3.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
R 带乘性误差线性模型的lm和optim系数估计的匹配_R_Statistics_Least Squares_Nonlinear Optimization - Fatal编程技术网

R 带乘性误差线性模型的lm和optim系数估计的匹配

R 带乘性误差线性模型的lm和optim系数估计的匹配,r,statistics,least-squares,nonlinear-optimization,R,Statistics,Least Squares,Nonlinear Optimization,这个问题是数学和编程的混合体,但我猜解决方案在于编程方面 假设我有一个带乘法误差的线性模型 我想估算R中的系数a和b。我在上面的答案中找到了答案,证明似乎是有意义的。我还发现了如何使用异方差稳健标准误差进行OLS。我对这两种资源之间结果的解释是,普通Jane OLS和异方差稳健OLS中系数的估计值保持不变,但t值、F值和标准误差将不同。然而,我不关心这些,只关心系数的估计。如果我把原始方程记录下来 然后通过R中的优化函数最小化以下内容 然后,系数的结果应与lm(y~x)$系数的结果相匹配。我没看

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

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

我想估算R中的系数a和b。我在上面的答案中找到了答案,证明似乎是有意义的。我还发现了如何使用异方差稳健标准误差进行OLS。我对这两种资源之间结果的解释是,普通Jane OLS和异方差稳健OLS中系数的估计值保持不变,但t值、F值和标准误差将不同。然而,我不关心这些,只关心系数的估计。如果我把原始方程记录下来

然后通过R中的优化函数最小化以下内容

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

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

所以我的问题是我是否正确地理解了答案,也就是说,我的数学正确吗?如果是,那么我需要在R中做什么才能看到与
lmcoefs
类似的结果?在not中,我还不明白什么,找到适合我问题的系数估计的正确方法是什么


*编辑:更正了我代码中的一个输入错误。

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

引用你的第一篇文章:


现在很容易验证,哦,不……除以yhat是旧代码的遗迹;它应该是sum((log(y)-yhat)^2),但我发布的结果就是基于这个。抢手货对不起,我还是有点困惑。在我提供的第一个链接中,答案是“如果这是模型,那么我们知道蓝色是GLS估计量。而且,我们知道OLS将是无偏的、一致的、渐近正态的。”这似乎意味着我们不需要同态性来证明OLS估计量是无偏的。那么为什么lmcoefs和optimcoefs的系数不匹配呢?没关系,我算出来了。为了真正最小化我的函数,optim将我的常数拉到了负区域,这使得一些yhat值未定义。您也可以将您的解决方案作为答案发布。我想你为最小二乘优化定义了边界
> lmCoeffs
(Intercept)           x 
316.1983535   0.1405155 
> optimCoeffs
[1] -237.0579080    0.1437663