【发布时间】: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 中执行此操作的原因。我也很乐意向您提供我正在使用的数据,但这是不可能的,因为它是机密数据。
【问题讨论】: