Відповіді:
Подивіться на gls
(узагальнені найменші квадрати) з пакету nlme
Ви можете встановити профіль кореляції для помилок у регресії, наприклад, ARMA тощо:
gls(Y ~ X, correlation=corARMA(p=1,q=1))
для помилок ARMA (1,1).
Крім gls()
функції від nlme
, ви також можете використовувати arima()
функцію в stats
пакеті за допомогою MLE. Ось приклад з обома функціями.
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)
arima
Опція виглядає більш відмінною від Stata prais
на перший погляд, але вона більш гнучка, і ви також можете використати, tsdiag
щоб зрозуміти, наскільки добре припущення AR (1) насправді відповідає.
Використовуйте функцію gls з пакету nlme . Ось приклад.
##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, але як завжди добре спробувати кілька значень, щоб забезпечити конвергенцію.
Як зазначив доктор Г., ви також можете використовувати інші кореляційні структури, а саме ARMA.
Зверніть увагу, що загалом оцінки найменших квадратів є послідовними, якщо коваріаційна матриця регресійних помилок не є кратною матриці ідентичності, тому, якщо ви підходите до моделі зі специфічною структурою коваріації, спочатку потрібно перевірити, чи вона підходить.
Ви можете використовувати передбачення на виході gls. Дивіться? Predict.gls. Також ви можете вказати порядок спостереження терміном "форма" у кореляційній структурі. Наприклад:
corr=corAR1(form=~1)
вказує, що порядок даних є таким, яким вони є в таблиці.
corr=corAR1(form=~Year)
вказує, що порядок є коефіцієнтом Рік .. Нарешті, значення "0,5" у, corr=corAR1(0.5,form=~1)?
як правило, встановлюється до значення параметра, який оцінюється для відображення структури дисперсії (phi, у випадку AR, тета у випадку МА. .). Необов’язково його налаштовувати та використовувати для оптимізації, як згадував Роб Хайндман.