【问题标题】:AR(1) with Nonlinear Least Squares using Marquardt Algorithm: EViews vs R使用 Marquardt 算法的非线性最小二乘 AR(1):EViews 与 R
【发布时间】:2015-11-27 15:50:45
【问题描述】:

几周前,我posted 一个深思熟虑的问题困扰着模糊的信息。这是我试图纠正原始问题并获得更好答案的尝试。

主要的问题是:我无法使用 EViews 和 R 获得类似的参数估计。

由于我不了解自己的原因,我需要使用 EViews 估计某些数据的参数。这是通过选择 NLS(非线性最小二乘)选项并使用以下公式来完成的:indep_var c dep_var ar(1)

EViews 声称他们估计线性 AR(1) 过程,例如:

Yt = a + B * Xt + ut

其中 ut 错误定义为

ut = p * ut-1 + e

通过使用等价方程(带有一些代数替换):

Yt = (1 - p) * a + p * Yt - 1 + B * Xt - p * B * Xt - 1 + et

此外,this thread over at the EViews forums 建议他们的 NLS 估计是由 Marquardt 算法生成的。

现在,估计 AR(1) 过程的首选 R 函数是 arima。但是,有两个问题:1)估计是最大似然估计; 2) 截距估计is not actually the intercept estimate

因此,我转向了 minpack.lm 包中的 nlsLM 函数。此函数使用 Marquardt 算法来实现非线性最小二乘估计,这应该产生与 EViews 实现相同的结果(或至少非常相似的结果)。

现在是代码。我有一个数据框 (data),其中包含一个自变量和一个因变量,例如由以下代码生成的那个:

data <- data.frame(independent = abs(rnorm(48)), dependent = abs(rnorm(48)))

要估计 EViews 声称估计的方程中的参数(这篇文章中的第 3rd 个),我使用以下命令:

library(minpack.lm)
result <-
nlsLM(dependentB ~ ((1 - theta1) * theta2) + (theta1 * dependentA) +
                    (theta3 * independentB) - (theta1 * theta3 * independentA),
data = list(dependentB = data$dependent[2:48], dependentA = data$dependent[1:47],
   independentB = data$independent[2:48], independentA = data$independent[1:47]),
start = list(theta1 = -10, theta2 = -10, theta3 = -10)
)

不幸的是,nlsLM 输出的估计值与 EViews 输出的估计值并不接近。您知道可能是什么原因造成的吗?还是我的代码错了?

最后,我想说我个人是 R 用户 - 这正是我尝试在 R 而不是 EViews 中执行此操作的原因。我也很乐意向您提供我正在使用的数据,但这是不可能的,因为它是机密数据。

【问题讨论】:

    标签: r eviews


    【解决方案1】:

    看来Eviews规范应该是:

    dep_var  c indep_var ar(1)
    

    【讨论】:

      猜你喜欢
      • 2020-02-14
      • 2013-07-28
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2018-12-27
      • 1970-01-01
      • 1970-01-01
      • 2012-02-26
      相关资源
      最近更新 更多