幾個星期前,I posted是一個思路不清的問題,模糊的信息困擾着我。這是我嘗試糾正原始問題並獲得更好的答案。使用Marquardt算法的非線性最小二乘AR(1):EViews vs R
主要問題是:我不能獲得類似的參數估計用的EViews和R.
至於原因,我不知道我自己,我需要估計的參數使用的EViews某些數據。 indep_var c dep_var ar(1)
的EViews聲稱他們估計線性AR(1)處理,諸如:
ý噸 = A這是通過挑選的NLS(非線性最小二乘)選項,並使用下面的公式進行+ B * X噸 + U噸
其中u噸誤差被定義爲
ù噸 = P * U噸-1 + E
通過使用等效方程(有一些代數取代):
ý噸 =( 1-p)* a + p * Y t - 1 + B * X t - p * B * X 噸 - 1 + E噸
此外,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一個這篇文章),我用下面的命令:
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中這樣做的原因。我也很樂意爲您提供我正在使用的數據,但這是不可能的,因爲它是機密數據。