【问题标题】:Python - Correlation Test with NumpyPython - 使用 Numpy 进行相关测试
【发布时间】:2019-05-18 23:16:43
【问题描述】:

我正在尝试分析世界杯数据,我想在比赛开始时间和进球数之间建立关联。我希望这表明一段时间可能会产生更多的目标。

我的数据集在一个 csv 文件中,并包含以下标题和 1 行数据作为示例:

我正在尝试用 python 编写相关性测试,但遇到了一些问题。

我的问题:我如何证明/反驳比赛的时间和进球数之间存在相关性?

import pandas as pd
from scipy import stats
import numpy as np

#Read the data into a dataframe
df = pd.read_csv("World Cup 2018.csv")

index2 = df.loc[df['start_time']]
print(index2['home_score'])

Test = numpy.corrcoef(index2.start_time, index2.home_score)[0, 1]
print(Test)

【问题讨论】:

  • 这个输出是什么?
  • 在进行分析时还要记住“相关性并不意味着因果关系”
  • 是的,我正在写报告,我会记录下来,谢谢
  • 请注意,相关性量化了两个变量之间的线性关系,但时间是一个循环量。如果您的假设是正确的,那么 23:00 玩的游戏应该与 01:00 玩的游戏非常相似。即使存在完美的依赖关系,这也会导致低相关性。

标签: python pandas numpy scipy data-analysis


【解决方案1】:

你试过 Pandas 相关函数吗?

df.corr()[['start_time']].sort_values('start_time')

它将为您提供数据框中每一列的一组值,以及它与 start_time 的相关程度: home_team -0.123456 away_team -0.789012 home_score -0.890123 away_score -0.901234 分数越高,这两个值似乎越相关。虽然这不是一个硬性规定,但大于 +0.8 的相关性是强相关性

【讨论】:

  • 嗨,克里斯,感谢您的快速回复。我已经尝试过了,虽然它看起来不错,但我在 start_time 列上遇到了问题 错误告诉我 KeyError:“['start_time'] 不在索引中”
  • 代码可能与您的数据框不完全匹配。尝试一下,看看你是否可以让它为你工作,然后提出修改建议。在任何情况下,corr() 函数都是您想要的。
  • 我认为这不适用于团队(分类)或可能是日期时间或字符串 dtype 的 start_time。 github.com/pandas-dev/pandas/blob/v0.23.4/pandas/core/…
  • @OllieinPGH 是的 - 我是在建议一条路径,并模拟输出,以引导他朝着正确的方向前进
  • 经过一番折腾后,我把它整理好了,尽管我确实必须更改开始时间数据类型。感谢帮助,非常感谢
猜你喜欢
  • 1970-01-01
  • 2021-05-05
  • 1970-01-01
  • 1970-01-01
  • 2019-05-21
  • 1970-01-01
  • 1970-01-01
  • 2018-07-19
  • 2011-09-18
相关资源
最近更新 更多