【发布时间】:2016-07-04 02:09:48
【问题描述】:
我正在尝试使用lm() 函数和plyr 包为我的数据中的每个段拟合一个模型,因为我的数据是按一个键分组的。
我已经设法运行模型并获得系数以及 R^2 和 adj r 平方,但我正在努力处理 p 值。
library("plyr")
#Sample data
test_data <- data.frame(key = c("a","a","a","a","a","b","b","b","b","b"),
y = c(100,180,120,60,140,200,220,240,260,280),
x1 = c(50,60,79,85,90,133,140,120,160,170),
x2 = c(20,18,47,16,15,25,30,25,20,15))
#model
model_1 <- dlply(test_data, .(key),
function(test_data) lm(y ~ x1 + x2,data = test_data))
#coefficients
ldply(model_1, coef)
#adj r-squared
ldply(model_1, function(x) summary(x)$r.squared)
我已经尝试过这个,它得到了我的键和 p 值,但它没有变量的名称,我需要稍后将输出与模型中的系数合并。
#p-values but missing the variable names
ldply(model_1, function(x) summary(x)$coefficients)[,c(1,5)]
我尝试使用 Do 和 tidy 从 dplyr 包中拟合模型,这适用于小型数据集,因为它实际上返回了我需要的所有内容,但我的实际数据包含超过 1,000 种不同段和 RStudio 最终崩溃。
【问题讨论】:
-
nlme::lmList可能对您来说也很有趣。看看这个!除此之外,我很惊讶地听到dplyr::do方法与broom::tidy结合崩溃。您是否有机会重新创建错误? -
@coeffeinjunky - 抱歉,“崩溃”是指 RStudio 变得无响应,因此没有“错误”。当我在我的数据集上运行 dplyr 时,它在大约 4 秒内通过了 1000 多个模型,但是当我尝试“做”和“整理”时,它运行了将近 10 分钟,而 RStudio 变得没有响应。