我已按照有关如何使用 R 中的 BayesFactor 包中的默认先验运行贝叶斯“t 测试”的说明进行操作。
一些返回值是天文数字。
这是与巨大贝叶斯因子的比较示例:
#install.packages('BayesFactor')
library(BayesFactor)
condition1 <- c(0.94, 0.9, 0.96, 0.74, 1, 0.98, 0.86, 0.92, 0.918367346938776,
0.96, 0.4, 0.816326530612245, 0.8, 0.836734693877551, 0.56, 0.66,
0.605263157894737, 0.836734693877551, 0.84, 0.9, 0.92, 0.714285714285714,
0.82, 0.5, 0.565217391304348, 0.8, 0.62)
condition2 <- c(0.34, 0.16, 0.23, 0.19, 0.71, 0.36, 0.02, 0.83, 0.11, 0.06,
0.27, 0.347368421052632, 0.21, 0.13953488372093, 0.11340206185567,
0.14, 0.142857142857143, 0.257731958762887, 0.15, 0.29, 0.67,
0.0515463917525773, 0.272727272727273, 0.0895522388059701, 0.0204081632653061,
0.13, 0.0612244897959184)
bf = ttestBF(x = condition1, condition2, paired = TRUE)
bf
返回:
Bayes factor analysis
--------------
[1] Alt., r=0.707 : 144035108289 ±0%
Against denominator:
Null, mu = 0
---
Bayes factor type: BFoneSample, JZS
在大多数情况下,比较范围从 1 以下到数百个。但我担心这个值(
144035108289
!)表明我有一些错误。
仅供参考:对与上述相同的数据进行零假设检验的 p 值 = 4.649279e-14。
任何对这位返回的 BF 的保证或见解将不胜感激。
我使用相同的包手动输入 t 值和样本大小来计算 BF:
exp(ttest.tstat(t=14.63, n1=27, rscale = 0.707)[['bf']])
它给出相同的BF。看来这主要是由于样本量相对较大(27)。返回的BF看起来很向上。
在下面,向量
d
之间的差异
向量 condition1
和 ``condition2has, successively, values of
m` 在 0.1 和
从中减去 0.45,在每种情况下计算
p 值和贝叶斯因子。 贝叶斯因子
然后针对替代方案绘制零值
贝叶斯因子,两个轴上都有对数刻度。
library(BayesFactor)
condition1 <- c(0.94, 0.9, 0.96, 0.74, 1, 0.98, 0.86, 0.92, 0.918367346938776,
0.96, 0.4, 0.816326530612245, 0.8, 0.836734693877551, 0.56, 0.66,
0.605263157894737, 0.836734693877551, 0.84, 0.9, 0.92, 0.714285714285714,
0.82, 0.5, 0.565217391304348, 0.8, 0.62)
condition2 <- c(0.34, 0.16, 0.23, 0.19, 0.71, 0.36, 0.02, 0.83, 0.11, 0.06,
0.27, 0.347368421052632, 0.21, 0.13953488372093, 0.11340206185567,
0.14, 0.142857142857143, 0.257731958762887, 0.15, 0.29, 0.67,
0.0515463917525773, 0.272727272727273, 0.0895522388059701, 0.0204081632653061,
0.13, 0.0612244897959184)
d <- condition1-condition2
del <- seq(from=0, to=0.45, by=0.025)
bff <- numeric(length(del))
pval <- numeric(length(del))
for(i in 1:15){
bff[i] <- extractBF(ttestBF(d-del[i]))[1,1, drop=T]
pval[i] <- t.test(d-del[i])[['p.value']]
}
plot(pval, I(1/bff), log='xy', ylab="Bayes Factor -- null vs alternative")
abline(0,1,col=2)
text(1e-06, 2e-06, 'Line y=x', srt=38)
结果图表清楚地表明,事实上,假设平均差值与数据一样大,相对于平均差的标准误差,您获得的贝叶斯因子确实是预期的结果.