Rに自己相関エラーがある単純な線形モデル[閉じた]


19

Rの自己相関エラーを含む線形モデルをどのように適合させますか?stataではpraisコマンドを使用しますが、Rに相当するものが見つかりません...

回答:


23

glsパッケージnlmeから(一般化された最小二乗)を見てください

ARMAなどの回帰のエラーに相関プロファイルを設定できます。

 gls(Y ~ X, correlation=corARMA(p=1,q=1))

ARMA(1,1)エラーの場合。


1
新しいデータセットで「予測」機能を使用しても、同じエラー構造を保持できますか?glsコマンドは、観測の順序をどのように知るのですか?
ザック

27

からのgls()関数に加えて、MLEを使用してパッケージ内の関数をnlme使用することもできます。以下に両方の機能の例を示します。arima()stats

x <- 1:100
e <- 25*arima.sim(model=list(ar=0.3),n=100)
y <- 1 + 2*x + e

###Fit the model using gls()
require(nlme)
(fit1 <- gls(y~x, corr=corAR1(0.5,form=~1)))
Generalized least squares fit by REML
  Model: y ~ x 
  Data: NULL 
  Log-restricted-likelihood: -443.6371

Coefficients:
(Intercept)           x 
   4.379304    1.957357 

Correlation Structure: AR(1)
 Formula: ~1 
 Parameter estimate(s):
      Phi 
0.3637263 
Degrees of freedom: 100 total; 98 residual
Residual standard error: 22.32908 

###Fit the model using arima()
(fit2 <- arima(y, xreg=x, order=c(1,0,0)))

Call:
arima(x = y, order = c(1, 0, 0), xreg = x)

Coefficients:
         ar1  intercept       x
      0.3352     4.5052  1.9548
s.e.  0.0960     6.1743  0.1060

sigma^2 estimated as 423.7:  log likelihood = -444.4,  aic = 896.81 

arima()関数の利点は、はるかに多様なARMAエラープロセスに適合できることです。予測パッケージのauto.arima()関数を使用すると、ARMAエラーを自動的に特定できます。

require(forecast)    
fit3 <- auto.arima(y, xreg=x)

1
「corr = corAR1(0.5、form =〜1)?」の0.5は何ですか?
ザック

1
最適化の開始値を提供します。省略してもほとんど違いはありません。
ロブハインドマン

1
+1このarimaオプションは、Stataの外観とはprais一見異なりますが、柔軟性がtsdiag高く、AR(1)の仮定が実際にどの程度適合するかを視覚的に確認するために使用することもできます。
ウェイン

1
定数のみでyを回帰する場合、arima()を使用するにはどうすればよいですか?
user43790

7

パッケージnlmeの関数glsを使用します。以下に例を示します。

##Generate data frame with regressor and AR(1) error. The error term is 
## \eps_t=0.3*\eps_{t-1}+v_t
df <- data.frame(x1=rnorm(100), err=filter(rnorm(100)/5,filter=0.3,method="recursive"))

##Create ther response
df$y <- 1 + 2*df$x + df$err

###Fit the model
gls(y~x, data=df, corr=corAR1(0.5,form=~1))

Generalized least squares fit by REML
  Model: y ~ x 
  Data: df 
  Log-restricted-likelihood: 9.986475

 Coefficients:
 (Intercept)           x 
   1.040129    2.001884 

 Correlation Structure: AR(1)
 Formula: ~1 
 Parameter estimate(s):
     Phi 
 0.2686271 
Degrees of freedom: 100 total; 98 residual
Residual standard error: 0.2172698 

モデルは最尤法を使用して近似されるため、開始値を指定する必要があります。デフォルトの開始値は0ですが、いつものように、収束を保証するためにいくつかの値を試すのが良いです。

G博士が指摘したように、他の相関構造、つまりARMAも使用できます。

一般に、回帰誤差の共分散行列が単位行列の倍数でない場合、最小二乗推定は一貫しているため、特定の共分散構造でモデルを近似する場合、最初に適切かどうかをテストする必要があります。


「corr = corAR1(0.5、form =〜1)?」の0.5は何ですか?
ザック

3

gls出力でpredictを使用できます。?predict.glsを参照してください。また、相関構造の「フォーム」項で観測の順序を指定できます。例:
corr=corAR1(form=~1)は、データの順序がテーブル内の順序であることを示します。 corr=corAR1(form=~Year)は、順序が因子年の順序であることを示しcorr=corAR1(0.5,form=~1)?ます。 。)。Rob Hyndmanが述べたように、設定して最適化に使用することはオプションです。


正しい値(gls()対Arima())ですが、予測値または近似値は大きく異なりますか?glsは固定効果のみを使用するため、Arimaは近似値にarimaエラーを含めます。
B_Miner
弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.