主な問題は次のとおりです。EViewsとRで同様のパラメーター推定を取得できません。
自分がわからない理由で、EViewsを使用して特定のデータのパラメーターを推定する必要があります。これを行うには、NLS(非線形最小二乗)オプションを選択し、次の式を使用します。indep_var c dep_var ar(1)
EViewsのクレーム:彼らはAR線形推定は、(1)のような処理 ここエラーのように定義される: 等価物を使用して方程式(代数的置換あり): さらに、このスレッドはEViewsフォーラムのフォーラムでは、NLS推定はMarquardtアルゴリズムによって生成されることが示唆されています。U 、T 、U 、T = ρ ⋅ U T - 1 + ε YのT = (1 - ρ )α + ρ YのT - 1 + β X T - ρ β X T - 1 + ε トン
現在、AR(1)プロセスを推定するためのgo-to R関数はarima
です。ただし、次の2つの問題があります。
- 推定値は最尤推定値です。
- 切片の推定値は実際には切片の推定値ではありません(RH Shumway&DS Stofferによる)。
そのため、nlsLM
minpack.lmパッケージから関数に切り替えました。この関数は、Marquardtアルゴリズムを使用して非線形最小二乗推定を実現します。これにより、EViews実装と同じ結果(または少なくとも非常に類似したもの)が得られます。
今コード。data
独立変数と次のコードで生成されるような従属変数を持つデータフレーム()があります。
data <- data.frame(independent = abs(rnorm(48)), dependent = abs(rnorm(48)))
EViewsが推定する方程式(この投稿の3 番目)のパラメーターを推定するには、次のコマンドを使用します。
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ユーザーであることを述べたいと思います。それが、EViewsではなくRでこれを実行しようとしている理由です。私が使用しているデータも提供したいのですが、機密データなので不可能です。