如何知道统计预测是否正确?

机器算法验证 预测 预测模型 准确性
2022-04-13 00:53:12

天气预报预测某天下雨或不下雨的概率。如果我可以多次重复同一天,我可以计算下雨多少次,这样我就可以与预测进行比较,以了解预测是否正确。

事实是不可能重复一天,我拥有的唯一数据是许多不同天的相应预测,并且每个预测只有一个分布点。

那么我怎么知道天气预报的概率是否正确呢?

这个问题可以扩展到任何我不能多次重复现象以获得完整分布并验证预测的预测。

3个回答

“这个问题可以扩展……”——完全正确。但是,当然,如果你想退后一步——一种现象都是如此。每次你掷硬币时,它都会有一点凹痕,并改变出现正面的可能性。每次你投篮时,你的手臂都会更累一些(或者休息得更好一些),你进球的机会也略有不同。

作为一名应用统计学家,你工作的很大一部分是试图确定哪些事件足够相似以被视为相同。你永远不会有一群人吸毒,一群学生被测试,一群城市执行政策,完全一样。你工作的大部分内容是试图确定要控制什么,以便在你完成后,它们足够相似,可以给你一个有意义的答案。

在预测方面,您能做的最好的事情就是尝试对您认为足够相似的事物进行训练,然后进行测试。交叉验证的重点是检查数据和模型的内部 一致性。如果您可以对一些进行训练,并准确预测其余部分,那么一个可靠的解释是这两组数据“足够相似”。(假设你的模型是正确的,假设你的模型是正确的。)因此,对于观察到的数据,你可以通过交叉验证来评估预测的准确性。

但是对于看不见的未来,您问题的最佳答案只是“为了使预测正确,您必须假设明天的天气与预测模型所适用的所有天气的分布相同。” 任何关于接近程度的问题都取决于特定的模型和偏好。

这是一个很好的问题,也是一个常见的问题。您似乎感兴趣的属性是ergodicity如果您感兴趣的随机过程是遍历的,那么(粗略地)您看到的这些“不同的日子”观察结果可以结合起来评估天气预报的成功程度;可以组合得出一些收敛结果。然而,如果这个过程没有表现出遍历性,那么——正如你所说——人们需要在同一天多次观察,看看这个降雨概率是否准确。遍历性很难用真实数据来验证,通常被认为是一种假设。

有关遍历性的严格但经验性的处理,请查看E. Zivot 的时间序列书的这一章对于一个非常好的直观示例,请从 16:55观看此视频。

时间序列计量经济学处理类似的问题:如果是时间序列变量,你应该相信这两个变量的线性回归吗?答案是“视情况而定”。ytxt

这取决于观察到的两个变量之间的关系在未来是否会继续存在。如果都是非平稳的,那么观察到的关系将来可能会破裂。如果都是平稳的,那么观察到的关系应该在未来成立。ytxtytxt

这是一个模拟示例。变量在设计上都是非平稳的。尽管回归模型表明观察到的关系很强(基于 p 值和),但超时是可怕的(模型远比使用平均值作为预测差)。xtytR2R2

### create two non-stationary variables
set.seed(12345)

x <- 100 + cumsum(rnorm(1000))

y <- 200 + cumsum(rnorm(1000))

df <- data.frame(y=y, x=x)

### split between training and test

train <- df[1:800, ]  ## 80% train
test <- df[801:1000, ] ## 20% train

### linear regression

lm.mod <- lm(y~x, data=train)

summary(lm.mod)

### measure fit

library(caret)

in.sample.R2 <- R2(lm.mod$fitted.values, train$y, formula="traditional")
out.sample.R2 <- R2(predict(lm.mod, newdata=test), test$y, formula="traditional")

in.sample.R2
out.sample.R2

TLDR;预测未来很难。使用时间序列数据的线性回归可能极具误导性。根据连续时间保留一些数据(例如,保留时间序列的最后 9 个季度)。使用保留数据验证您的模型。