gpt4 book ai didi

r - group_by() 中 mutate() 中的 lm()

转载 作者:行者123 更新时间:2023-12-04 12:19:16 25 4
gpt4 key购买 nike

我正在寻找一种方法将一列添加到我的数据表中,该列包含 residuals来自 lm(a~b)c 的不同级别分别计算的函数

有人建议我查看 sort_by(c)功能,但似乎不适用于 lm(a~b)
我的工作示例数据如下所示:

outcome data frame

列主题、试验和 rt 位于 data.frame 内,我的目标是计算 Zre_SPSS (我最初是在 SPSS 中制作的)但是来自 R功能。

我试过了

data %<>% group_by (subject) %>% 
mutate(Zre=residuals(lm(log(rt)~trial)))

但它不起作用 - Zre 被计算但不是在每个主题中单独计算,而是针对整个数据框。

任何人都可以请帮助我吗?我是一个完整的 R(和一般的编码)新手,所以如果这个问题很愚蠢或者是一个 duplicate,请原谅我。 ,很可能我不了解其他解决方案,或者他们不是我寻找的解决方案。此致。

根据 Ben Bolker 的要求,这里是从 excel 屏幕截图生成数据的 R 代码
#generate data
subject<-c(1,1,1,1,1,1,2,2,2,2,2,2,3,3,3,3,3,3)
subject<-factor(subject)
trial<-c(1,2,3,4,5,6,1,2,3,4,5,6,1,2,3,4,5,6)
rt<-c(300,305,290,315,320,320,350,355,330,365,370,370,560,565,570,575,560,570)

#Following variable is what I would get after using SPSS code
ZreSPSS<-c(0.4207,0.44871,-1.7779,0.47787,0.47958,-0.04897,0.45954,0.45487,-1.7962,0.43034,0.41075,0.0407,-0.6037,0.0113,0.61928,1.22038,-1.32533,0.07806)

#make data frame
sym<-data.frame(subject, trial, rt, ZreSPSS)

最佳答案

它看起来像是 dplyr 0.5 中的一个错误 mutate ,其中 lm组内仍将尝试使用完整数据集。您可以使用 do反而:

sym %>% group_by(subject) %>% do(
{
r <- resid(lm(log(rt) ~ trial, data = .))
data.frame(., r)
})

这仍然与您的 SPSS 列不匹配,但它是您提供的数据的正确结果。您可以通过为每个主题手动拟合模型并检查残差来验证这一点。

(其他类型的残差包括用于标准化的 rstandard 和用于学生化残差的 rstudent。它们仍然与您的 SPSS 数字不匹配,但可能正是您正在寻找的。)

关于r - group_by() 中 mutate() 中的 lm(),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/40060828/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com