R에서 자동 상관 오류가있는 간단한 선형 모형


19

R에서 자동 상관 오차가있는 선형 모형을 어떻게 적합합니까? stata에서는 prais명령 을 사용 하지만 R에 해당하는 항목을 찾을 수 없습니다 ...

답변:


23

nlmegls 패키지 에서 (일반화 된 최소 제곱)을 살펴보십시오.

ARMA 등의 회귀 오류에 대한 상관 관계 프로파일을 설정할 수 있습니다.

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

ARMA (1,1) 오류의 경우.


1
새 데이터 세트에서 "predict"함수를 사용하고 동일한 오류 구조를 유지할 수 있습니까? gls 명령은 관측치의 순서를 어떻게 알 수 있습니까?
Zach

27

gls()기능 외에도 MLE을 사용 하여 패키지 nlmearima()기능을 사용할 수도 있습니다 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는 무엇입니까?
Zach

1
최적화를위한 시작 값을 제공합니다. 생략해도 거의 차이가 없습니다.
Rob Hyndman

1
+1이 arima옵션은 prais언뜻보기에 Stata와는 좀 더 다르게 보이지만 더 유연하며 tsdiagAR (1) 가정이 실제로 얼마나 적합한 지 잘 보여주는 데 사용할 수도 있습니다 .
Wayne

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는 무엇입니까?
Zach

3

gls 출력에 예측을 사용할 수 있습니다. ? predict.gls를 참조하십시오. 또한 상관 구조에서 "양식"항으로 관측 순서를 지정할 수 있습니다. 예를 들어 :
corr=corAR1(form=~1)데이터의 순서가 테이블에있는 순서임을 나타냅니다. corr=corAR1(form=~Year)순서가 팩터 연도의 하나임을 나타냅니다. 마지막으로 "0.5"값 corr=corAR1(0.5,form=~1)?은 일반적으로 분산 구조를 나타내는 것으로 추정되는 모수의 값 (MA의 경우에는 phi, MA의 경우에는 쎄타)으로 설정됩니다. ). Rob Hyndman이 언급했듯이이를 설정하고 최적화에 사용하는 것은 선택 사항입니다.


예측 또는 적합치가 정확하지만 (gls () 대 Arima ())가 크게 다를 수 있습니까? gls는 고정 효과 만 사용하는 반면 Arima는 arima 오류를 적합치에 포함시킵니다.
B_Miner
당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.