LMER因子与数字交互

时间:2018-01-23 20:22:29

标签: r lme4 interaction ordinal

我正在尝试使用lmer来建模我的数据。

我的数据有2个独立变量和一个因变量。

第一个是“变形”,其值为“相同”,“近”,“远”      第二个是“响应”,可以是“旧”或“新” 因变量是“Fix_Count”。

所以这是一个示例数据框,以及我目前运行线性模型的内容。

Subject <- c(rep(1, times = 6), rep(2, times = 6))
 q <- c("Identical", "Near", "Far")
 Morph <- c(rep(q, times = 4))
 t <- c(rep("old", times = 3),rep("new", times=3))
 Response <- c(rep(t, times = 2))
 Fix_Count <- sample(1:9, 12, replace = T)
 df.main <- data.frame(Subject,Morph, Response, Fix_Count, stringsAsFactors = T)
df.main$Subject <- as.factor(df.main$Subject)

 res = lmer(Fix_Count ~ (Morph * Response) + (1|Subject), data=df.main)
 summary(res)

输出如下: enter image description here

问题是我不希望它组合,而是Morph的整体互动:响应。

我可以通过将Morph转换为数字而不是因子来实现此目的。然而,我不确定在概念上是否有意义,因为值不能正确表示1,2,3但是低中高(有序但定性)。

所以:1。是否可以运行lmer来获得2个因子变量之间的交互作用? 或者你认为数字是一个很好的方式来分类“身份”,“近”,“远”? 3.我尝试设置对比以确定是否可以提供帮助,但有时我会收到错误,有时候似乎没有任何改变。如果对比会有所帮助,你能解释一下我将如何实现这个目标吗?

非常感谢您提供的任何帮助。我还将此问题发布到堆栈交换,因为我不确定这是编码问题还是统计问题。但是,一旦我知道,我可以从不太相关的论坛中删除它。

最好,柯克

1 个答案:

答案 0 :(得分:4)

我看到两个问题。首先,您应该为Subject使用因子变量。它显然不是连续或整数变量。 并且(可能)解决了部分问题,有interaction函数用于处理回归公式。我很确定公式接口会解释您用作interaction调用的“*”运算符,但输出的标签可能不同,可能更符合您的喜好。 I获得相同数量的系数:

res = lmer(Fix_Count ~ interaction(Morph , Response) + (1|Subject), data=df.main)

但这并不是一种改进。 但是,它们与使用Morph*Response创建的模型不同。可能有一组不同的对比选项。

获得交互的整体统计测试的方法是比较嵌套模型:

res_simple = lmer(Fix_Count ~ Morph + Response + (1|Subject), data=df.main)

然后为模型比较做一个anova:

anova(res,res_simple)
refitting model(s) with ML (instead of REML)
Data: df.main
Models:
res_simple: Fix_Count ~ Morph + Response + (1 | Subject)
res: Fix_Count ~ interaction(Morph, Response) + (1 | factor(Subject))
           Df    AIC    BIC  logLik deviance  Chisq Chi Df Pr(>Chisq)
res_simple  6 50.920 53.830 -19.460   38.920                         
res         8 54.582 58.461 -19.291   38.582 0.3381      2     0.8445

我的观点是,它足够接近统计与编码的界限,在任何一个论坛都可以接受。 (但是你不应该过帖。)如果你对编码答案感到满意,那么我们就完成了。如果您在理解模型比较方面需要帮助,那么您可能需要编辑CV.com的问题以请求比我更基于理论的答案。 (无论您是使用交互功能还是使用“*”运算符,我都会检查anova结果是否相同。)