簡體   English   中英

使用Marquardt算法的具有非線性最小二乘法的AR(1):EViews與R

[英]AR(1) with Nonlinear Least Squares using Marquardt Algorithm: EViews vs R

幾周前,我發布了一個經過深思熟慮的問題,困擾着模糊的信息。 這是我糾正原始問題並獲得更好答案的嘗試。

主要問題是:我無法使用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)截距估計實際上不是截距估計

因此,我從minpack.lm包轉向了nlsLM函數。 此函數使用Marquardt算法獲得非線性最小二乘估計,該估計應產生與EViews實現相同的結果(至少是非常相似的結果)。

現在的代碼。 我有一個帶有自變量和因變量的數據幀( data ),例如由以下代碼生成的變量:

data <- data.frame(independent = abs(rnorm(48)), dependent = abs(rnorm(48)))

為了估計方程的EViews要求來估計( 第三一個在此篇)中的參數,我使用下面的命令:

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中執行此操作。 我也很樂意向您提供我正在使用的數據,但這是不可能的,因為它是機密數據。

Eviews規范似乎應該是:

dep_var  c indep_var ar(1)

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM