我有两个样本(在这两种情况下n≈70
这是贝叶斯测试有用的地方吗?如果是这样,从哪里开始是一个好地方,谷歌搜索并没有产生任何有用的东西,但我可能不会问正确的问题。如果这是错误的事情,有人有什么建议吗?或者这只是与定量分析相反的讨论点?
我有两个样本(在这两种情况下n≈70
这是贝叶斯测试有用的地方吗?如果是这样,从哪里开始是一个好地方,谷歌搜索并没有产生任何有用的东西,但我可能不会问正确的问题。如果这是错误的事情,有人有什么建议吗?或者这只是与定量分析相反的讨论点?
设表示第一个种群的平均值,表示第二个种群的平均值。看来您已经使用了两个样本 -test来测试是否。显着的结果意味着,但是对于您的应用程序而言,差异似乎很小。μ1
您遇到的事实是,统计上的显着性通常对应用程序来说可能不是显着的。虽然差异可能在统计上显着,但可能仍然没有意义。
贝叶斯测试不能解决这个问题——你仍然会得出结论认为存在差异。
然而,可能有一条出路。例如,对于一个片面的假设,您可以决定如果的单位大于,那么这将是一个有意义的差异,足以对您的应用程序产生影响。μ1
在这种情况下,您将测试是否而不是。在这种统计量(假设方差相等)为
其中是合并的标准差估计值。在原假设下,该统计量是分布的,自由度为μ1−μ2≤Δ
执行此检验的一种简单方法是从第一个总体的观察中减去,然后执行常规的单边双样本检验。Δ
比较几种方法是有效的,但不是为了选择一种有利于我们的愿望/信念的方法。
我对您的问题的回答是:两个分布可能重叠,但它们具有不同的方法,这似乎是您的情况(但我们需要查看您的数据和上下文以提供更准确的答案)。
我将使用几种比较正常均值的方法来说明这一点。
1.检验t
考虑来自和的模拟样本,然后值大约(请参见下面的 R 代码)。70
rm(list=ls())
# Simulated data
dat1 = rnorm(70,10,1)
dat2 = rnorm(70,12,1)
set.seed(77)
# Smoothed densities
plot(density(dat1),ylim=c(0,0.5),xlim=c(6,16))
points(density(dat2),type="l",col="red")
# Normality tests
shapiro.test(dat1)
shapiro.test(dat2)
# t test
t.test(dat1,dat2)
然而,密度显示出相当大的重叠。但是请记住,您正在测试一个关于均值的假设,在这种情况下显然不同,但是由于的值,密度存在重叠。σ
的轮廓似然性μ
在这种情况下,样本大小为且样本均值的轮廓似然度就是。μ
对于模拟数据,这些可以在 R 中计算如下
# Profile likelihood of mu
Rp1 = function(mu){
n = length(dat1)
md = mean(dat1)
return( exp(-n*(md-mu)^2) )
}
Rp2 = function(mu){
n = length(dat2)
md = mean(dat2)
return( exp(-n*(md-mu)^2) )
}
vec=seq(9.5,12.5,0.001)
rvec1 = lapply(vec,Rp1)
rvec2 = lapply(vec,Rp2)
# Plot of the profile likelihood of mu1 and mu2
plot(vec,rvec1,type="l")
points(vec,rvec2,type="l",col="red")
正如你所看到的,和的似然区间在任何合理的水平上都没有重叠。μ1
3.使用 Jeffreys 先验μ
考虑的Jeffreys 先验(μ,σ)
π(μ,σ)∝1σ2
的后验可以计算如下μ
# Posterior of mu
library(mcmc)
lp1 = function(par){
n=length(dat1)
if(par[2]>0) return(sum(log(dnorm((dat1-par[1])/par[2])))- (n+2)*log(par[2]))
else return(-Inf)
}
lp2 = function(par){
n=length(dat2)
if(par[2]>0) return(sum(log(dnorm((dat2-par[1])/par[2])))- (n+2)*log(par[2]))
else return(-Inf)
}
NMH = 35000
mup1 = metrop(lp1, scale = 0.25, initial = c(10,1), nbatch = NMH)$batch[,1][seq(5000,NMH,25)]
mup2 = metrop(lp2, scale = 0.25, initial = c(12,1), nbatch = NMH)$batch[,1][seq(5000,NMH,25)]
# Smoothed posterior densities
plot(density(mup1),ylim=c(0,4),xlim=c(9,13))
points(density(mup2),type="l",col="red")
同样,均值的可信区间不会在任何合理的水平上重叠。
总之,您可以看到所有这些方法如何表明均值的显着差异(这是主要兴趣),尽管分布重叠。
⋆
从您对密度重叠的担忧来看,另一个感兴趣的数量可能是,即第一个随机变量小于第二个变量的概率。可以像在这个答案中那样非参数地估计这个数量。请注意,这里没有分布假设。对于模拟数据,该估计量为,在这个意义上显示出一些重叠,而均值则显着不同。请看一下下面显示的 R 代码。P(X<Y)
# Optimal bandwidth
h = function(x){
n = length(x)
return((4*sqrt(var(x))^5/(3*n))^(1/5))
}
# Kernel estimators of the density and the distribution
kg = function(x,data){
hb = h(data)
k = r = length(x)
for(i in 1:k) r[i] = mean(dnorm((x[i]-data)/hb))/hb
return(r )
}
KG = function(x,data){
hb = h(data)
k = r = length(x)
for(i in 1:k) r[i] = mean(pnorm((x[i]-data)/hb))
return(r )
}
# Baklizi and Eidous (2006) estimator
nonpest = function(dat1B,dat2B){
return( as.numeric(integrate(function(x) KG(x,dat1B)*kg(x,dat2B),-Inf,Inf)$value))
}
nonpest(dat1,dat2)
我希望这有帮助。
回答正确的问题
好的,手段不同,但这真的很重要,因为分布有很大的重叠吗?
任何询问组均值是否不同的测试都会在正确运行时告诉您均值是否不同。它不会告诉您数据本身的分布不同,因为这是一个不同的问题。 这个问题当然取决于均值是否不同,还取决于可能(不完全)概括为方差、偏斜和峰度的许多其他因素。
您正确地注意到,均值在哪里的确定性取决于您必须估计它们的数据量,因此拥有更多数据将允许您发现更接近重叠分布的均值差异。但你想知道是否
比如小p值真的代表数据
确实不是,至少不是直接的。这是设计使然。它代表(大致而言)您可以确定数据的一对特定样本统计数据(而不是数据本身)是不同的。
如果您想以更正式的方式表示数据本身,而不是简单地显示直方图和测试时刻,那么也许一对密度图可能会有所帮助。这实际上取决于您使用测试进行的论点。
贝叶斯版本
在所有这些方面,贝叶斯差异“测试”和 T 测试的行为方式相同,因为它们试图做同样的事情。我能想到的使用贝叶斯方法的唯一优点是:a)很容易进行测试,允许每个组可能存在不同的方差,b)它将专注于估计均值差异的可能大小而不是为一些差异测试找到p值。也就是说,这些优势非常小:例如,在 b) 中,您始终可以报告差异的置信区间。
“测试”上方的引号是故意的。进行贝叶斯假设检验当然是可能的,人们也这样做。然而,我认为该方法的比较优势在于专注于建立一个合理的数据模型,并以适当的不确定性水平传达其重要方面。
首先,这不是常客测试的问题。问题在于均值完全相等的零假设。因此,如果总体的均值差异很小,并且样本量足够大,那么拒绝该零假设的机会就非常高。因此,您的测试的 p 值非常小。罪魁祸首是零假设的选择。选择 d>0 并采取零假设为均值的绝对值相差小于 d 小于 d。您选择 d 以便实际差异必须足够大才能拒绝。你的问题消失了。如果您坚持均值完全相等的零假设,贝叶斯检验并不能解决您的问题。