首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >使用简单线性回归的结果创建数据帧

使用简单线性回归的结果创建数据帧
EN

Stack Overflow用户
提问于 2012-02-22 05:59:18
回答 3查看 3.3K关注 0票数 2

我有一系列的个人身体状况指数。我想要为每个人确定身体状况指数随时间的演变。换句话说,我想为每个人创建一个线性回归,然后将所有结果(截取和斜率)收集到一个数据帧中,如下所示:

第一列:个人id

第二列:截取

Thirs列:坡度

这就是我所尝试的(只使用我的数据集的一个样本),但我只得到了所有结果的列表,并且我不知道如何将它们重新组合到一个数据帧中:

代码语言:javascript
复制
individual <- c(1,1,6,8,8,9,9,9,12,12)
day <- c(4,17,12,12,17,3,9,22,13,20)
condition <- c(0.72, 0.72, 0.67, 0.73, 0.76, 0.65, 0.68, 0.78, 0.73, 0.71)       
test <- data.frame(individual, day, condition)
ind.id <- unique(test$individual)
ind.list <- lapply(1:length(ind.id), function(i){ subset(test, test$individual==ind.id[i])})
lms <- lapply(ind.list, lm, formula=condition~day)

谢谢!

EN

回答 3

Stack Overflow用户

回答已采纳

发布于 2012-02-22 06:06:48

我会使用plyr包,它对你有很好的好处:

  1. function ddply()将按单个或任何其他分组变量来估计lm(),默认情况下为data.frame

代码:

代码语言:javascript
复制
library(plyr)
ddply(test, "individual", function(x) {
  model <- lm(condition ~ day, data = x)
  coef(model)
})

返回:

代码语言:javascript
复制
  individual (Intercept)           day
1          1   0.7200000  1.207763e-17
2          6   0.6700000            NA
3          8   0.6580000  6.000000e-03
4          9   0.6242403  6.978799e-03
5         12   0.7671429 -2.857143e-03

如果你不想使用plyr,或者只想知道如何使用base R来做这件事,这里有一种方法。注意,默认情况下,列表对象lms没有任何与之关联的名称,因此您需要确保ind.id与正确的系数相匹配。我自己可能会使用plyr方法。

代码语言:javascript
复制
> cbind(ind.id, do.call("rbind",lapply(lms, coef)))
   ind.id (Intercept)           day
1       1   0.7200000  1.207763e-17
6       6   0.6700000            NA
8       8   0.6580000  6.000000e-03
9       9   0.6242403  6.978799e-03
12     12   0.7671429 -2.857143e-03
票数 4
EN

Stack Overflow用户

发布于 2012-02-22 06:04:07

我喜欢在这些情况下使用plyr

代码语言:javascript
复制
ldply(lms, function(x) x$coefficients)


  (Intercept)           day
1   0.7200000  1.207763e-17
2   0.6700000            NA
3   0.6580000  6.000000e-03
4   0.6242403  6.978799e-03
5   0.7671429 -2.857143e-03
票数 2
EN

Stack Overflow用户

发布于 2012-02-22 06:47:22

看看nlme包中的lmList。更普遍的是,您可能希望适合单个混合模型(nlmelme4),而不是每个主题的单独模型。

票数 2
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/9385882

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档