我如何结合多个先验成分和可能性?

机器算法验证 事先的 可能性 决策理论
2022-03-16 13:46:45

让我们想象一下我正在比较两组动物(治疗/对照)。有来自细胞培养物的先前数据表明治疗应该具有积极作用。这给了我“先验组件 1”。还有两个以前的研究与我自己的非常相似。其中一个具有 5 +/- 1(先前组件 2)的效果,另一个具有 1 +/- 2(先前组件 3)的效果。我觉得细胞培养数据非常有说服力,而且之前的组件 3 并不是那么可靠的研究。所以我为每个选择了一些 3,1 和 0.5 的权重并相乘。

1)要计算“整体先验”,我是否只需将它们加在一起,如右下图所示?

2)我应该在添加这些组件之前对其进行规范化吗?

在此处输入图像描述

然后我计算我当前数据的似然函数,如上图所示。

在此处输入图像描述

3)如何将这些信息与第一张图中显示的先验信息结合起来?对于下面板,我只是将整体先验*可能性相乘。

4)然后我想根据这个结果做出决定。如果我相信效果介于 -1 和 1 之间,那么我将停止研究该药物。如果效果 < -1,那么我将执行新的研究 A,如果效果 > 1,我将执行新的研究 B。

5) 显然有多种选择决策的方法(-1 和 1 之间的百分比密度等)是否有最佳选择?

6)我觉得我做错了什么,但也许不是。我想要完成的事情有名字吗?

编辑

如果有帮助,我正在尝试使用 Richard Royall 提出的框架:

1)似然函数告诉我“如何将这些观察结果解释为证据”

2)似然函数+先验告诉“我应该相信什么”

3)似然函数+先验+成本/收益决定了“我应该做什么”。

Royall R (1997)统计证据:可能性范式(Chapman & Hall/CRC)

虽然这里使用的先验是主观的/模糊的,但它们是由简单的构建块(均匀分布和正态分布)构建的,数学上不成熟的研究人员可以快速理解。我认为它们很好地传达了我作为研究人员的思维过程。其他人当然可能知道不同的背景信息。他们应该能够建立自己的“复合先验”,这可能会导致与我的决策不同,但我们应该始终就似然函数达成一致。

这种方法(如果实施正确,我不确定我是否在这里做),在我看来,它可以模拟研究人员的实际思维过程,因此适用于科学推理。这些步骤映射到科学论文中的常见部分。先验是介绍,可能性是结果,后验概率是讨论。

代码:

#Generate Priors
x<-seq(-10,10,by=.1)
y1<-dunif(seq(0,10,by=.1), min=-10, max=10)
y1<-c(rep(0,length(x)-length(y1)),y1)
y2<-dnorm(x, mean=5, sd=1)
y3<-dnorm(x, mean=1, sd=2)

#Weights for Priors
wt1<-3
wt2<-1
wt3<-.5

#Final Priors
y1<-y1*wt1
y2<-y2*wt2
y3<-y3*wt3

#Sum to get overall Prior
y<-y1+y2+y3

#Likelihood function for "current data"
lik<-10*dnorm(x, mean=1, sd=1)

#Updated Posterior Probability?
prob<-lik*y


par(mfrow=c(2,2))
plot(x,y1, ylim=c(0,1), type="l", lwd=4, 
     ylab="Density", xlab="Effect", main="Prior Component 1")
plot(x,y2, ylim=c(0,1), type="l", lwd=4, 
     ylab="Density", xlab="Effect", main="Prior Component 2")
plot(x,y3, ylim=c(0,1), type="l", lwd=4, 
     ylab="Density", xlab="Effect", main="Prior Component 3")
plot(x,y, ylim=c(0,1), type="l", lwd=4, 
     ylab="Density", xlab="Effect", main="Overall Prior")




dev.new()
par(mfrow=c(2,1))
plot(x,lik, type="l", lwd=4, col="Red",
     ylab="Likelihood", xlab="Effect", main="Likelihood")
plot(x,prob, type="l", lwd=4, col="Blue",
     ylab="Probability", xlab="Effect", main="Posterior Probability?")
abline(v=c(-1,1), lty=2, lwd=3)
1个回答

我认为您的方法没有任何问题,但是有一些技术细节会使您的实现不正确。现在,当你之前有一个混合时,你也会得到一个混合后。我认为,最简单的方法是分别计算每个组件的组件后验和组件权重。所以先验由下式给出:

p(θ|I)cwcfc(θ)

您需要确保每个fc(.)是适当归一化的密度。比例符号说明权重之和不一定总和为 1。乘以可能性,你有一个后验比例:

p(θ|DI)cwc[fc(θ)p(D|θ)]

现在我们可以通过对括号中的项进行归一化将其转换为新的混合分布,因此我们有:

p(θ|DI)cwcfc(D)[fc(θ)p(D|θ)fc(D)]

在哪里fc(D)=fc(θ)p(D|θ)dθ. 与先前一样,比例常数只是“新”权重的总和,对于适当归一化的后验:

p(θ|DI)=(cwcfc(D))1cwcfc(D)[fc(θ)p(D|θ)fc(D)]

此表达式意味着您可以分两步进行。

  1. 分别根据每个分量计算后验
  2. 通过将权重乘以数据的边际似然来更新权重

这对您的数据来说非常简单,因为您有两个共轭“正常正常”组件和一个“统一正常”组件。我会走得更远,但我不知道您的基于数据的方差是假设已知的还是从数据中估计的。