У мене є чотири різні часові ряди погодинних вимірювань:
- Витрата тепла всередині будинку
- Температура поза домом
- Сонячне випромінювання
- Швидкість вітру
Я хочу мати можливість передбачити споживання тепла всередині будинку. Існує чітка сезонна тенденція, як щорічно, так і щоденно. Оскільки між різними серіями існує чітка кореляція, я хочу їх встановити за допомогою моделі ARIMAX. Це можна зробити в R, використовуючи функцію arimax з пакету TSA.
Я намагався прочитати документацію на цю функцію та прочитати функції передачі, але поки що мій код:
regParams = ts.union(ts(dayy))
transferParams = ts.union(ts(temp))
model10 = arimax(heat,order=c(2,1,1),seasonal=list(order=c(0,1,1),period=24),xreg=regParams,xtransf=transferParams,transfer=list(c(1,1))
pred10 = predict(model10, newxreg=regParams)
дає мені:
де чорна лінія є фактично вимірюваними даними, а зелена лінія - це моя відповідна модель порівняно. Це не лише гарна модель, але явно щось не так.
Я визнаю, що мої знання про ARIMAX-моделі та функції передачі обмежені. У функції arimax (), (наскільки я зрозумів), xtransf - це екзогенний часовий ряд, який я хочу використовувати (використовуючи функції передачі) для прогнозування мого основного часового ряду. Але в чому насправді різниця між xreg і xtransf?
Загалом, що я зробив неправильно? Я хотів би мати можливість краще пристосуватись, ніж той, який досягнуто з lm (тепловий ~ темп радіальний вітер * час).
Редагування: На основі деяких коментарів я видалив передачу і замість цього додав xreg:
regParams = ts.union(ts(dayy), ts(temp), ts(time))
model10 = arimax(heat,order=c(2,1,1),seasonal=list(order=c(0,1,1),period=24),xreg=regParams)
де dayy - це "число числа року", а час - година дня. Температура - знову температура зовні. Це дає мені такий результат:
що краще, але майже не те, що я очікував побачити.