Câu trả lời:
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).
Ngoài gls()
chức năng từ nlme
, bạn cũng có thể sử dụng arima()
chức năng trong stats
gó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)
arima
Tùy chọn này trông khác với Stata prais
thoạ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.
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.
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.