为了账号安全,请及时绑定邮箱和手机立即绑定

线性回归与In R中的群

/ 猿问

线性回归与In R中的群

慕码人8056858 2019-06-21 15:24:35

线性回归与In R中的群

我想在R中使用lm()功能。我的数据是一个年度时间序列,其中一个字段用于年份(22年),另一个字段用于州(50个州)。我想拟合每个状态的回归,这样在最后我有一个lm响应向量。我可以想象,对每个状态执行for循环,然后在循环中进行回归,并将每个回归的结果添加到向量中。然而,这似乎不太像R。在SAS中,我将执行‘by’语句,而在SQL中,我将执行‘GROUP BY’。做这件事的方式是什么?



查看完整描述

3 回答

?
largeQ

这里有一种使用lme4包裹。

 library(lme4)
 d <- data.frame(state=rep(c('NY', 'CA'), c(10, 10)),
                 year=rep(1:10, 2),
                 response=c(rnorm(10), rnorm(10)))

 xyplot(response ~ year, groups=state, data=d, type='l')

 fits <- lmList(response ~ year | state, data=d)
 fits#------------Call: lmList(formula = response ~ year | state, data = d)Coefficients:
   (Intercept)        year
CA -1.34420990  0.17139963NY  0.00196176 -0.01852429Degrees of freedom: 20 total; 16 residual
Residual standard error: 0.8201316


查看完整回答
反对 回复 2019-06-21
?
慕容森

下面是一种使用普雷一揽子:

d <- data.frame(
  state = rep(c('NY', 'CA'), 10),
  year = rep(1:10, 2),
  response= rnorm(20))library(plyr)# Break up d by state, then fit the specified model to each piece and# return a listmodels 
  <- dlply(d, "state", function(df) 
  lm(response ~ year, data = df))# Apply coef to each model and return a data frameldply(models, coef)# Print the summary of each 
  modell_ply(models, summary, .print = TRUE)


查看完整回答
反对 回复 2019-06-21
?
慕雪9262066

自2009年以来,dplyr已经发布,它实际上提供了一种非常好的方式来进行这种分组,非常类似于SAS所做的事情。


library(dplyr)


d <- data.frame(state=rep(c('NY', 'CA'), c(10, 10)),

                year=rep(1:10, 2),

                response=c(rnorm(10), rnorm(10)))

fitted_models = d %>% group_by(state) %>% do(model = lm(response ~ year, data = .))

# Source: local data frame [2 x 2]

# Groups: <by row>

#

#    state   model

#   (fctr)   (chr)

# 1     CA <S3:lm>

# 2     NY <S3:lm>

fitted_models$model

# [[1]]

# Call:

# lm(formula = response ~ year, data = .)

# Coefficients:

# (Intercept)         year  

#    -0.06354      0.02677  

#

#

# [[2]]

# Call:

# lm(formula = response ~ year, data = .)

# Coefficients:

# (Intercept)         year  

#    -0.35136      0.09385  

要检索系数和Rsquared/p值,可以使用broom包裹。该一揽子方案提供:


三个S3泛型:整洁,它总结了模型的统计结果,如回归系数;扩展,增加了原始数据的列,如预测、残差和集群分配;以及一目了然,它提供了模型级统计数据的一行汇总。


library(broom)

fitted_models %>% tidy(model)

# Source: local data frame [4 x 6]

# Groups: state [2]

#    state        term    estimate  std.error  statistic   p.value

#   (fctr)       (chr)       (dbl)      (dbl)      (dbl)     (dbl)

# 1     CA (Intercept) -0.06354035 0.83863054 -0.0757668 0.9414651

# 2     CA        year  0.02677048 0.13515755  0.1980687 0.8479318

# 3     NY (Intercept) -0.35135766 0.60100314 -0.5846187 0.5749166

# 4     NY        year  0.09385309 0.09686043  0.9689519 0.3609470

fitted_models %>% glance(model)

# Source: local data frame [2 x 12]

# Groups: state [2]

#    state   r.squared adj.r.squared     sigma statistic   p.value    df

#   (fctr)       (dbl)         (dbl)     (dbl)     (dbl)     (dbl) (int)

# 1     CA 0.004879969  -0.119510035 1.2276294 0.0392312 0.8479318     2

# 2     NY 0.105032068  -0.006838924 0.8797785 0.9388678 0.3609470     2

# Variables not shown: logLik (dbl), AIC (dbl), BIC (dbl), deviance (dbl),

#   df.residual (int)

fitted_models %>% augment(model)

# Source: local data frame [20 x 10]

# Groups: state [2]

#     state   response  year      .fitted   .se.fit     .resid      .hat

#    (fctr)      (dbl) (int)        (dbl)     (dbl)      (dbl)     (dbl)

# 1      CA  0.4547765     1 -0.036769875 0.7215439  0.4915464 0.3454545

# 2      CA  0.1217003     2 -0.009999399 0.6119518  0.1316997 0.2484848

# 3      CA -0.6153836     3  0.016771076 0.5146646 -0.6321546 0.1757576

# 4      CA -0.9978060     4  0.043541551 0.4379605 -1.0413476 0.1272727

# 5      CA  2.1385614     5  0.070312027 0.3940486  2.0682494 0.1030303

# 6      CA -0.3924598     6  0.097082502 0.3940486 -0.4895423 0.1030303

# 7      CA -0.5918738     7  0.123852977 0.4379605 -0.7157268 0.1272727

# 8      CA  0.4671346     8  0.150623453 0.5146646  0.3165112 0.1757576

# 9      CA -1.4958726     9  0.177393928 0.6119518 -1.6732666 0.2484848

# 10     CA  1.7481956    10  0.204164404 0.7215439  1.5440312 0.3454545

# 11     NY -0.6285230     1 -0.257504572 0.5170932 -0.3710185 0.3454545

# 12     NY  1.0566099     2 -0.163651479 0.4385542  1.2202614 0.2484848

# 13     NY -0.5274693     3 -0.069798386 0.3688335 -0.4576709 0.1757576

# 14     NY  0.6097983     4  0.024054706 0.3138637  0.5857436 0.1272727

# 15     NY -1.5511940     5  0.117907799 0.2823942 -1.6691018 0.1030303

# 16     NY  0.7440243     6  0.211760892 0.2823942  0.5322634 0.1030303

# 17     NY  0.1054719     7  0.305613984 0.3138637 -0.2001421 0.1272727

# 18     NY  0.7513057     8  0.399467077 0.3688335  0.3518387 0.1757576

# 19     NY -0.1271655     9  0.493320170 0.4385542 -0.6204857 0.2484848

# 20     NY  1.2154852    10  0.587173262 0.5170932  0.6283119 0.3454545

# Variables not shown: .sigma (dbl), .cooksd (dbl), .std.resid (dbl)


查看完整回答
反对 回复 2019-06-21

添加回答

回复

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信