标签: pearson-correlation

使用 dplyr 计算分组数据中相关性的显着性

我已经对数据进行了分组,我想测试几个基本的推理统计数据。

library(tidyverse)

df <- data.frame(x=runif(50, min = 0, max = 25),y=runif(50, min = 10, max = 25), group=rep(0:1,25))

df %>%
  group_by(group) %>%
  summarize(cor(x,y))
Run Code Online (Sandbox Code Playgroud)

在这里我可以很容易地得到相关性,但我还需要检查它的统计显着性。不幸的是,像cor.test这样的选项在dyplr. 有简单的解决方法吗?

r significance dplyr pearson-correlation

4
推荐指数
1
解决办法
316
查看次数

SciKit Learn R 平方与 Pearson 相关 R 的平方有很大不同

我有 2 个 numpy 数组,如下所示:

a = np.array([32.0, 25.97, 26.78, 35.85, 30.17, 29.87, 30.45, 31.93, 30.65, 35.49, 
              28.3, 35.24, 35.98, 38.84, 27.97, 26.98, 25.98, 34.53, 40.39, 36.3])

b = np.array([28.778585, 31.164268, 24.690865, 33.523693, 29.272448, 28.39742,
              28.950092, 29.701189, 29.179174, 30.94298 , 26.05434 , 31.793175,
              30.382706, 32.135723, 28.018875, 25.659306, 27.232124, 28.295502,
              33.081223, 30.312504])
Run Code Online (Sandbox Code Playgroud)

当我使用 SciKit Learn 计算 R 平方时,我得到的值与计算 Pearson 相关性然后对结果求平方时完全不同的值:

sk_r2 = sklearn.metrics.r2_score(a, b)
print('SciKit R2: {:0.5f}\n'.format(sk_r2))

pearson_r = scipy.stats.pearsonr(a, b)
print('Pearson R: ', pearson_r)
print('Pearson R squared: ', pearson_r[0]**2) …
Run Code Online (Sandbox Code Playgroud)

python scikit-learn pearson-correlation scipy.stats coefficient-of-determination

4
推荐指数
1
解决办法
5882
查看次数

R中的偏相关值大于正常相关

我正在研究一个大型数据集(700 万行),试图了解各个自变量与因变量之间的相关性。当我运行 pcor(dataset) 时,如果与运行 cor(dataset) 相比,这会导致更高的相关性。

我的数据集有 6 个因变量和 84 个自变量。我正在分别找到每个因变量和 84 个自变量的偏相关。

我的自变量是文本类型的字数(75 个类别),以及其他一些社会变量(所有数字)等性别。

我的问题是:我不确定为什么在 R 中使用 pcor() 时会得到高相关性,而使用 cor() 会得到非常弱的相关性。这是偏相关的正常行为吗?

r correlation pearson-correlation

3
推荐指数
1
解决办法
1063
查看次数

Pearson 多重相关与 Scipy

我正在尝试做一些非常简单的事情,计算作为 DataFrame 的列给出的几个变量的 Pearson 相关矩阵。我希望它忽略 nans 并提供 p 值。scipy.stats.pearsonr是不够的,因为它仅适用于两个变量并且无法解释 nan。应该有比这更好的东西......

例如,

    df = pd.DataFrame([[1,2,3],[6,5,4],[1,None,9]])

       0    1  2
    0  1  2.0  3
    1  6  5.0  4
    2  1  NaN  9
Run Code Online (Sandbox Code Playgroud)

df 的列是变量,行是观测值。我想要一个返回 3x3 相关矩阵以及相应 p 值的 3x3 矩阵的命令。我希望它省略 None。也就是说,[1,6,1],[2,5,NaN]之间的相关性应该是[1,6]和[2,5]之间的相关性。

一定有一个很好的 Pythonic 方法来做到这一点,有人可以建议吗?

python scipy pearson-correlation

2
推荐指数
1
解决办法
6203
查看次数

特定轴上 np.corrcoef 的 Tensorflow 等效项

我试图将两个矩阵列相关。即将第一个矩阵的第一列与第二个矩阵的第一列相关联,依此类推。在 numpy 我做:

np.corrcoef(x, y, axis=0)
Run Code Online (Sandbox Code Playgroud)

而且效果很好。该命令的 Tensorflow 等效项是什么?

我尝试使用 streaming_pearson_correlation 1但这将所有列关联在一起而不是提供每列的结果。

作为最后的手段,我正在考虑将张量拆分为单独的列张量,但我猜这会产生性能成本。

我知道我可以将 numpy 包装在 py_func 中,但它不会在 GPU 上运行。

在此先感谢您的帮助。

python numpy tensorflow pearson-correlation

2
推荐指数
1
解决办法
1616
查看次数

从DataFrame中删除高度相关的列

我有一个这样的DataFrame

dict_ = {'Date':['2018-01-01','2018-01-02','2018-01-03','2018-01-04','2018-01-05'],'Col1':[1,2,3,4,5],'Col2':[1.1,1.2,1.3,1.4,1.5],'Col3':[0.33,0.98,1.54,0.01,0.99]}
df = pd.DataFrame(dict_, columns=dict_.keys())
Run Code Online (Sandbox Code Playgroud)

然后,我计算列之间的皮尔逊相关性,并过滤掉相关于我的阈值0.95以上的列

def trimm_correlated(df_in, threshold):
    df_corr = df_in.corr(method='pearson', min_periods=1)
    df_not_correlated = ~(df_corr.mask(np.eye(len(df_corr), dtype=bool)).abs() > threshold).any()
    un_corr_idx = df_not_correlated.loc[df_not_correlated[df_not_correlated.index] == True].index
    df_out = df_in[un_corr_idx]
    return df_out
