【问题标题】:Need help applying regression model to dataset in R (sports data)需要帮助将回归模型应用于 R 中的数据集(体育数据)
【发布时间】:2018-04-14 08:46:01
【问题描述】:

更新:已解决!

我目前正在尝试为足球创建一个回归模型,该模型根据球队的传球码数和冲球码数预测球队的总得分。我能够一直找出回归方程,但从这里我不知道如何“插入”公式。

数据表基本上是所有 32 支 NFL 球队按行列出,他们的进攻数据按列列出

代码:

# 1. Import
Offense <- read.csv(file.choose(), header=TRUE)
#2 View
show (Offense)
#3 Attach so headers can be referenced
attach (Offense)
#4 Create Regression Model
mod1 <-lm(Total.Points ~ Pass.Yds + Rush.Yds)
summary(mod1)
#Formula obtained from summary: -255.60178 + .10565(Pass) + .12154(Rush)
#Plug in the Regression Equation
predict(mod1)

输出:https://imgur.com/a/AbTNF

我看到最后它将回归方程应用于所有 32 行,但是我该怎么做

  1. 让它显示在排名列表中
  2. 让它显示团队名称以及预计得分(这样我就不必想知道“1”或“2”指的是哪个团队

既然我有方程,我是否也可以编写一个循环函数,为我拥有的每一行数据运行方程并打印结果?

非常感谢我是初学者!

更新:想出了这个

####Part 2. Interpretation

#1. Examining quality of model
summary(mod1)
cor(Pass.Yds, Rush.Yds)

#2. Formula obtained from summary: -255.60178 + .10565(Pass) + .12154(Rush)

#3. Predicted Points (Descending Order)
proj <- sort(predict(mod1), decreasing = TRUE)

proj

#4. Corresponding Name (Descending)
name <- Team[order(predict(mod1), decreasing = TRUE)]

name

#Data Frame
Projections <- data.frame(name, proj)

Projections

虽然 bbrot 提供了一个更简单的版本

【问题讨论】:

  • 你能修正一下格式吗?这将帮助我们帮助您...
  • 已修复!不知道如何嵌入图像。
  • 你可能想要像 Offense$predicted_points &lt;- predict(mod1) 这样的东西。然后,您可以在原始数据框中进行预测,您可以随意订购。
  • 其他小问题。不要使用attach。而是做lm(Total.Points ~ Pass.Yds + Rush.Yds, data = Offense)。它使您的工作空间更清洁。
  • @dash2 你能解释一下 Offense$predicted_points

标签: r regression predict


【解决方案1】:

假设Teams 是团队名称的向量,类似cbind(Teams[order(predict(mod1), decreasing = TRUE)], sort(predict(mod1), decreasing = TRUE)) 应该这样做...

编辑:您的Teams 向量似乎是一个因素。在这种情况下,以下命令将起作用:

# returns a character matrix
cbind(as.character(Teams)[order(predict(mod1), decreasing = TRUE)],
      sort(predict(mod1), decreasing = TRUE))

# returns a data frame
data.frame(Teams = Teams[order(predict(mod1), decreasing = TRUE)],
           Points = sort(predict(mod1), decreasing = TRUE))

【讨论】:

  • 当我尝试这样做时,这就是它给我的结果(不给出实际的团队名称,而是给出数字。) [,1] [,2] 2 21 492.2012 1 2 477.9364 12 32 453.2245 3 20 427.0736 5 9 419.2375 7 24 405.9986 10 26 402.2616 4 12 394.7735 6 1 391.8853 8 14 386.2176 11 4 384.8168 14 31 384.3261 24 7 375.8863 28 6 374.6063 18 29 373.4797 9 27 371.4527 19 30 355.5995 21 3 355.3864 15 5 354.2035 13 16 351.9924 16 25 343.5169 20 11 337.9522 25 15 336.5038
  • 嗯,这很难读。无论如何,您需要将Teams 替换为团队名称向量的对象名称。我在 CSV 文件中有一列团队名称吗?如果是,它叫什么名字?
  • 很抱歉,这里还不确定如何格式化。矢量名称是“团队”,我将您的公式调整为。但是,它显示的不是“亚特兰大猎鹰队”,而是“21”。
  • 更新:如果我只运行“Team[order(predict(mod1), reduction = TRUE)]”,它会按顺序显示团队名称,这很棒。只有当我尝试添加第二位编码时它才会起作用 (sort(predict(mod1), reduction = TRUE))
  • 完美。我自己想通了,但我做了一个更草率的方法。更新了 OP 只是为了给你看哈哈。非常感谢您的帮助!
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2022-01-16
  • 2019-05-01
  • 1970-01-01
  • 2022-01-23
相关资源
最近更新 更多