R 和 EViews 在 AR(1) 估计中的差异

机器算法验证 r 自回归的 软件
2022-03-14 01:02:13

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

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

EViews声称他们估计线性 AR(1) 过程,例如: 其中错误定义为: 通过使用等价方程(有一些代数替换): 此外,这个线程超过在 EViews 论坛上建议他们的 NLS 估计是由 Marquardt 算法生成的。

Yt=α+βXt+ut
ut
ut=ρut1+ε
Yt=(1ρ)α+ρYt1+βXtρβXt1+εt

现在,估计 AR(1) 过程的首选 R 函数是arima. 但是,有两个问题:

  1. 估计是最大似然估计;
  2. 截距估计实际上不是截距估计(根据 RH Shumway 和 DS Stoffer)。

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

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

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

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

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)
)

不幸的是,EViews 输出的估计值nlsLM并不接近 EViews 输出的估计值。你知道是什么原因造成的吗?或者也许我的代码错了?

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

1个回答

您的 NLLS 有四个正交条件,每个变量一个加上常数(类似于标准 OLS 中的正规方程)来求解三个参数()。非线性算法通常具有跨软件的公差参数的异构配置。我可以建议您从方程式中删除以获得准确识别的系统,然后针对 R 测试 Eviews 吗?如果两者都同意,则可能意味着其中一个在过度识别方面存在问题。ρ,β,αXt1