Неправильно ли применять пуассоновскую регрессию к объему акций? - PullRequest
0 голосов
/ 02 ноября 2019

Я недавно узнал о регрессии Пуассона и хочу применить этот новый для меня статистический метод для решения реальных проблем. Поэтому я немного подумал об этом и решил, что хочу попытаться предсказать объемы акций Fortune 500 на основе финансовой информации о случайной выборке компаний.

Проблема, с которой я сталкиваюсь, заключается в том, что в то время как модель учитывает огромное количество отклонений и содержит только существенные предикторы, когда я пытаюсь заставить модель Пуассона делать предсказания с использованием функции предикторов, она возвращает прогнозы практически снет отклонений, которые сильно отличаются от фактического значения.

Набор данных, с которым я играю, заполнен не полностью, но я решил взять пик на результатах с небольшим размером выборки. Я сделал это, потому что я прочитал что-то в Интернете, которое предполагало, что необходимая мощность для регрессии Пуассона была ниже для больших чисел, а объем фондового рынка включает в себя некоторые огромные числа. Доступ к набору данных можно получить здесь:

https://drive.google.com/file/d/1qvkwWSfUSodfceyNLvPjA4jqnWTDTeSo/view?usp=sharing

Код, который я использовал, представлен ниже:

Stock<-read.csv("C:/FilePath/StockPrices.csv")
head(Stock)
summary(StockTest <- step(glm(formula = X2018.Volume ~ X2017.Stock.Price + X2017.Volume+Total.Revenue+Cost.of.Revenue+Research...Development+Selling.General...Administrative+Interest.Expense+Total.Other.Income...Expenses.Net+Income.Before.Tax+Income.Tax.Expense+Income.From.Continuing.Operation+Net.Income+Enviornment+Social+Governance, family = "poisson", data = Stock)))

1-StockTest$deviance/StockTest$null.deviance
predict(StockTest)

Модель имеет большой псевдо R-квадрат, ноего прогнозируемые значения далеко от фактических значений. Убедитесь сами:

прогноз (StockTest) 15.47486 15.00441 15.00881 14.01175 15.01126 16.24620 15.99307 15.68193 15.67123 14.98932 14.77741 15.43363 12.07001 13.84586 15.83090 14.28052 15.16039 101 * 101 * 101 * 87 * 138 686 686,886% * * * * * * * * * * 13 * 28 * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * 13 * 13 * 21 * 21 * 10 * 10 * 13 * 87 * 1386] 1386] 21] 1386] 13686] 1386] 136 916] 136 0366 136 0366 136,386*

Фондовая [, "X2018.Volume"] [1] 5160000 110853500 3310000 3310000 1200000 876000 3310000 11400000 8830000 6380000 6410000 [12] 820000 3500000 2620000 4860000 199000 741000 7680000 1287769 3810000 1460000 2310023 * 10 2200 * 10 * 100 * 10Что по этому поводу я делаю не так? Есть ли какие-то особые соображения, которые необходимо учитывать при использовании функции предсказания для функции Пуассона? Разве пуассоновская регрессия не подходит для анализа данных, с которыми я играю?

1 Ответ

0 голосов
/ 02 ноября 2019

Сначала вам нужно прочитать страницу руководства для predict.glm:

predict(Stock.glm, type="response")
#          1          3          4          5          7          8          9 
#  5255867.7  3283450.0  3297945.2  1216812.4  3306021.9 11366695.1  8824739.9 
#         10         11         13         14         15         16         17 
#  6465084.7  6396289.7  3234293.9  2616649.3  5043601.7   174557.7  1030814.3 
#         18         19         20         21 
#  7503622.7  1592024.5  3837723.8  1021574.3 
Stock.glm$model$X2018.Volume
#  [1]  5160000  3310000  3310000  1200000  3310000 11400000  8830000  6380000  6410000
# [10]  3500000  2620000  4860000   199000   741000  7680000  1287769  3810000  1460000

Невозможно сравнить с исходными данными, поскольку отсутствуют значения. В результате 4 строки исходных данных отсутствуют в данных, используемых в анализе.

cor(Stock.glm$model$X2018.Volume, predict(Stock.glm, type="response"))
# [1] 0.9983086
...