如何使用R

时间:2017-07-15 13:38:32

标签: r lme4 interaction mixed-models contrast

我想弄清楚两个变量的平均值之间的差异是大于/小于两个不同变量的平均值之间的差异。

我有一个4乘4的主体完全交叉设计,带有二元因变量,我使用广义混合效应线性模型(使用日志链接函数)建模,使用随机副主题和逐项拦截lme4。

第一个变量(角色)具有以下等级:非常好的角色,性格温和,角色极端恶劣,角色稍有不良

第二个变量(结果)具有以下水平:非常好的结果,轻微的良好结果,极其糟糕的结果和轻微的不良结果。

参与者强制选择是/否决定角色是否应得到多个结果。我将“是”响应编码为1,将“否”响应编码为0.因此,模型预测参与者将结果判断为应得的比例。较高的比例表示参与者对结果进行评分的比例较高,这是一种特征类型。

每个角色结果条件中有8个项目(例如,8个项目,其中一个非常好的角色经历了轻微的负面结果)。

Here is a graph of the data

我感兴趣的是阳性结果(极度阳性结果和轻度阳性结果的平均值)与阴性结果(极端阴性和轻度阴性结果的平均值)之间的差异是否对正面特征更大(极端正面和温和的平均值)正面字符)与负面字符(极端负面和轻度负面字符的平均值)相比较。

图表表明应该如此。参与者认为正面特征是高度值得肯定的结果(avg prop = .965),并且不值得消极结果(avg prop = .039)。那是0.926的差异。相比之下,参与者认为负面特征平均只是略微值得肯定的结果(平均道具= .59),平均负面结果略微不值(平均道具= .39)。这是.20的差异。

因此,我想要做的是测试正面字符的正面和负面结果之间的.926差异是否为sig。大于负面人物的正面和负面结果的.20差异。

现在,我一直在使用lsmeans软件包中的“对比”功能来计算对于极端正/负字符和轻度正/负字符是否存在正面和负面结果的差异。这不是我要问的问题。我将提供一些代码来说明我是如何做到的。

首先,这是数据:download as csv

现在可以复制/粘贴一些R代码:

Data <- read.csv(file.choose())

require(lme4)
require(lsmeans)

Model <- glmer(Choice ~ Character*Outcome + (1|Item) + (1|Subject), dat=Data, family="binomial", control = glmerControl(optimizer = "bobyqa"))

lsmip(Model, Character~Outcome, type="response") #Plot of the data

Model.means <- lsmeans(Model, specs = c("Character", "Outcome"), type="response")

levels(interaction(Data$Character,Data$Outcome)) #to help with the contrasts

#Here are the contrasts that I am currently using

contrast(Model.means, list(ExtPosChar.vs.MildPosChar.for.GoodOutcomes = c(0,0,0,0,0,0,0,0,0,.5,0,-.5,0,.5,0,-.5),
ExtPosChar.vs.MildPosChar.for.BadOutcomes = c(0,.5,0,-.5,0,.5,0,-.5,0,0,0,0,0,0,0,0)))

contrast(Model.means, list(ExtNegChar.vs.MildNegChar.for.GoodOutcomes = c(0,0,0,0,0,0,0,0,.5,0,-.5,0,.5,0,-.5,0),
ExtNegChar.vs.MildNegChar.for.BadOutcomes = c(.5,0,-.5,0,.5,0,-.5,0,0,0,0,0,0,0,0,0)))

0 个答案:

没有答案