将泊松回归应用于库存量是否错误?

Is it wrong to apply Poisson Regression to stock volume?

我最近了解了泊松回归,并想将这种新的统计方法应用于现实世界的问题。所以我考虑了一会儿,决定根据随机抽样公司的财务信息,尝试预测财富 500 强的股票数量。

我遇到的问题是,当模型考虑大量方差并且仅包含重要的预测变量时,当我尝试让泊松模型使用预测函数进行预测时,它 returns几乎没有方差的预测与实际值相去甚远。

我正在玩的数据集没有完全填满,但我决定在小样本量的结果上取得峰值。我这样做是因为我在网上读到一些东西表明泊松回归所需的功率对于大量数据来说较低,而且股票市场交易量包括一些大量数据。可以在此处访问数据集:

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 平方,但其预测值与实际值相差甚远。自己看看:

predict(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 13.83686

Stock[,"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 2310000

我做错了什么?在泊松函数上使用预测函数时是否需要特别注意?泊松回归不适合对我正在使用的数据进行分析吗?

首先您需要阅读 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