glht()和lsmeans()无法在lmer()模型中找到对比

时间:2018-01-13 15:02:03

标签: r

我有以下情况:

enter image description here

我的固定效果模型在名为'作曲家的参与者组中找到Relation_PenultimateLast的主要效果。因此,我希望找到Relation_PenultimateLast在统计上与其他级别不同的程度。

f.e.model.composers = lmer(Score ~ Relation_PenultimateLast + (1|TrajectoryType) + (1|StimulusType) + (1|Relation_FirstLast) + (1|LastPosition), data=datasheet.complete.composers)

概要(f.e.model.composers)

Random effects:
 Groups             Name        Variance Std.Dev.
 TrajectoryType     (Intercept) 0.005457 0.07387 
 LastPosition       (Intercept) 0.036705 0.19159 
 Relation_FirstLast (Intercept) 0.004298 0.06556 
 StimulusType       (Intercept) 0.019197 0.13855 
 Residual                       1.318116 1.14809 
Number of obs: 2200, groups:  
TrajectoryType, 25; LastPosition, 8; Relation_FirstLast, 4; StimulusType, 4

Fixed effects:
                         Estimate Std. Error       df t value Pr(>|t|)    
(Intercept)               2.90933    0.12476 14.84800  23.320 4.15e-13 ***
Relation_PenultimateLast  0.09987    0.02493 22.43100   4.006 0.000577 ***
---
Signif. codes:  0 ‘***’ 0.001 ‘**’ 0.01 ‘*’ 0.05 ‘.’ 0.1 ‘ ’ 1

我必须对我的lmer()模型进行Tukey比较。 现在,我找到两种方法来比较Relation_PenultimateLast级别(我在这里找到它们:https://stats.stackexchange.com/questions/237512/how-to-perform-post-hoc-test-on-lmer-model):

summary(glht(f.e.model.composers, linfct = mcp(Relation_PenultimateLast = "Tukey")), test = adjusted("holm"))

lsmeans(f.e.model.composers, list(pairwise ~ Relation_PenultimateLast), adjust = "holm")

这些不起作用。 前者报道:

Variable(s) ‘Relation_PenultimateLast’ of class ‘integer’ is/are not contained as a factor in ‘model’

后者:

Relation_PenultimateLast   lsmean        SE  df lower.CL upper.CL
                      2.6 3.168989 0.1063552 8.5 2.926218  3.41176

Degrees-of-freedom method: satterthwaite 
Confidence level used: 0.95 

    $` of contrast`
     contrast  estimate SE df z.ratio p.value
     (nothing)   nonEst NA NA      NA      NA

有人可以帮我理解为什么会有这个结果吗?

1 个答案:

答案 0 :(得分:0)

首先,了解您所安装的模型是不合适的,这一点非常重要。它使用Relation_PenultimateLast作为数字预测器;因此,它符合 1,2,3和4的线性趋势,而不是将每个级别的单独估计作为因子。我也想知道,鉴于你展示的情节,为什么Test 不是在模型中;它看起来应该是(再次作为一个因素,而不是数字预测器)。我建议您获得一些统计咨询帮助,以检查您是否在研究中使用了合适的模型。也许你可以给统计学研究生一些实际应用的基础 - 一个双赢的主张。

要将Relation_PenultimateLast建模为一个因素,一种方法是将模型公式中的factor(Relation_PenultimateLast)替换为lsmeans()。这适用于glht()但不适用datasheet.complete.composers = transform(datasheet.complete.composers, Relation_PenultimateLast = factor(Relation_PenultimateLast)) f.e.model.composers = lmer(...) ### (as before, assuming Test isn't needed) 。更好的方法是在数据集中更改它:

f.e.model.composers

(顺便说一句,你必须比我更好的打字员;我使用较短的名字,虽然我鼓掌使用信息丰富的名字。)

(注意:library(emmeans) emmeans(f.e.model.composers, pairwise ~ Relation_PenultimateLast) 是否建议使用固定效应模型?它不是一个;它是一个混合模型。再次,一个顾问......)

lsmeans 包注定不推荐使用,因此我建议你使用它的延续, emmeans 包:

"tukey"

我建议使用默认的Test调整而不是Holm用于此应用程序。

如果模型中确实存在model.composers = lmer(Score ~ Relation_PenultimateLast * factor(Test) + ...) ### A plot like the one shown, but based on the model predictions: emmip(model.composers, Relation_PenultimateLast ~ Test) ### Estimates and comparisons of Relation_PenultimateLast for each Test: emmeans(model.composers, pairwise ~ Relation_PenultimateLast | Test) ,那么看起来您需要包含交互;所以它会是这样的:

<div class="">
        <label>Folder:</label>
        <select name="dir" id="dir">
            <option value=''>------- Select --------</option>
            <?php 
            $sql = "select * from `dir`";
            $res = mysqli_query($con, $sql);
            if(mysqli_num_rows($res) > 0) {
                while($row = mysqli_fetch_object($res)) {
                    echo "<option value='".$row->id."'>".$row->directory."</option>";
                }
            }
            ?>
        </select>

        <label>Image Number:</label>
        <select name="images" id="images"><option>------- Select --------</option></select>
    </div>

    <img id="img" src=""/>