Mô hình tuyến tính đơn giản với các lỗi tự động tương quan trong R [đã đóng]


19

Làm cách nào để phù hợp với mô hình tuyến tính với lỗi tự động tương quan trong R? Trong stata tôi sẽ sử dụng praislệnh, nhưng tôi không thể tìm thấy một tương đương R ...

Câu trả lời:


23

Có một cái nhìn gls(bình phương tối thiểu tổng quát) từ gói nlme

Bạn có thể đặt cấu hình tương quan cho các lỗi trong hồi quy, ví dụ ARMA, v.v .:

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

đối với lỗi ARMA (1,1).


1
Tôi có thể sử dụng chức năng "dự đoán" trên tập dữ liệu mới và giữ nguyên cấu trúc lỗi không? Làm thế nào để lệnh gls biết thứ tự quan sát theo thứ tự nào?
Zach

27

Ngoài gls()chức năng từ nlme, bạn cũng có thể sử dụng arima()chức năng trong statsgói bằng MLE. Dưới đây là một ví dụ với cả hai chức năng.

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 

Ưu điểm của hàm arima () là bạn có thể phù hợp với nhiều quy trình lỗi ARMA lớn hơn nhiều. Nếu bạn sử dụng hàm auto.arima () từ gói dự báo, bạn có thể tự động xác định lỗi ARMA:

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

1
0,5 cho "Corr = corAR1 (0,5, mẫu = ~ 1) là gì?"
Zach

1
Nó cung cấp một giá trị bắt đầu cho việc tối ưu hóa. Nó làm cho hầu như không có sự khác biệt nếu nó được bỏ qua.
Rob Hyndman

1
+1 arimaTùy chọn này trông khác với Stata praisthoạt nhìn, nhưng nó linh hoạt hơn và bạn cũng có thể sử dụng tsdiagđể có được một hình ảnh đẹp về giả định AR (1) của bạn thực sự phù hợp như thế nào.
Wayne

1
Làm cách nào để sử dụng arima () nếu tôi chỉ hồi quy y trên hằng số?
user43790

7

Sử dụng chức năng gls từ gói nlme . Dưới đây là ví dụ.

##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 

Vì mô hình được trang bị bằng khả năng tối đa bạn cần cung cấp các giá trị bắt đầu. Giá trị bắt đầu mặc định là 0, nhưng như mọi khi, nên thử một vài giá trị để đảm bảo sự hội tụ.

Như Tiến sĩ G đã chỉ ra, bạn cũng có thể sử dụng các cấu trúc tương quan khác, cụ thể là ARMA.

Lưu ý rằng trong các ước lượng bình phương nhỏ nhất là phù hợp nếu ma trận hiệp phương sai của hồi quy không phải là nhiều ma trận nhận dạng, vì vậy nếu bạn phù hợp với mô hình với cấu trúc hiệp phương cụ thể, trước tiên bạn cần kiểm tra xem nó có phù hợp hay không.


0,5 cho "Corr = corAR1 (0,5, mẫu = ~ 1) là gì?"
Zach

3

Bạn có thể sử dụng dự đoán về đầu ra gls. Xem? Dự đoán.gls. Ngoài ra, bạn có thể chỉ định thứ tự quan sát theo thuật ngữ "hình thức" trong cấu trúc tương quan. Ví dụ:
corr=corAR1(form=~1)chỉ ra rằng thứ tự của dữ liệu là thứ tự chúng có trong bảng. corr=corAR1(form=~Year)chỉ ra rằng thứ tự là một trong các yếu tố Năm .. Cuối cùng, giá trị "0,5" corr=corAR1(0.5,form=~1)?thường được thiết lập theo giá trị của tham số ước tính để biểu thị cấu trúc phương sai (phi, trong trường hợp AR, theta trong trường hợp MA .. .). Nó là tùy chọn để thiết lập và sử dụng để tối ưu hóa như Rob Hyndman đã đề cập.


Dự đoán hoặc giá trị được trang bị sẽ khác nhau nhiều mặc dù đúng (gls () so với Arima ())? Vì gls sẽ chỉ sử dụng các hiệu ứng cố định trong khi Arima sẽ bao gồm các lỗi arima cho các giá trị được trang bị.
B_Miner
Khi sử dụng trang web của chúng tôi, bạn xác nhận rằng bạn đã đọc và hiểu Chính sách cookieChính sách bảo mật của chúng tôi.
Licensed under cc by-sa 3.0 with attribution required.