对所有变量X和响应G进行回归分析,对R中一个数据帧下发现的所有数据帧

问题描述 投票:0回答:3

我有一个看起来像这样的数据框(df):

group.no Amount Response
1          5       10
1         10       25
1          2       20
2         12       20
2          4        8
2          3        5

并且我已根据其组号将data.frame拆分为几个data.frame,并带有

  out <- split( df , f = df$group.no )

现在,我要对“新”中所有新data.frames的数量〜响应之间的lm进行lm回归分析。请考虑这是一个示例,我在“ out”中有500个分割的data.frames

r regression analysis bulk
3个回答
0
投票

根据要对回归进行的处理,可以先使用magrittrdplyr进行拆分,然后创建线性回归列表:

library(magrittr) #alternative library(dplyr)
df %>% split(.$group.no) %>% lapply(function(x) lm(Amount ~ Response, data = x))

如果您希望避免使用dplyr语法,则可以将单个lapply调用用作

lapply(split(df, df$group.no), function(x) lm(Amount ~ Response, data = x))

0
投票

out是数据帧的列表,因此您可以使用lapply()估算每个数据帧的回归。

mods <- lapply(out, lm, formula=y~x) 

然后mods将是型号列表。


0
投票

假定末尾的注释中可重复显示数据。如果您不想合并标准错误,请指定pool = FALSE

library(nlme)
lmList(Response ~ Amount | group.no, DF)

或执行完全独立回归的方法:

by(DF, DF$group.no, function(DF) lm(Response ~ Amount, DF))

注意

Lines <- "group.no Amount Response
1          5       10
1         10       25
1          2       20
2         12       20
2          4        8
2          3        5"
DF <- read.table(text = Lines, header = TRUE)
© www.soinside.com 2019 - 2024. All rights reserved.