首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >聚合线性回归

聚合线性回归
EN

Stack Overflow用户
提问于 2015-07-29 03:35:55
回答 3查看 2.6K关注 0票数 3

对不起,我对R非常陌生,但我有一个数据与多个玩家的游戏。我试图得到的斜率系数,每个球员的积分在他们的所有游戏。我已经看到aggregate可以使用像sumaverage这样的运算符,从线性回归中得到系数也很简单。我怎么把它们结合起来呢?

代码语言:javascript
复制
a <- c("player1","player1","player1","player2","player2","player2")
b <- c(1,2,3,4,5,6)
c <- c(15,12,13,4,15,9)
gamelogs <- data.frame(name=a, game=b, pts=c)

我想让这个变成:

代码语言:javascript
复制
   name    pts slope
player1       -.4286
player2       .08242    
EN

回答 3

Stack Overflow用户

回答已采纳

发布于 2015-07-29 04:33:28

您还可以使用基本lm进行一些魔术,一次完成所有操作:

代码语言:javascript
复制
coef(lm(game ~ pts*name - pts, data=gamelogs))[3:4]
coef(lm(game ~ pts:name + name, data=gamelogs))[3:4]
#pts:nameplayer1 pts:nameplayer2 
#    -0.42857143      0.08241758 

作为一个data.frame

代码语言:javascript
复制
data.frame(slope=coef(lm(game ~ pts*name - pts, data=gamelogs))[3:4])
#                      slope
#pts:nameplayer1 -0.42857143
#pts:nameplayer2  0.08241758

有关lm调用中的建模的进一步解释,请参见此处:

https://stat.ethz.ch/R-manual/R-devel/library/stats/html/formula.html

http://faculty.chicagobooth.edu/richard.hahn/teaching/FormulaNotation.pdf#2

在本例中,pts*name扩展为pts + name + pts:name,当移除- pts时,这意味着它等同于pts:name + name

票数 6
EN

Stack Overflow用户

发布于 2015-07-29 03:47:28

你可以

代码语言:javascript
复制
s <- split(gamelogs, gamelogs$name)

vapply(s, function(x) lm(game ~ pts, x)[[1]][2], 1)
#     player1     player2 
# -0.42857143  0.08241758 

代码语言:javascript
复制
do.call(rbind, lapply(s, function(x) coef(lm(game ~ pts, x))[2]))
#                 pts
# player1 -0.42857143
# player2  0.08241758

或者如果你想使用dplyr,你可以

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

models <- group_by(gamelogs, name) %>% 
    do(mod = lm(game ~ pts, data = .))

cbind(
    name = models$name, 
    do(models, data.frame(slope = coef(.$mod)[2]))
)
#      name       slope
# 1 player1 -0.42857143
# 2 player2  0.08241758
票数 5
EN

Stack Overflow用户

发布于 2015-07-29 03:53:53

nlme也有此功能,lmList

代码语言:javascript
复制
library(nlme)
coef(lmList(game ~ pts | name, gamelogs))
#        (Intercept)         pts
# player1    7.714286 -0.42857143
# player2    4.230769  0.08241758
票数 4
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/31690789

复制
相关文章

相似问题

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