首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >除以因子,和lm

除以因子,和lm
EN

Stack Overflow用户
提问于 2013-10-26 05:33:23
回答 1查看 1.7K关注 0票数 3

我想将lm()应用于按subject分组的观察,但无法计算出sapply语法。最后,我想要一个数据,每一个主题1行,截距和斜率(即: subj,lm$系数1 lm$系数2的行)。

代码语言:javascript
复制
set.seed(1)
subj <- rep(c("a","b","c"), 4) # 4 observations each on 3 experimental subjects
ind <- rnorm(12) #12 random numbers, the independent variable, the x axis
dep <- rnorm(12) + .5 #12 random numbers, the dependent variable, the y axis
df <- data.frame(subj=subj, ind=ind, dep=dep)
s <- (split(df,subj)) # create a list of observations by subject

我可以从s中提取一组观察结果,生成一个数据帧,并得到我想要的:

代码语言:javascript
复制
df2 <- as.data.frame(s[1])
df2
lm1 <- lm(df2$a.dep ~ df2$a.ind)

lm1$coefficients[1]
lm1$coefficients[2]

我在遍历s的所有元素并将数据转换为我想要的最终表单时遇到了困难:

代码语言:javascript
复制
lm.list <- sapply(s, FUN= function(x)
  (lm(x[ ,"dep"] ~ x[,"ind"])))
a <-as.data.frame(lm.list)

我觉得我需要对下面的结构进行某种转换;列(a,b,c)是我想要的行,但t(a)不工作。

代码语言:javascript
复制
head(a)
                                                            a
coefficients                             0.1233519, 0.4610505
residuals        0.4471916, -0.3060402, 0.4460895, -0.5872409
effects          -0.6325478, 0.6332422, 0.5343949, -0.7429069
rank                                                        2
fitted.values 0.74977179, 0.09854505, -0.05843569, 0.47521446
assign                                                   0, 1
                                                             b
coefficients                              1.1220840, 0.2024222
residuals     -0.04461432, 0.02124541, 0.27103003, -0.24766112
effects           -2.0717363, 0.2228309, 0.2902311, -0.2302195
rank                                                         2
fitted.values       1.1012775, 0.8433366, 1.1100777, 1.0887808
assign                                                    0, 1
                                                         c
coefficients                          0.2982019, 0.1900459
residuals     -0.5606330, 1.0491990, 0.3908486, -0.8794147
effects       -0.6742600, 0.2271767, 1.1273566, -1.0345665
rank                                                     2
fitted.values   0.3718773, 0.2193339, 0.5072572, 0.2500516
assign                                                0, 1
EN

回答 1

Stack Overflow用户

发布于 2013-10-26 14:05:56

nlme::lmList怎么样?

代码语言:javascript
复制
library(nlme)

coef(lmList(dep~ind|subj,df))
##   (Intercept)         ind
## a   0.7137943  0.07125591
## b  -0.6817331  1.14520962
## c   0.5717372 -1.03037257

如果你想的话可以把这个转过来。

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

https://stackoverflow.com/questions/19603239

复制
相关文章

相似问题

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