Run Code Online (Sandbox Code Playgroud)

产生

uncorrelated_factors = trimm_correlated(df, 0.95)
print uncorrelated_factors

    Col3
0   0.33
1   0.98
2   1.54
3   0.01
4   0.99
Run Code Online (Sandbox Code Playgroud)

到目前为止,我对结果感到满意,但我想保留每个相关对中的一列,因此在上面的示例中,我想包含Col1或Col2。得到某物 像这样

    Col1   Col3
0    1     0.33
1    2     0.98
2    3     1.54
3    4     0.01
4    5     0.99
Run Code Online (Sandbox Code Playgroud)

另外,我还可以做进一步的评估来确定保留哪些相关列?

谢谢

python correlation dataframe pearson-correlation

2
推荐指数
1
解决办法
2605
查看次数

Numpy/Pandas 关联 2 个不同长度的数组

我正在尝试计算 2 个长度不同的数据集的相关系数。以下代码仅适用于等长数组。

import numpy as np
from scipy.stats.stats import pearsonr

a = [0, 0.4, 0.2, 0.4, 0.2, 0.4, 0.2, 0.5]
b = [25, 40, 62, 58, 53, 54]

print pearsonr(a, b)
Run Code Online (Sandbox Code Playgroud)

在我的情况下,b矢量长度可以在 50 - 100 个数据点之间变化。虽然我想要匹配的功能是标准的。附上的图片a。是否有其他首选模块可以匹配此类模式?

在此处输入图片说明

python math numpy pattern-matching pearson-correlation

2
推荐指数
1
解决办法
4122
查看次数

numpy.corrcoef() 对返回值的疑问

我需要两个矩阵 X,Y 之间的皮尔逊相关系数。如果我运行代码corr=numpy.corrcoef(X,Y)我的输出是一个具有相关系数的矩阵。但是我需要一个值来表示两个矩阵之间的相关性。

我刚刚在 kennytm 的答案中看到,要拥有一个值,我应该写numpy.corrcoef(X,Y)[1,0]

这个解决方案有效,但我不明白方括号内的数字意味着什么,也不明白为什么将它们相加后我会得到一个值。

我将 1 和 0 解释为系数的限制,但是矩阵内的所有系数会发生什么情况?对它们进行什么类型的计算以获得单个值?例如,如果我更改方括号内的数字[1,-1]相关性、反相关性),则更改的值corr会导致我很困惑应该在括号内使用哪些数字。

numpy correlation python-3.x pearson-correlation

2
推荐指数
1
解决办法
3190
查看次数

如何抵消Pandas Pearson与日期时间指数的相关性

我试图获得前一周输入的相关值到下周的输出.

为了这个例子,我已经设置了每周的输入将是下周的输出,并且df.corr()应该给出1.000000结果.

我的原始数据如下所示:

Date      Input     Output
1/1/2010    73         73
1/7/2010     2         73
1/13/2010    3          2
1/19/2010    4          3
Run Code Online (Sandbox Code Playgroud)

完整示例数据在此处上传:https: //drive.google.com/open?id = 0B4xdnV0LFZI1MzRUOUJkcUY4ajQ

到目前为止,这是我的代码:

import pandas as pd
df = pd.read_csv('pearson.csv')
df['Date'] = pd.to_datetime(df['Date'], errors = 'coerce')
df = df.set_index(pd.DatetimeIndex(df['Date']))
df = df[['Input', 'Output']]
x = df.corr(method = 'pearson', min_periods=1)
print(x)
Run Code Online (Sandbox Code Playgroud)

而作为一个新手在这里,我被卡住了.我没有看到shift函数中内置的选项,也不确定如何执行此操作.

任何和所有的帮助表示赞赏.

谢谢你,我

python python-3.x pandas pearson-correlation

1
推荐指数
1
解决办法
1214
查看次数

为什么内置的python sum函数表现得像这样?

我正在尝试编写一个程序来确定pearson相关系数与python中的总体标准差.我认为这将是非常微不足道的,直到我到达我正在求和的部分(yi - μy)*(xi - μx).这是我的完整代码:

def r(x, y):
    mx, my = sum(x) / len(x), sum(y) / len(y)
    sdx, sdy = (sum([(xi-mx)**2 for xi in x]) / len(x))**0.5, (sum([(yi- 
    my)**2 for yi in y]) / (len(y)))**0.5
    res = ((sum([(xi-mx)*(yi-my) for xi in x for yi in y]))/(len(x)*sdx*sdy))**0.5
    return res
Run Code Online (Sandbox Code Playgroud)

我注意到结果非常小,所以我检查了(xi-mx)的总和:

sum([(xi-mx) for xi in x])
Run Code Online (Sandbox Code Playgroud)

结果是-9.769962616701378e-15.以下是列表中的值:

print([(xi-mx) for xi in x])
[3.2699999999999987, 3.0699999999999994, 1.2699999999999987, 1.0699999999999985, 0.9699999999999989, 0.2699999999999987, -0.7300000000000013, -1.7300000000000013, -2.7300000000000013, -4.730000000000001]
Run Code Online (Sandbox Code Playgroud)

任何人都可以解释为什么python表现得如此奇怪吗?

python pearson-correlation

1
推荐指数
1
解决办法
99
查看次数

如何计算2个给定向量之间的Pearson相关性?

我必须用C#编写代码

你能在下面给出的例子中逐步解释吗?

vector 1 : [0.3, 0, 1.7, 2.2]
vector 2 : [0, 3.3, 1.2, 0]
Run Code Online (Sandbox Code Playgroud)

非常

这将用于文档聚类

c# pearson correlation pearson-correlation

-3
推荐指数
1
解决办法
2336
查看次数