几周前,我posted一个经过深思熟虑的问题困扰着模糊的信息。这是我尝试纠正原始问题并获得更好的答案。
主要问题是:我无法使用EViews和R获得类似的参数估计值。
由于我不了解自己的原因,我需要使用EViews估算某些数据的参数。这是通过选择NLS(非线性最小二乘)选项并使用以下公式来完成的:indep_var c dep_var ar(1)
EViews声称他们估计了线性AR(1)过程,例如:
Y t = a + B * X t + u t
其中u t 错误定义为
你 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
此外,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声称估计的等式中的参数(本文中3 rd 1),我使用以下命令:
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中尝试这样做的原因。我也很乐意为您提供我正在使用的数据,但这是不可能的,因为它是机密数据。
答案 0 :(得分:0)
Eviews规范似乎应该是:
dep_var c indep_var ar(1)