LMER 因子与数字交互
LMER Factor vs numeric Interaction
我正在尝试使用 lmer 为我的数据建模。
我的数据有 2 个自变量和一个因变量。
第一个是 "Morph",其值为 "Identical"、"Near"、"Far"。
第二个是 "Response" 可以是 "Old" 或 "New".
因变量是 "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)
输出如下所示:
问题是我不希望它进行组合,而是 Morph:Response.
的整体交互
我可以通过将 Morph 转换为数字而不是因子来实现这一点。但是,我不确定从概念上讲这是否有意义,因为这些值不能正确表示 1、2、3,而是低中高(有序但定性)。
所以:1. 是否有可能 运行 lmer 得到 2 个因子变量之间的交互作用?
2. 或者你认为数字是 class "Identica", "Near", "Far" 的好方法?
3. 我曾尝试设置对比以查看是否有帮助,但有时我会出错,而其他时候似乎什么都没有改变。如果对比有帮助,你能解释一下我将如何实现吗?
非常感谢您提供的任何帮助。我也已将此问题发布到堆栈交换,因为我不确定这是编码问题还是统计问题。但是,一旦我知道,我可以将它从不太相关的论坛中删除。
最好的,柯克
我看到两个问题。首先,您应该为主题使用因子变量。它显然不是连续变量或整数变量。 为了(可能)解决您的部分问题,有一个 interaction
函数旨在处理回归公式。我很确定公式界面将解释您用作对 interaction
的调用的“*”运算符,但输出的标签可能会有所不同,也许更符合您的喜好。我得到相同数量的系数:
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(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
我的观点是,它足够接近统计与编码的边界,因此在任何一个论坛上都可以接受。 (但是,您不应该越过 post。)如果您对编码答案感到满意,那么我们就完成了。如果您在理解模型比较方面需要帮助,那么您可能需要编辑 CV.com 的问题以请求比我的更基于理论的答案。 (我检查以确保 anova
结果是相同的,无论您是使用交互功能还是“*”运算符。)
我正在尝试使用 lmer 为我的数据建模。
我的数据有 2 个自变量和一个因变量。
第一个是 "Morph",其值为 "Identical"、"Near"、"Far"。
第二个是 "Response" 可以是 "Old" 或 "New".
因变量是 "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)
输出如下所示:
问题是我不希望它进行组合,而是 Morph:Response.
的整体交互我可以通过将 Morph 转换为数字而不是因子来实现这一点。但是,我不确定从概念上讲这是否有意义,因为这些值不能正确表示 1、2、3,而是低中高(有序但定性)。
所以:1. 是否有可能 运行 lmer 得到 2 个因子变量之间的交互作用?
2. 或者你认为数字是 class "Identica", "Near", "Far" 的好方法?
3. 我曾尝试设置对比以查看是否有帮助,但有时我会出错,而其他时候似乎什么都没有改变。如果对比有帮助,你能解释一下我将如何实现吗?
非常感谢您提供的任何帮助。我也已将此问题发布到堆栈交换,因为我不确定这是编码问题还是统计问题。但是,一旦我知道,我可以将它从不太相关的论坛中删除。
最好的,柯克
我看到两个问题。首先,您应该为主题使用因子变量。它显然不是连续变量或整数变量。 为了(可能)解决您的部分问题,有一个 我得到相同数量的系数:interaction
函数旨在处理回归公式。我很确定公式界面将解释您用作对 interaction
的调用的“*”运算符,但输出的标签可能会有所不同,也许更符合您的喜好。
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(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
我的观点是,它足够接近统计与编码的边界,因此在任何一个论坛上都可以接受。 (但是,您不应该越过 post。)如果您对编码答案感到满意,那么我们就完成了。如果您在理解模型比较方面需要帮助,那么您可能需要编辑 CV.com 的问题以请求比我的更基于理论的答案。 (我检查以确保 anova
结果是相同的,无论您是使用交互功能还是“*”运算符。)