R 包 BayesFactor 中的贝叶斯因子值

问题描述 投票:0回答:2

我已按照有关如何使用 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 的保证或见解将不胜感激。

r bayesian
2个回答
0
投票

我使用相同的包手动输入 t 值和样本大小来计算 BF:

exp(ttest.tstat(t=14.63, n1=27, rscale = 0.707)[['bf']])

它给出相同的BF。看来这主要是由于样本量相对较大(27)。返回的BF看起来很向上。


0
投票

在下面,向量

d
之间的差异 向量
condition1
和 ``condition2
has,  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)

结果图表清楚地表明,事实上,假设平均差值与数据一样大,相对于平均差的标准误差,您获得的贝叶斯因子确实是预期的结果.

© www.soinside.com 2019 - 2024. All rights reserved.