![](/img/trans.png)
[英]Nonlinear Least Squares in R - Levenberg Marquardt to Fit Heligman Pollard Model Parameters
[英]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.