【问题标题】:Calculating and visualizing correlation between 2 variables which are in an unordered series计算和可视化无序序列中的 2 个变量之间的相关性
【发布时间】:2019-03-15 06:51:52
【问题描述】:

作为我最后一年研究实施的一部分,我试图计算和可视化两个变量之间的相关性,这两个变量不在有序序列中。在如下数据集中,

DateAndTime           Demand    Temperature
2015-01-02 18:00:00    2081         41
2015-01-02 19:00:00    2370         42
2015-01-02 20:00:00    2048         42
2015-01-02 21:00:00    1806         42
2015-01-02 22:00:00    1818         41
2015-01-02 23:00:00    1918         40
2015-01-03 00:00:00    1685         40
2015-01-03 01:00:00    1263         38
2015-01-03 02:00:00     969         38
2015-01-03 03:00:00     763         37
2015-01-03 04:00:00     622         36

计算和可视化日期和需求之间的相关性很简单,因为它们处于有序序列中,并且可以使用散点图轻松可视化它们的相关性。但是,如果我要计算温度和需求之间的相关性,则生成的散点图没有多大意义,因为它没有任何数学顺序。应该使用什么方法以更有意义的方式可视化这两个变量之间的相关性。为此,我正在使用基本的 Python 框架,例如 Matplotlib、Statsmodels 和 Sklearn。

【问题讨论】:

  • 为什么不画点然后做回归线?
  • 您好@AlbertAlonso,感谢您的回复。我在这个领域主要是自学的,所以我不太理解你画回归线的意思。请您再详细说明一下。
  • 您是否尝试过制作DemandTemperature 的散点图?我相信它会很好地显示相关性。

标签: python statistics correlation statsmodels


【解决方案1】:

好的,我们的想法是绘制两列,一个在 x 轴,另一个在 y 轴,并尝试制作一条模拟其行为的线。 Numpy 有一个函数来计算线所以

import numpy as np
import matplotlib.pyplot as plt

x = [4,2,1,5]
y = [2,4,6,3]

fit = np.polyfit(x,y,1)
fit_line = np.poly1d(fit)

plt.figure()
plt.plot(x,y,'rx')
plt.plot(x,fit_line(x),'--b')
plt.show()

如果我们认为回归线是y = a*x + b,则可以得到系数a和b,这样

a = fit[0]
b = fit[1]

返回

a = -0.8000000000000005
b = 6.150000000000002

只需使用你的 x 和 y

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2015-05-07
    • 1970-01-01
    • 2019-02-14
    • 1970-01-01
    • 1970-01-01
    • 2020-02-08
    • 1970-01-01
    • 2022-01-20
    相关资源
    最近更新 更多