问题标签 [multcompview]

For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.

0 投票
1 回答
33 浏览

r - 如何在不改变 p 值调整方法的情况下按组分隔 multcomp 中的紧凑型字母显示(CLD)?

问题

我想绘制来自三向因子实验的估计边际均值,其中字母表示显着不同的均值,并针对多重比较进行了调整。我目前的工作流程是用 拟合模型lmer(),用 计算估计边际均值emmeans(),然后用 实现紧凑型字母显示算法cld()

我的问题是,当您在同一个图上绘制所有三向交互时,该图太忙了。所以我想拆分情节并为每个子情节生成不同的字母集,以“a”开头。问题在于,当我使用by参数 incld将其拆分时,它会对每组内的多重比较进行单独的更正by。因为现在每组中的测试较少,所以这会导致不那么保守的校正。但是,如果我尝试手动拆分cld()没有by组,我将不得不为每个子图手动重新实现字母算法。我想我可以这样做,但它似乎很麻烦。我正在尝试与客户共享此代码以供他稍后修改,因此该解决方案可能太复杂了。有没有人有一个简单的方法:

  1. 获取对所有组cld()使用一个组合校正的输出。by
  2. 使用相对简单的方法,将每个子组的紧凑字母显示减少到最少的必要字母数。

可重现的例子

加载包和数据。

拟合模型并获得估计的边际均值。

版本 1

在这个版本中,我将 CLD 视为一个整体,正确使用 Sidak 调整进行 496 次测试。但是,假设我只想绘制f2 == 'bar'. 这些字母不再正确,因为有些是多余的(需要少于 8 个)。有什么功能可以减少字母吗?

输出

版本 2

在这个版本中,我使用by参数 tocld()来分割f2。这减少了每个组内的字母,但 Sidak 调整现在不那么保守了。例如,第 8 行和第 16 行在调整后的 alpha 水平上与上面的比较没有显着差异,但现在它们不同了。但我不想更改使用的测试,只是为了绘制数据的一个子集。有没有办法指定我作为一个整体调整的测试数量,即使cld是与组分开by

输出