如何使用 rstanarm 以 APA 风格报告贝叶斯线性(混合)模型?

2023-12-19

我目前正在努力解决如何按照 APA-6 建议报告输出的问题rstanarm::stan_lmer().

首先,我将在频率论方法中拟合混合模型,然后尝试使用贝叶斯框架执行相同的操作。

这是获取数据的可重现代码:

library(tidyverse)
library(neuropsychology)
library(rstanarm)
library(lmerTest)

df <- neuropsychology::personality %>% 
  select(Study_Level, Sex, Negative_Affect) %>% 
  mutate(Study_Level=as.factor(Study_Level),
         Negative_Affect=scale(Negative_Affect)) # I understood that scaling variables is important

现在,让我们以“传统”方式拟合线性混合模型,以学习水平(受​​教育年限)作为随机因素,测试性别(男性/女性)对负面情绪(负面情绪)的影响。

fit <- lmer(Negative_Affect ~ Sex + (1|Study_Level), df)
summary(fit)

输出如下:

Linear mixed model fit by REML t-tests use Satterthwaite approximations to degrees of
  freedom [lmerMod]
Formula: Negative_Affect ~ Sex + (1 | Study_Level)
   Data: df

REML criterion at convergence: 3709

Scaled residuals: 
     Min       1Q   Median       3Q      Max 
-2.58199 -0.72973  0.02254  0.68668  2.92841 

Random effects:
 Groups      Name        Variance Std.Dev.
 Study_Level (Intercept) 0.04096  0.2024  
 Residual                0.94555  0.9724  
Number of obs: 1327, groups:  Study_Level, 8

Fixed effects:
              Estimate Std. Error         df t value Pr(>|t|)    
(Intercept)    0.01564    0.08908    4.70000   0.176    0.868    
SexM          -0.46667    0.06607 1321.20000  -7.064 2.62e-12 ***
---
Signif. codes:  0 ‘***’ 0.001 ‘**’ 0.01 ‘*’ 0.05 ‘.’ 0.1 ‘ ’ 1

Correlation of Fixed Effects:
     (Intr)
SexM -0.149

为了报告它,我会说“我们拟合了一个线性混合模型,以负面影响作为结果变量,性别作为预测变量,研究水平作为随机效应输入。在这个模型中,男性水平导致负面影响显着减少(β = -0.47,t(1321)=-7.06,p

那是对的吗?

然后,让我们尝试使用贝叶斯框架来拟合模型rstanarm:

fitB <- stan_lmer(Negative_Affect ~ Sex + (1|Study_Level),
                  data=df,
                  prior=normal(location=0, scale=1), 
                  prior_intercept=normal(location=0, scale=1),
                  prior_PD=F)
print(fitB, digits=2)

这将返回:

stan_lmer
 family:  gaussian [identity]
 formula: Negative_Affect ~ Sex + (1 | Study_Level)
------

Estimates:
            Median MAD_SD
(Intercept)  0.02   0.10 
SexM        -0.47   0.07 
sigma        0.97   0.02 

Error terms:
 Groups      Name        Std.Dev.
 Study_Level (Intercept) 0.278   
 Residual                0.973   
Num. levels: Study_Level 8 

Sample avg. posterior predictive 
distribution of y (X = xbar):
         Median MAD_SD
mean_PPD 0.00   0.04  

------
For info on the priors used see help('prior_summary.stanreg').

我认为比median是系数后验分布的中位数,mad_sd相当于标准差。这些参数接近频率模型的贝塔值和标准误差,这令人放心。但是,我不知道如何形式化并用文字表达输出。

此外,如果我对模型进行总结(summary(fitB, probs=c(.025, .975), digits=2)),我得到后验分布的其他特征:

...
Estimates:
                                             mean     sd       2.5%     97.5% 
(Intercept)                                    0.02     0.11    -0.19     0.23
SexM                                          -0.47     0.07    -0.59    -0.34
...

像下面这样的东西好吗?

“我们在贝叶斯框架内拟合了一个线性混合模型,以负面影响作为结果变量,性别作为预测变量,研究水平作为随机效应输入。系数和截距的先验设置为正态(平均值 = 0,标准差 = 1) ). 在该模型中,与男性水平相关的系数后验分布的特征表明负面影响有所减少(平均值 = -0.47,sd = 0.11,95% CI[-0.59,-0.34])。

