普通网友 2023-06-08 15:42 采纳率: 0%
浏览 40
已结题

r的lmm模型如何不将期待产出的水平设置为基准变量?

我用r做lmm模型,对1个具有3个水平的固定因子的原始数据进行了宽转长的操作。但是我的结果默认将其中一个水平的固定因子作为分类变量处理了,该怎么办?

data2 <- speed%>%pivot_longer(4:6,names_to='strategy', values_to='Speed')%>% filter(Speed>0)
dummies <- model.matrix(~ as.numeric(data2$strategy == "Conventionally.indirect.strategy.speech.rate") - 1, data = data2)
dummies <- model.matrix(~ as.numeric(data2$strategy == "Direct.strategy.speech.rate") - 1, data = data2)
dummies <- model.matrix(~ as.numeric(data2$strategy == "Non.Conventionally.indirect.strategy.speech.rate") - 1, data = data2)
data3 <- cbind(data2, dummies)
model <- lmer(Speed ~ strategy + 
                Chinese.proficiency.levels + 
                strategy:Chinese.proficiency.levels + 
                (1 | Speakers), data = data3)

在代码中,我尝试设置虚拟变量,好像没啥用,最后还是产出了2个水平。所以……求解答。

  • 写回答

5条回答 默认 最新

  • 是小韩呀 2023-06-12 16:40
    关注
    获得0.75元问题酬金

    在你的代码中,产生了多个dummies变量,但是这些变量并没有在后续的模型拟合中使用。因此,无论你生成了多少个虚拟变量,最终的模型仍然会将固定因子的一个水平作为分类变量处理。
    要将固定因子的所有水平都作为分类变量处理,你可以使用factor()函数将其转换为因子变量。下面是修改后的代码示例:

    data2 <- speed %>%
      pivot_longer(4:6, names_to = 'strategy', values_to = 'Speed') %>%
      filter(Speed > 0)
    
    data2$strategy <- factor(data2$strategy)  # 将strategy列转换为因子变量
    
    model <- lmer(Speed ~ strategy + 
                    Chinese.proficiency.levels + 
                    strategy:Chinese.proficiency.levels + 
                    (1 | Speakers), data = data2)
    
    
    

    通过将data2$strategy列转换为因子变量,lmer()函数将会将所有水平都作为独立的分类变量处理。

    请注意,转换为因子变量后,模型结果的解释可能会有所改变。因此,在使用转换后的数据进行后续分析之前,建议仔细考虑转换的影响

    评论

报告相同问题?

问题事件

  • 系统已结题 6月16日
  • 修改了问题 6月8日
  • 创建了问题 6月8日