2

几周前,我发布了一个深思熟虑的问题,其中包含模糊的信息。这是我试图纠正原始问题并获得更好答案的尝试。

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

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

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

Y t = a + B * X t + u t

其中 u t错误定义为

u t = p * u t-1 + e

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

Y t = (1 - p) * a + p * Y t - 1 + B * X t - p * B * X t - 1 + e t

此外,EViews 论坛上的这个线程表明他们的 NLS 估计是由 Marquardt 算法生成的。

现在,估计 AR(1) 过程的首选 R 函数是arima. 但是,有两个问题:1)估计是最大似然估计;2)截距估计实际上不是截距估计

因此,我转向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 中执行此操作的原因。我也很乐意向您提供我正在使用的数据,但这是不可能的,因为它是机密数据。

4

1 回答 1

0

似乎 Eviews 规范应该是:

dep_var  c indep_var ar(1)
于 2015-11-27T07:50:45.510 回答