感谢您的帮助。


以下是个人观点,可能会也可能不会被心理学期刊接受。

为了报告它,我会说“我们拟合了一个线性混合模型,以负面影响作为结果变量,性别作为预测变量,研究水平作为随机效应输入。在这个模型中,男性水平导致负面影响显着减少(β = -0.47,t(1321)=-7.06,p

那是对的吗?

从频率论者的角度来看,这被认为是正确的。

从贝叶斯角度来看,关键概念是(当然以模型为条件)

  1. 真实效果小于后验中位数的概率为 0.5,真实效果大于后验中位数的概率为 0.5。频率论者倾向于将后中位数视为数值最优值。
  2. The posterior_interval函数会产生围绕中位数的可信区间,默认概率为 0.9(尽管较低的数字会产生更准确的边界估计)。因此,您可以合理地说,真实效果处于这些界限之间的概率为 0.9。频率论者倾向于将置信区间视为可信区间。
  3. The as.data.frame函数将使您能够访问原始抽奖,所以mean(as.data.frame(fitB)$male > 0)得出同一研究中男性和女性之间结果的预期差异为正的概率。频率论者倾向于将这些概率视为 p 值。

对于贝叶斯方法,我会说

我们使用马尔可夫链蒙特卡罗拟合线性模型,以负面影响作为结果变量,以性别作为预测变量,并且允许截距因研究水平而变化。

然后谈谈使用上面三个概念的估计。

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

如何使用 rstanarm 以 APA 风格报告贝叶斯线性(混合)模型? 的相关文章

随机推荐

  • 反应应用程序。无法对尚未安装的组件调用 setState

    当我尝试更改输入字段上的值时 收到以下警告 无法对尚未安装的组件调用 setState 这是一个空操作 但它可能表明您的应用程序中存在错误 相反 分配给this state直接或定义一个state 具有登录组件中所需状态的类属性 我无法理解
  • GetObject 和 VB6 ActiveX exe

    The VB6 有关 GetObject 的帮助 http msdn microsoft com en us library aa445016 VS 60 aspx说 您不能使用 GetObject 来获取对使用 Visual Basic
  • 使用 Spring @RestController 处理带有 ZonedDateTime 参数的 HTTP GET

    我正在创建一个端点 它将接收日期以在服务器端进行一些过滤 代码如下所示 RequestMapping value test method RequestMethod GET produces MediaType APPLICATION JS
  • 如何将合并标签用于RelativeLayout root?

    我有一个扩展的自定义视图RelativeLayout并在 xml 文件中定义其内容 有RelativeLayout作为其根 我怎样才能避免有两个RelativeLayouts在我的自定义布局膨胀之后 我尝试使用merge标记作为我在 xml
  • 强制 window.open() 在 chrome 中创建新选项卡

    我使用 window open 来填充具有不同内容的新窗口 主要是来自自动化流程的报告和存储的 HTML 我注意到 Chrome 在 window open 方面有一些非常不一致的行为 我的一些调用将创建一个新选项卡 首选行为 一些调用会导
  • 导出到 Excel 时 SSRS 报告颜色发生变化

    当我们将 SSRS 2008 报告导出到 Excel 然后将某个范围从该文件复制到另一个 Excel 文件时 报告中使用的颜色会更改为完全不同的颜色 当我们使用 条件格式 为某些数据着色时 这非常烦人 这些细胞具有特定的颜色 有什么想法吗
  • 包括与 Ant 一起使用的 Google AdMob SDK

    我正在使用 新的 AdMob SDK 按照以下说明进行操作这个谷歌网站 http code google com mobile ads docs android fundamentals html 我们应该整合GoogleAdMobAdsS
  • 更改 iPhone SDK 中的徽章和推送通知

    我尝试过推送通知教程 http mobiforge com developing story programming apple push notification services 它工作正常 但问题是徽章 当我单击视图时 会出现应用程序
  • 如何在 salesforce 中刷新 OAuth 2.0 中的 access_token

    我正在开发一个 salesforce 应用程序并使用 OAuth 2 0 登录 我有一个刷新令牌 如何通过 OAuth 2 0 向 salesforce 发送包含特定用户刷新令牌的请求来获取新的 access token 取自 在 Forc
  • Python 字节连接

    我想将字节字符串的第一个字节连接到字符串的末尾 a b x14 xf6 a a 0 我收到错误 Traceback most recent call last File
  • Crystal Reports 中按两个字段分组

    如何在水晶报表中按两个不同的字段进行分组 敌人的例子 val1 val2 val3 val6 val1 val12 val3 val7 val11 val2 val3 val8 val11 val12 val3 val9 我希望报告看起来像
  • HTML 选择框(下拉菜单)的高度

    有人可以确认它吗not可以更改单击选择框时显示的下拉列表的高度 select 的 size 属性使它看起来像一个列表 CSS 中的 height 属性也没有多大用处 确认的 下拉的部分设置为 显示所有条目所需的高度 或 The height
  • 如何在plsql中的过程体内创建游标

    我要创建光标动态地位于过程体内我也必须使用for loop而不是下面的代码 我做了动态游标 但无法使用 for 循环 PROCEDURE myprocedure AS LV TEST CUR SYS REFCURSOR LV QUERY V
  • 如何使用 SymPy 和 LaTeX 显示百分比字符

    我一直在使用 Sympy 来研究电力系统的方程 并且已经进行了很多处理 以便方程看起来不错且体面 所有值都包含遵循它们的单位 甚至通过方程组合也是如此 我认为这非常重要 因为目标是我正在编写的用于计算我的值的文档是我将呈现的最终文档 我正在
  • Scala (2.8) 清单如何工作?

    我有一些 Scala 代码大量使用了泛型 并且我从文档中了解到 在参数化约束中使用清单可以帮助我解决类型擦除问题 例如 我想实例化泛型类型的新对象 只是 我想更多地了解它是如何工作的 它几乎感觉就像某种哈希图 为每个调用站点获取一个条目 这
  • 我可以使用 mono 的 AOT 功能来本机“预编译”.NET DLL/EXE,以使它们更难进行逆向工程吗?

    我可以使用 mono 的 AOT 提前编译 功能来本机 预编译 我自己的一些 NET DLL 和 或 EXE 的全部或部分 以使它们更难以进行逆向工程吗 我正在使用 Windows 7 x64 但我也有 x86 XP 机器 和 NET 3
  • 使用 ASP.NET MVC 设置路由 {tenant}/{controller}/{action}/{id}?

    我想设置一个多租户 ASP NET MVC 应用程序 理想情况下 这个应用程序应该有一条路线 tenant controller action id each tenant代表应用程序的逻辑实例 简单地独立的多用户帐户 我仍然不清楚具体的细
  • Vuetify / DataTable:更改“显示分组依据”按钮的样式?

    我想使用 vuetify 数据表中的默认分组功能 它工作正常 但我想更改分组的默认按钮样式并将其替换为图标 那可能吗 如果我检查开发工具中的按钮 它只会显示 span group span 在文档中只找到这个 https vuetifyjs
  • 使用 FIRST_VALUE 而不在分组依据中包含内部列

    我正在使用一个看起来像这样的表 userID eventDate eventName 1 2019 01 01 buySoup 2 2019 01 01 buyEggs 2 2019 01 03 buyMilk 2 2019 01 04 b
  • 如何使用 rstanarm 以 APA 风格报告贝叶斯线性(混合)模型?

    我目前正在努力解决如何按照 APA 6 建议报告输出的问题rstanarm stan lmer 首先 我将在频率论方法中拟合混合模型 然后尝试使用贝叶斯框架执行相同的操作 这是获取数据的可重现代码 library tidyverse lib