【问题标题】:Running A Regression Analysis where the Response is a Binary Variable [R]运行回归分析,其中响应是二元变量 [R]
【发布时间】:2022-01-01 04:15:14
【问题描述】:

背景

您好,我对 R 比较陌生。我正在尝试根据一组统计数据执行获胜百分比的回归。当数据已经简化和整理时,我有过回归的经验,但我没有太多经验来修复我的数据以允许我运行正确的回归。

数据

我已经添加了我正在使用的数据集。链接在这里: https://www.kaggle.com/nathanlauga/nba-games 您将被引导至包含 games.csv 下载文件的网站。

代码

我做的第一件事就是把它做成一个数据框,然后用他们真实的缩写名称替换所有团队 ID。

head(NBA_Games)
NBA.df <- data.frame(NBA_Games)

head(NBA.df)

NBA.df[NBA.df == "1610612737"] <- "ATL"
NBA.df[NBA.df == "1610612738"] <- "BOS"
NBA.df[NBA.df == "1610612740"] <- "NO"
NBA.df[NBA.df == "1610612741"] <- "CHI"
NBA.df[NBA.df == "1610612742"] <- "DAL"
NBA.df[NBA.df == "1610612743"] <- "DEN"
NBA.df[NBA.df == "1610612745"] <- "HOU"
NBA.df[NBA.df == "1610612746"] <- "LAC"
NBA.df[NBA.df == "1610612747"] <- "LAL"
NBA.df[NBA.df == "1610612748"] <- "MIA"
NBA.df[NBA.df == "1610612749"] <- "MIL"
NBA.df[NBA.df == "1610612750"] <- "MIN"
NBA.df[NBA.df == "1610612751"] <- "BKN"
NBA.df[NBA.df == "1610612752"] <- "NYK"
NBA.df[NBA.df == "1610612753"] <- "ORL"
NBA.df[NBA.df == "1610612754"] <- "IND"
NBA.df[NBA.df == "1610612755"] <- "PHI"
NBA.df[NBA.df == "1610612756"] <- "PHX"
NBA.df[NBA.df == "1610612757"] <- "POR"
NBA.df[NBA.df == "1610612758"] <- "SAC"
NBA.df[NBA.df == "1610612759"] <- "SAS"
NBA.df[NBA.df == "1610612760"] <- "OKC"
NBA.df[NBA.df == "1610612761"] <- "TOR"
NBA.df[NBA.df == "1610612762"] <- "UTA"
NBA.df[NBA.df == "1610612763"] <- "MEM"
NBA.df[NBA.df == "1610612764"] <- "WAS"
NBA.df[NBA.df == "1610612765"] <- "DET"
NBA.df[NBA.df == "1610612766"] <- "CHA"
NBA.df[NBA.df == "1610612739"] <- "CLE"
NBA.df[NBA.df == "1610612744"] <- "GSW"

我知道可能有一种更简单的方法可以做到这一点,任何建议都会有所帮助,但这不是我遇到的真正问题。

问题

如果您从数据集中注意到,它分为主队统计数据和客队统计数据。唯一记录获胜的统计数据位于数据框的最后一列,名为“HOME_TEAM_WINS”。如果他们赢了,它记录 1,如果他们没有赢,它记录 0。现在,这是我真的不知道该怎么做的地方。我希望我的回归中的响应 (Y) 变量是获胜百分比,但目前它是二进制形式。我想有一种方法可以创建一个新变量,让我可以针对其他游戏内统计数据运行它。

另外,将这个因素考虑在内并按每支球队的胜率进行划分的最简单方法是什么?

我希望这是有道理的。任何有关如何执行此操作的帮助或有关如何从统计角度思考此问题的任何提示将不胜感激。

【问题讨论】:

    标签: r binary-data regression


    【解决方案1】:

    您有多种选择可以使用回归对数据进行建模。基本上你应该做两件事:聚合数据,然后使用最合适的回归模型。如何汇总数据并拟合模型取决于您。但这里有一些想法。

    这是对主队获胜比例的总结

    games2 <- games |>
        group_by(TEAM_ID_home) |>
        summarise(win_prop = mean(HOME_TEAM_WINS),
                  observations = n())
    

    由于响应变量是二元的,也许您可​​以使用原始数据框探索逻辑回归模型。该模型探讨了主场获胜的比例是否更频繁地与任何球队 (fm1) 或赛季 (fm2) 相关:

    summary(fm1 <- glm(HOME_TEAM_WINS ~ factor(TEAM_ID_home), data = games, family = binomial))
    
    summary(fm2 <- glm(HOME_TEAM_WINS ~ factor(SEASON), data = games, family = binomial))
    

    您可以按赛季和团队计算分组,然后创建一个新的数据框,其中包含您感兴趣的所有预测变量按分组变量汇总。

    games3 <- games |>
        group_by(SEASON, TEAM_ID_home) |>
        summarise(win_count = sum(HOME_TEAM_WINS),
                  observations = n(),
                  pts_home = sum(PTS_home, na.rm = T))
    

    泊松回归可能有助于拟合此类数据。包括观察次数的“偏移量”对于将结果建模为获胜比例是必要的。

    summary(fm3 <- glm(win_count ~ factor(TEAM_ID_home), data = games3, offset = log(observations), family = poisson))
    
    

    【讨论】:

    • 何塞,非常感谢您抽出宝贵时间。非常感谢
    猜你喜欢
    • 2021-07-31
    • 1970-01-01
    • 2021-11-30
    • 2016-11-25
    • 1970-01-01
    • 2021-12-23
    • 1970-01-01
    • 1970-01-01
    • 2013-09-18
    相关资源
    最近更新 更多