主要问题是:我无法使用 EViews 和 R 获得类似的参数估计。
由于我不了解自己的原因,我需要使用 EViews 估计某些数据的参数。这是通过选择 NLS(非线性最小二乘)选项并使用以下公式来完成的:indep_var c dep_var ar(1)
EViews声称他们估计线性 AR(1) 过程,例如: 其中错误定义为: 通过使用等价方程(有一些代数替换): 此外,这个线程超过在 EViews 论坛上建议他们的 NLS 估计是由 Marquardt 算法生成的。
现在,估计 AR(1) 过程的首选 R 函数是arima. 但是,有两个问题:
- 估计是最大似然估计;
- 截距估计实际上不是截距估计(根据 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 中执行此操作的原因。我也很乐意向您提供我正在使用的数据,但这是不可能的,因为它是机密数据。