我总是有以下问题:贝叶斯先验在现实生活中是如何决定的?
我创建了以下场景来提出我的问题:假设您是研究人员,并且您有兴趣研究是否可以通过长颈鹿的体重和身高来预测长颈鹿的年龄(例如线性回归模型:age = b_o + b_1 height + b_2重量)。你到达一个国家公园来记录长颈鹿的测量值 - 但在只测量了几只长颈鹿之后,一场可怕的风暴发生了,你不得不停止你的研究。您只有时间测量 15 只长颈鹿:
weight height age
1 2998.958 15.26611 53
2 3002.208 18.08711 52
3 3008.171 16.70896 49
4 3002.374 17.37032 55
5 3000.658 18.04860 50
6 3002.688 17.24797 45
7 3004.923 16.45360 47
8 2987.264 16.71712 47
9 3011.332 17.76626 50
10 2983.783 18.10337 42
11 3007.167 18.18355 50
12 3007.049 18.11375 53
13 3002.656 15.49990 42
14 2986.710 16.73089 47
15 2998.286 17.12075 52
不幸的是,这些信息不足以完成您的学习。但是,您进行了一些研究,发现过去一直在对长颈鹿进行此类测量。例如:
研究 1:在 1800 年代进行了一项研究,测量了 1000 头长颈鹿,发现这些长颈鹿的平均身高为 17 英尺,平均体重为 2800 磅,平均年龄为 35 岁。但是这是在 1800 年代完成的,您对此表示怀疑那时的测量可能不那么准确,环境问题(例如偷猎)可能会导致长颈鹿的体型发生变化。
研究 2:2010 年对世界各地动物园的 50 只长颈鹿进行了一项研究,它们的身高为 16 英尺,体重为 300 磅,年龄为 50 岁。这项研究是较新的,但您怀疑动物园中的长颈鹿可能与野外的长颈鹿不同。
研究3:一位长颈鹿专家坚信长颈鹿的年龄、身高和体重呈钟形分布。专家还认为,长颈鹿一生都在不断增长,即随着年龄的增长,体重和身高也在增长。他没有任何具体数字,但他被认为是领先的专家。
等等
问题:在这个问题中,是否有可能补充您有限的测量值以及关于长颈鹿的先验知识(同时考虑到它们的可靠性)?这个问题是如何在现实生活中使用贝叶斯模型(例如贝叶斯回归)的一个例子 - 还是这个问题从根本上缺乏足够的数据来处理?
假设您查阅了几项记录了身高的研究并手动评估了这些研究的可信度(将“低权重”分配给被认为不可信的研究,例如adjusted_height =credit_score * average_recorded_height_in_study):
head(my_data)
average_recorded_height_in_study credibility_score study_number adjusted_height
1 13.74253 1.0000000 1 13.742525
2 20.08053 0.3222523 2 6.470999
3 13.25037 0.5132335 3 6.800532
4 15.74946 0.2625349 4 4.134783
5 11.68657 0.5966327 5 6.972592
6 17.27276 1.0000000 6 17.272759
有许多工具/包(例如使用 R 编程语言)可以尝试探索这种“先验信息”并适合分布
library(fitdistrplus)
library(patchwork)
library(ggplot2)
fg <- fitdist(my_data$adjusted_height, "gamma")
fln <- fitdist(my_data$adjusted_height, "lnorm")
fg <- fitdist(my_data$adjusted_height, "gamma")
fw <- fitdist(my_data$adjusted_height, "weibull")
par(mfrow = c(2, 2))
plot.legend <- c("Weibull", "lognormal", "gamma")
a <- denscomp(list(fw, fln, fg), legendtext = plot.legend, plotstyle = "ggplot")
b <- qqcomp(list(fw, fln, fg), legendtext = plot.legend, plotstyle = "ggplot")
c <- cdfcomp(list(fw, fln, fg), legendtext = plot.legend, plotstyle = "ggplot")
d <- ppcomp(list(fw, fln, fg), legendtext = plot.legend, plotstyle = "ggplot")
a+b+c+d
对于研究中的其他变量,可以重复上述分析。在这里,我们可以看到哪个分布最适合数据(例如使用-似然),并记录这个分布的参数估计。
这是在现实世界中如何将先验纳入贝叶斯模型的正确想法吗?在我创建的这个示例中,是否可以分析来自先前研究的信息并将其用于创建贝叶斯线性回归的先验?
谢谢
注意:假设您测量的 15 只长颈鹿恰好是患病的长颈鹿,并且它们的身高/体重测量值不能代表一般的长颈鹿种群 - 但也许先验中编码的信息代表了广泛的长颈鹿。因此,将您的测量结果与先验信息相结合可能会产生一个更现实的模型,该模型可以推广到更大的长颈鹿种群(此时您不知道这一事实)。