首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >计算两个时间变量之间的相关性

计算两个时间变量之间的相关性
EN

Data Science用户
提问于 2018-02-17 16:32:46
回答 3查看 6.1K关注 0票数 3

我有一个如下所示的数据集:

代码语言:javascript
复制
    UserID  App_open_Time(Hour_ofDay)   Email_Open_Time(hour_ofDay)
       1        1                         1
       2        1                         1
       3        1                         1
       4        1                         1
       5        1                         1
       6        2                         1
       7        2                         1
       8        3                         1
       9        3                         1
      10        3                         1

我想知道App_open_time是否与Email open time相关。我如何在python中进行这种分析。我本来打算用Numpy在Python中做一个pearson-correlation,这是最好的方法吗?

EN

回答 3

Data Science用户

发布于 2018-04-09 10:46:45

我认为你不能使用Pearson的相关性,因为它是用于连续变量的。你的变量是有序的,所以像Spearman这样的测试会更合适。然而,我不认为序数变量的测试也是合适的,因为你的变量也是周期性的,也就是说Hour_ofDay=23Hour_ofDay=1实际上只有两个小时的间隔,但是对于Spearman的测试,它们将被认为是22个小时间隔。

在这种情况下,我认为更合适的做法是研究这两个变量之间的距离(以小时为单位)的分布。在这种情况下,适当的距离度量定义如下(最初在接受的另一个问题答案中定义的距离)

代码语言:javascript
复制
import numpy as np
distance = np.sign(a1-a2)*(12 - abs(abs(a1 - a2) - 12))

其中a1和a2是您的应用程序和电子邮件打开时间变量。注意,要使这个距离工作,变量必须在0到23之间。

计算每一行的此距离,将其作为列添加到数据中,并用直方图绘制它。这个直方图会告诉你很多关于这两个变量之间的“相关性”。

例如

  • 不相关:直方图在-12和12之间是一致的。
  • 即时相关,即用户同时打开电子邮件和应用程序:直方图将在0处出现峰值。
  • 预期延迟,即用户在应用程序前1小时打开电子邮件:直方图将在1处出现峰值。
  • 延迟相关,即用户在app后1小时打开电子邮件:直方图将在-1处出现峰值。

这种可视化可以让你对应用程序和电子邮件打开时间之间的关系得出丰富的结论。

注意:如果您的变量还包括分钟和秒的日期格式,您必须将变量转换为数字。例如: 01:30 (小时1和30分钟)变成1.5。还要注意日期格式,以防你有12小时的时间(如下午6点,凌晨1点)。

票数 2
EN

Data Science用户

发布于 2018-02-17 16:52:43

您可以使用以下代码片段:

代码语言:javascript
复制
from matplotlib import cm
cmap = cm.get_cmap('gnuplot')
scatter = pd.scatter_matrix(YOUR_TRAINING_DATA, c = YOUR_LABELS_OF_TRAINING, marker = 'o', s = 40, hist_kwds = {'bins':15}, figsize = (12, 12), cmap = cmap)

它分别和一起绘制每个特征的散点图。它类似于相关矩阵。你可以看看这里

票数 0
EN

Data Science用户

发布于 2018-05-09 16:29:06

使用熊猫有效地处理python中的表。熊猫有一个工具来计算两个系列之间的相关性,或者计算数据栏之间的相关性。假设您的数据位于csv文件中,您可以这样读取数据并计算其相关性:

代码语言:javascript
复制
import pandas as pd
data = pd.read_csv("my_file.csv")
correlation = data["col1"].corr(data["col2"], method="pearson")

您还可以选择用于计算以下内容之间相关性的方法:

-pearson

-kendall

-spearman

票数 0
EN
页面原文内容由Data Science提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://datascience.stackexchange.com/questions/27927

复制
相关文章

相似问题

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