Я пытаюсь использовать переменную объема твиттера в день и переменную частоты трендов Google в день, чтобы предсказать цену нестабильной криптовалюты. В частности, я пытаюсь воспроизвести модель в Abraham, J., Higdon, D., Nelson, J., & Ibarra, J. (2018). Прогнозирование цен на криптовалюту с использованием количества твитов и анализа настроений. Обзор SMU Data Science, 1 (3), 1. Вот ссылка на эту статью Монета довольно новая, и у меня есть данные только за 605 дней. Я хочу одно: определить соответствие различных моделей (например, если включение одной переменной является более предсказуемой, чем другая), и два: какой подход лучше всего прогнозировать через несколько дней. Я пробовал использовать ARIMA для нескольких временных рядов, а также функцию tslm (), хотя я не могу разложить свои данные, и есть проблемы, потому что период (лет) меньше двух, что затрудняет перевод моих данных в стационарный . Вдобавок некоторые из моих переменных, похоже, имеют более экспоненциальный тренд, чем линейный. Ниже приведены три мои переменные ts ().
price <- ts(df[, 4], start = c(2018, 342), end=c(2020, 214), frequency=365)
tweetvol <- ts(df[, 3], start = c(2018, 342), end=c(2020, 214), frequency=365)
googletrend <- ts(df[, 2], start = c(2018, 342), end=c(2020, 214), frequency=365)
Вот график трех переменных без каких-либо преобразований. Я взял журнал () каждой переменной, чтобы все они были видны на одном графике. Имейте в виду, что это сгладило большую часть тенденции.
autoplot(cbind(log(price), log(tweetvol), log(googletrend)))
Ссылка на график в Google Документах
Просто запустив множественную линейную регрессию, вы увидите тенденцию Google громкость - плохой выбор переменной для включения.
model <- lm(price ~ vol + trendvalue, df)
summary(model)
Call:
lm(formula = price ~ vol + trendvalue, data = df)
Residuals:
Min 1Q Median 3Q Max
-0.0082747 -0.0012608 -0.0003695 0.0009277 0.0109091
Coefficients:
Estimate Std. Error t value Pr(>|t|)
(Intercept) 0.004348434 0.000131397 33.094 <0.0000000000000002 ***
vol 0.000004993 0.000000315 15.854 <0.0000000000000002 ***
trendvalue -0.000007426 0.000016745 -0.443 0.658
---
Signif. codes: 0 ‘***’ 0.001 ‘**’ 0.01 ‘*’ 0.05 ‘.’ 0.1 ‘ ’ 1
Residual standard error: 0.002311 on 600 degrees of freedom
Multiple R-squared: 0.4044, Adjusted R-squared: 0.4025
F-statistic: 203.7 on 2 and 600 DF, p-value: < 0.00000000000000022
Я думаю, что функция tslm () будет моим лучшим выбором в отличие от ARIMA, если я могу обойти стационарные проблемы (мне может потребоваться изменять мои данные ежедневно и еженедельно, чтобы периоды были больше 2), поскольку я не уверен в предположениях о причинно-следственной связи в ARIMA. Я также изучал подходы машинного обучения (H2O), но похоже, что методы черного ящика - не лучший инструмент для прогнозирования временных рядов. Я открыт для новых идей и подходов и хотел бы немного пощупать, прежде чем погрузиться в работу ARIMA или tslm (), если это не лучший инструмент для работы. Спасибо всем, что нашли время прочитать этот объемный пост. Я аспирант по промышленной организационной психологии и хочу улучшить свои навыки работы с данными - у меня очень мало опыта работы с переменными временных рядов или прогнозирования рыночных цен, и я ценю любое направление, которое вы все можете предоставить.