dplyr - 使用 dplyr 从多个回归模型中提取斜率
问题描述
我想使用 dplyr 为每个人和每种药物(两者都是因子变量)拟合多个模型,但我遇到了一个错误,我不太确定出了什么问题。我想提取每个模型的斜率来计算个体之间拟合模型的成对关系的平均斜率。
df.dr <- data.frame(
drug = factor(rep(rep(LETTERS[1:4], each = 5), 4)),
individual = factor(rep(letters[1:4], each = 20)),
dose = rep(c(10,5,1,0.5,0.1), times = 16),
viability = runif(80, min = 50, max = 200))
dfDrugInd = df.dr %>% group_by(drug, individual) %>%
do(fitAll = lm(viability ~ ., data = .))
dfDrugIndSlope = tidy(dfDrugInd, fitAll)$estimate[2,1]
mean(dfDrugIndSlope)
解决方案
我仍然不完全明白为什么需要以这种方式进行回归分析(一个一个,然后平均系数),下面的代码应该可以满足您的需求:
但是您的问题似乎喜欢一个mixed-effect
模型,您可能希望使用该lm4
包来实现您的结果。
df.dr <- data.frame(
drug = factor(rep(rep(LETTERS[1:4], each = 5), 4)),
individual = factor(rep(letters[1:4], each = 20)),
dose = rep(c(10,5,1,0.5,0.1), times = 16),
viability = runif(80, min = 50, max = 200))
# split the dataset by group
df.sp <- split(df.dr, df.dr$drug)
# run separate `lm` on each group and store the results in a list
r <- lapply(df.sp, function(x) do.call("lm", list(viability ~ individual + dose, x)))
# extract the coefficient of target variable, say `individualc`
indi.cof <- sapply(r, function(x)x$coefficients[["individualc"]])
# get the mean
mean(indi.cof)
推荐阅读
- ranking - 信息检索中排名结果的评估
- javascript - 无法从函数返回数组
- reactjs - 函数的useSelector钩子?
- android - Android 更新并取回 recyclerview 内容
- c++ - How to declare a variable whose type is the generics of another object?
- azure - 使用 powershell 将 Azure 测试计划克隆到新的区域路径
- go - Golang pongo2 过滤器返回不正确的值
- javascript - FullCalendar 错误:未捕获的 TypeError:calendar.fullCalendar 不是函数
- c++ - 当具体消息是从 XML 自动生成的 C++ 类时的通用消息
- android - 电容器为用户设置所需的应用程序版本