You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

单维列联表卡方检验的贝叶斯等价分析(R语言)

单维列联表贝叶斯卡方检验问题解答

1. contingencyTableBF()能否用于单维列联表场景?

不能。BayesFactor包的contingencyTableBF()函数是为二维列联表设计的,核心功能是检验两个分类变量的独立性,完全不支持单维列联表的拟合优度检验(即观测频数与理论频数是否一致的检验),直接调用必然触发错误。

2. 若可行,正确语法是什么?

由于该函数不支持单维列联表场景,不存在对应场景下的正确语法。如果是用于二维列联表,标准语法示例如下(仅作参考,与你的需求无关):

library(BayesFactor)
# 构造二维列联表
two_way_table <- table(df$var1, df$var2)
# 计算独立性检验的贝叶斯因子
contingencyTableBF(two_way_table, sampleType = "jointMulti")

3. 可实现单维表卡方检验贝叶斯等价分析的R函数

以下是几种常用方案:

  • bayesChisq包的bayes_chisq():专门针对卡方拟合优度检验的贝叶斯实现,直接传入观测频数向量即可,语法简单直观。示例:
    library(bayesChisq)
    # 假设已处理NA,得到观测频数向量obs_freq
    bayes_chisq(obs_freq, p = rep(1/length(obs_freq), length(obs_freq)))
    # p参数传入理论概率,比如均匀分布时用rep(1/k, k),k为类别数
    
  • BayesFactor包的generalTestBF():通过构建对比模型实现拟合优度检验。比如检验观测频数是否符合均匀分布,可对比截距模型(所有类别概率相等)与无约束多分类模型:
    library(BayesFactor)
    # 先把分类数据转换为长格式(需先去除NA)
    df_clean <- na.omit(df)
    # 构建模型对比:无约束模型 vs 截距模型(均匀分布假设)
    bf <- generalTestBF(category ~ 1, data = df_clean, family = "multinomial")
    # 输出贝叶斯因子,判断是否支持均匀分布假设
    bf
    
  • brms/rstanarm包的多分类回归:适合需要更灵活建模的场景,通过拟合多分类逻辑回归,对比截距模型(类别概率相等)和无约束模型,用贝叶斯因子或后验分布推断结论。示例(brms):
    library(brms)
    df_clean <- na.omit(df)
    # 拟合无约束模型
    model_unconstrained <- brm(category ~ 1, data = df_clean, family = categorical())
    # 拟合截距模型(所有类别概率相等,需手动设置先验)
    model_constrained <- brm(category ~ 1, data = df_clean, family = categorical(),
                            prior = prior(constant(0), class = b))
    # 计算贝叶斯因子
    bayes_factor(model_unconstrained, model_constrained)
    

内容的提问来源于stack exchange,提问作者pdeli

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.10 15:25:10