精华内容
下载资源
问答
  • 注: p值越小,表示相关系数越显著,一般p值在500个样本以上时有较高的可靠。 pearson相关系数计算公式为: cov(X,Y)表示的是协方差 var(x)和var(y)表示的是方差 python实现 import numpy as np from scipy....

    函数:pearsonr(x,y)

    功能:
    计算特征与目标变量之间的相关度

    参数说明:
    1)输入:x为特征,y为目标变量.
    2)输出:r: 相关系数 [-1,1]之间,p-value: p值。
    注: p值越小,表示相关系数越显著,一般p值在500个样本以上时有较高的可靠性。

    pearson相关系数的计算公式为:
    在这里插入图片描述
    cov(X,Y)表示的是协方差
    var(x)和var(y)表示的是方差

    python实现

    import numpy as np
    from scipy.stats import pearsonr
    import random
    np.random.seed(0)
    size=300
    x=np.random.normal(0,1,size)
    print "Lower noise",pearsonr(x,x+np.random.normal(0,1,size))
    print "Higher noise",pearsonr(x,x+np.random.normal(0,10,size))
    

    输出:

    Lower noise (0.71824836862138408, 7.3240173129983507e-49)
    Higher noise (0.057964292079338155, 0.31700993885324752)
    

    用pandas计算相关系数

    corr()求解变量相关系数

    df.head()
    	Guba	XQ		BCI		Count	Value
    0	0.021	0.098	0.175	0.077	0.057
    1	0.031	0.097	0.192	0.087	0.069
    2	0.018	0.101	0.193	0.075	0.069
    3	0.017	0.112	0.203	0.077	0.063
    4	0.042	0.158	0.222	0.335	0.567
    
    #1.pearson相关系数
    df.corr()
    		Guba		XQ			BCI			Count		Value
    Guba	1.000000	0.175604	-0.014611	0.200896	0.256166
    XQ		0.175604	1.000000	-0.390358	0.654250	0.482809
    BCI		-0.014611	-0.390358	1.000000	-0.259319	-0.156440
    Count	0.200896	0.654250	-0.259319	1.000000	0.832961
    Value	0.256166	0.482809	-0.156440	0.832961	1.000000
    
    #2.Kendall Tau相关系数
    df.corr('kendall')
    		Guba		XQ			BCI			Count		Value
    Guba	1.000000	0.153904	-0.012438	0.133122	0.090707
    XQ		0.153904	1.000000	-0.244304	0.374908	0.255377
    BCI		-0.012438	-0.244304	1.000000	-0.157442	-0.091950
    Count	0.133122	0.374908	-0.157442	1.000000	0.720916
    Value	0.090707	0.255377	-0.091950	0.720916	1.000000
    
    #3.spearman秩相关
    df.corr('spearman')
    		Guba		XQ			BCI			Count		Value
    Guba	1.000000	0.219124	-0.017204	0.189752	0.143163
    XQ		0.219124	1.000000	-0.358981	0.563938	0.427756
    BCI		-0.017204	-0.358981	1.000000	-0.241880	-0.140010
    Count	0.189752	0.563938	-0.241880	1.000000	0.877732
    Value	0.143163	0.427756	-0.140010	0.877732	1.000000
    
    #4.显著性检验
    import scipy.stats as stats
    #输出结果第一个值为pearsonr相关系数,
    #第二个为p-value,所以这里Guba列和Value值是显著相关的
    stats.pearsonr(df['Guba'],df['Value'])
    (0.256165703418037, 8.10519823509109e-07)
    

    计算两列数据相关系数

    import pandas as pd
    import pylab as plt
    #每小时的阵风风速平均值
    all_gust_spd_mean_list = [8.21529411764706, 7.872941176470587, 7.829411764705882, 8.354117647058825, 9.025882352941174, 9.384523809523811, 9.57294117647059, 9.274117647058821, 9.050588235294118, 9.314117647058827, 8.924705882352939, 9.25176470588235, 8.978823529411764, 8.39176470588235, 7.715294117647061, 7.477647058823529, 7.272941176470586, 7.38470588235294, 7.396470588235295, 7.97261904761905, 7.716666666666666, 7.7809523809523835, 7.816666666666668, 7.897590361445783, 8.200000000000001, 8.04761904761905, 7.474999999999999, 9.855952380952383, 11.120000000000001, 10.979761904761906, 10.922619047619051, 10.841176470588234, 9.31566265060241, 8.867058823529415, 9.068235294117642, 8.774698795180722, 8.629411764705884, 8.292941176470586, 7.640000000000007, 7.422352941176469, 7.464705882352944, 8.210588235294113, 8.558823529411763, 8.93095238095238, 9.001176470588234, 8.538095238095238, 8.965882352941172, 9.855294117647057, 8.318918918918921, 9.217647058823525, 8.86470588235294, 8.840000000000002, 9.44235294117647, 9.352380952380953, 9.307058823529408, 9.64047619047619, 9.408333333333333, 9.585882352941175, 8.901190476190477, 7.698823529411764, 7.988235294117645, 9.091764705882353, 9.294117647058819, 8.996470588235297, 9.63764705882353, 9.091764705882353, 8.937647058823533, 8.838823529411764, 8.637647058823534, 8.46, 8.374117647058824, 8.24117647058823, 8.245238095238093, 8.365882352941174, 8.50235294117647, 8.291764705882352, 8.088235294117647, 7.889411764705883, 7.594117647058826, 7.216470588235293, 7.097647058823533, 7.305882352941181, 7.489411764705882, 6.815294117647058, 7.971428571428569, 7.424705882352936, 6.910588235294117, 6.071764705882354, 7.44117647058823, 7.667857142857143, 7.881176470588237, 7.929411764705881, 8.12142857142857, 8.822352941176472, 9.083529411764703, 9.028235294117646, 9.310714285714285, 9.035294117647057, 8.450588235294116, 8.414285714285713, 7.311764705882355, 6.840000000000001, 7.238095238095239, 6.641176470588236, 6.8047619047619055, 6.58705882352941, 6.826190476190474, 6.568235294117643, 7.060000000000001, 7.686904761904761, 8.348235294117643, 8.503529411764701, 8.287058823529414, 8.354117647058823, 7.624705882352941, 7.286904761904765, 7.361176470588235, 7.477647058823531, 7.343529411764706]
     
    #每小时的阵风风向标准差
    all_gust_agl_dev_list = [0.7507438242046189, 0.768823513771462, 0.849877567310481, 0.8413581558472801, 0.8571319461950748, 0.8665002025305942, 0.9053739533298005, 0.8866979720735791, 0.8045677876888446, 0.873463882661469, 0.832383480871403, 0.778659970340069, 0.7357031045047981, 0.7974723911258534, 0.8039727543149432, 0.8709723763624072, 0.8727745464337923, 0.7896422160341138, 0.8165093346129041, 0.8821296270775546, 0.9193591477905156, 0.8546566314487358, 0.8595040204296921, 0.8075641299052398, 0.7996745617071098, 0.7930869411601498, 0.7578880032016914, 0.9107571156507569, 0.8461201382346486, 0.7553646348127085, 0.8510861123303187, 0.7282631202385544, 0.8588017730198183, 0.7923449370076744, 0.8265083209111689, 0.9599970229643688, 0.8195276021290412, 0.7882592259148272, 0.8036464793287409, 0.8237184691421926, 0.8846862360656914, 0.8136869244513337, 0.8516383375155133, 0.7760301715652644, 0.8644231334629017, 0.831330440569484, 0.8061342111854616, 0.7345896810176235, 1.205089147978776, 0.8266315966774649, 0.8137345300107962, 0.8186966603954983, 0.7836182115343135, 0.8406438908681332, 0.7717723331806998, 0.7932664155269176, 0.7266183593077442, 0.719063143819583, 0.8846434855533486, 0.817552510948495, 0.7571575934024827, 0.865326265251608, 0.9099784335052563, 0.8591794583996128, 0.9295389095340467, 0.8787300860744375, 0.8724277968300532, 0.95284132003256, 0.9288772059881606, 0.8690944948691984, 0.8327213470469693, 0.8339075062700629, 0.886835675339985, 0.8439137877550847, 0.7985495396895048, 0.8406267016063169, 0.8477871130878305, 0.8844025576348077, 0.9186363354492758, 0.8888539157167654, 0.9079462071375304, 0.8699806402308554, 0.8531937701209343, 0.8833108936555343, 0.9317958602705915, 0.9393618445471649, 0.9556065912926689, 0.967220118643412, 0.8882194173154115, 0.9361538853249073, 0.7872261833965604, 0.8608377368219552, 0.8787718518619395, 0.8169189082396561, 0.7965901553530427, 0.8838665737610132, 0.8844338861256802, 0.9008484784943429, 0.8612318707072047, 0.8623792153658019, 1.0033494995180463, 0.9901213381586231, 0.8780115045650467, 0.9172682690843976, 0.9653905755824115, 0.9199829176728873, 0.9180048223906779, 0.9172043382441968, 0.9267783259554074, 0.9231225672912022, 0.7945054721199195, 0.8655558517080688, 0.8306327906597787, 0.8457559701865576, 0.8038459124570336, 0.8519646989317945, 0.7735358658599594, 0.8612134954656397, 0.8879135146161856]
     
    g_s_m = pd.Series(all_gust_spd_mean_list) #利用Series将列表转换成新的、pandas可处理的数据
    g_a_d = pd.Series(all_gust_agl_dev_list)
     
    corr_gust = round(g_s_m.corr(g_a_d), 4) #计算标准差,round(a, 4)是保留a的前四位小数
     
    print('corr_gust :', corr_gust)
     
    #最后画一下两列表散点图,直观感受下,结合相关系数揣摩揣摩
    plt.scatter(all_gust_spd_mean_list, all_gust_agl_dev_list)
    plt.title('corr_gust :' + str(corr_gust), fontproperties='SimHei') #给图写上title
    plt.show()
    

    根据以上程序,得到结果:

    corr_gust : -0.3481
    

    计算矩阵数据相关系数矩阵

    import pandas as pd
    import numpy as np
     
    if __name__ == '__main__':
        unstrtf_lst = [[2.136, 1.778, 1.746, 2.565, 1.873, 2.413, 1.813, 1.72, 1.932, 1.987, 2.035, 2.178, 2.05, 2.016, 1.645, 1.756, 1.886, 2.106, 2.138, 1.914, 1.984, 1.906, 1.871, 1.939, 1.81, 1.93, 1.898, 1.802, 2.008, 1.724, 1.823, 1.636, 1.774, 2.055, 1.934, 1.629, 2.519, 2.093, 2.004, 1.793, 1.564, 1.962, 2.176, 1.846, 1.816, 2.018, 1.708, 2.465, 1.899, 1.523, 1.41, 2.102, 2.065, 2.402, 2.091, 1.867, 1.77, 1.466, 2.029, 1.659, 1.626, 1.977, 1.837, 2.13, 2.241, 2.184, 2.345, 1.833, 2.113, 1.764, 1.859, 1.868, 1.835, 1.906, 2.237, 1.846, 1.871, 1.769, 1.928, 1.831, 1.875, 2.039, 2.24, 1.835, 1.851]
        , [2.171, 1.831, 1.714, 2.507, 1.793, 2.526, 1.829, 1.705, 1.954, 2.017, 2.022, 2.16, 2.059, 1.966, 1.661, 1.752, 1.884, 2.203, 2.182, 1.97, 2.003, 1.875, 1.852, 1.884, 1.774, 1.916, 1.936, 1.809, 1.926, 1.717, 1.841, 1.59, 1.781, 2.016, 1.898, 1.657, 2.458, 2.134, 2.032, 1.785, 1.575, 1.959, 2.11, 1.854, 1.826, 1.992, 1.706, 2.419, 1.854, 1.514, 1.37, 2.084, 2.024, 2.398, 1.955, 1.859, 1.759, 1.441, 2.059, 1.653, 1.583, 1.987, 1.84, 2.106, 2.262, 2.13, 2.371, 1.776, 2.117, 1.733, 1.814, 1.839, 1.822, 1.883, 2.23, 1.803, 1.894, 1.783, 1.911, 1.813, 1.85, 2.004, 2.191, 1.823, 1.809]
        , [2.157, 1.873, 1.802, 2.761, 1.733, 2.506, 1.842, 1.765, 1.938, 2.058, 1.932, 2.196, 2.004, 2.126, 1.664, 1.698, 1.899, 2.073, 2.117, 2.083, 1.972, 1.969, 1.865, 1.937, 1.752, 1.939, 1.927, 1.804, 2.07, 1.725, 1.846, 1.5, 1.804, 2.1, 1.932, 1.773, 2.431, 2.088, 2.08, 1.812, 1.592, 1.953, 2.044, 2.019, 1.846, 2.061, 1.771, 2.254, 1.891, 1.536, 1.356, 1.952, 2.222, 2.427, 2.015, 1.873, 1.79, 1.384, 1.981, 1.665, 1.815, 2.006, 1.869, 2.102, 2.249, 2.27, 2.296, 1.814, 2.099, 1.702, 1.688, 1.89, 1.82, 1.927, 2.162, 1.825, 1.998, 1.811, 2.0, 1.842, 1.793, 2.115, 2.301, 1.789, 1.826]
        , [2.127, 1.744, 1.747, 2.548, 1.939, 2.296, 1.808, 1.71, 1.901, 1.906, 2.074, 2.167, 2.113, 2.044, 1.632, 1.821, 1.94, 2.076, 2.114, 1.837, 1.978, 1.904, 1.872, 1.98, 1.886, 1.923, 1.875, 1.799, 1.992, 1.704, 1.812, 1.715, 1.756, 2.061, 1.94, 1.554, 2.592, 2.065, 1.983, 1.802, 1.57, 1.955, 2.215, 1.765, 1.796, 2.006, 1.662, 2.573, 1.915, 1.543, 1.439, 2.16, 2.012, 2.42, 2.268, 1.886, 1.767, 1.527, 2.073, 1.65, 1.567, 2.016, 1.819, 2.153, 2.225, 2.237, 2.327, 1.877, 2.115, 1.804, 1.939, 1.867, 1.84, 1.905, 2.302, 1.883, 1.798, 1.725, 1.893, 1.846, 1.916, 2.025, 2.268, 1.867, 1.877]
        , [2.089, 1.664, 1.72, 2.441, 2.031, 2.321, 1.773, 1.702, 1.935, 1.968, 2.119, 2.191, 2.023, 1.925, 1.621, 1.75, 1.822, 2.074, 2.139, 1.764, 1.982, 1.873, 1.895, 1.955, 1.829, 1.945, 1.853, 1.794, 2.046, 1.75, 1.793, 1.741, 1.752, 2.042, 1.965, 1.532, 2.598, 2.086, 1.923, 1.771, 1.517, 1.98, 2.338, 1.743, 1.794, 2.014, 1.693, 2.618, 1.938, 1.5, 1.476, 2.216, 2.003, 2.361, 2.13, 1.85, 1.764, 1.513, 2.001, 1.669, 1.538, 1.897, 1.819, 2.163, 2.226, 2.099, 2.386, 1.865, 2.121, 1.818, 2.0, 1.876, 1.858, 1.908, 2.254, 1.874, 1.791, 1.759, 1.908, 1.822, 1.944, 2.012, 2.201, 1.863, 1.892]
        ]
     
        column_lst = ['whole_year', 'spring', 'summer', 'autumn', 'winter']
     
        # 计算列表两两间的相关系数
        data_dict = {} # 创建数据字典,为生成Dataframe做准备
        for col, gf_lst in zip(column_lst, unstrtf_lst):
            data_dict[col] = gf_lst
     
        unstrtf_df = pd.DataFrame(data_dict)
        cor1 = unstrtf_df.corr() # 计算相关系数,得到一个矩阵
        print(cor1)
        print(unstrtf_df.columns.tolist())
    

    结果如下:

                whole_year    spring    summer    autumn    winter
    whole_year    1.000000  0.986011  0.943254  0.980358  0.965415
    spring        0.986011  1.000000  0.944394  0.945710  0.930887
    summer        0.943254  0.944394  1.000000  0.876008  0.833568
    autumn        0.980358  0.945710  0.876008  1.000000  0.977426
    winter        0.965415  0.930887  0.833568  0.977426  1.000000
    

    用numpy计算相关系数

    import numpy as np
    # 这里u1是一个矩阵,可以自己构造,也可以来自dataframe类型:比如u1=a_df.values
    np.corrcoef(u1) # 计算矩阵所有行的相关系数
    np.corrcoef(u1.T) # 计算矩阵所有列的相关系数
    np.around(np.corrcoef(u1), decimals=3) # 这里是将矩阵结果保留3位小数
    
    展开全文
  • 计算两个向量 x & y 在移动窗口上的 Pearson 积矩相关系数 r。 这是基本上是 MOVSUM 的包装器和 r 的低内存开销计算。 请参阅中的第二个公式...
  • 对任意两个随机变量X,Y,证明其相关系数的绝对值小于1。对任意两个随机变量X,Y,证明其相关系数的绝对值小于1。对任意两个随机变量X,Y,证明其相关系数的绝对值小于1。 证明思路: 先构造a+bX和Y的均方误差的期望E{...

    这里的证明方法来自浙大《概率与数理统计》108页:
    需证明命题:
    对 任 意 两 个 随 机 变 量 X , Y , 证 明 其 相 关 系 数 的 绝 对 值 小 于 1 。 对任意两个随机变量X,Y,证明其相关系数的绝对值小于1。 X,Y1

    证明思路:

    1. 先 构 造 a + b X 和 Y 的 均 方 误 差 的 期 望 E { [ Y − ( a + b X ) ] 2 } 先构造a+bX和Y的均方误差的期望E\left\{ \left[ Y-\left( a+bX\right) \right] ^{2}\right\} a+bXYE{[Y(a+bX)]2}
    2. 再 求 出 这 个 期 望 的 最 小 值 是 ( 1 − ρ X Y 2 ) D ( Y ) 再求出这个期望的最小值是\left( 1-\rho _{XY}^{2}\right) D\left( Y\right) (1ρXY2)D(Y)
    3. 因 为 均 方 误 差 是 大 于 等 于 0 的 值 , 方 差 也 是 大 于 等 于 0 的 值 , 所 以 对 于 等 式 因为均方误差是大于等于0的值,方差也是大于等于0的值,所以对于等式 00
      min ⁡ a , b E { [ Y − ( a + b X ) ] 2 } = ( 1 − ρ x y 2 ) D ( Y ) \min _{a,b}E\left\{ \left[ Y-\left( a+bX\right) \right] ^{2}\right\} =\left( 1-\rho_{xy} ^{2}\right)D\left( Y\right) a,bminE{[Y(a+bX)]2}=(1ρxy2)D(Y)
      ( 1 − ρ X Y 2 ) 是 必 须 大 于 0 的 , 所 以 ∣ ρ x y ∣ ≤ 1 \left( 1-\rho _{XY}^{2}\right) 是必须大于0的,所以\left| \rho_{xy}\right| \leq 1 (1ρXY2)0ρxy1

    具体步骤
    1,对于任意两个随机变量 X , Y X,Y X,Y,构造
    e = E { [ Y − ( a + b x ) ] 2 } = E ( Y 2 ) + b 2 E ( X 2 ) + a 2 − 2 b E ( X Y ) + 2 a b E ( X ) − 2 a E ( Y ) (1) \begin{aligned}e&= E\left\{ \left[ Y-\left( a+bx\right) \right] ^{2}\right\}\\ &=E\left( Y^{2}\right) + b^{2}E\left( X^{2}\right) +a^{2}-2bE\left( XY\right)+2abE\left( X\right) -2aE\left( Y\right) \end{aligned} \tag{1} e=E{[Y(a+bx)]2}=E(Y2)+b2E(X2)+a22bE(XY)+2abE(X)2aE(Y)(1)
    2. 可以将 e e e看作是关于 a , b a, b a,b的函数,那么,根据多元函数求极值的方法,就要分别求 e e e关于 a , b a, b a,b的偏导,并令其等于 0 0 0, 找到满足必要条件的 a , b a, b a,b的值
    { ∂ e ∂ a = 2 a + 2 b E ( X ) − 2 E ( Y ) = 0 , ∂ e ∂ b = 2 b E ( X 2 ) − 2 E ( X Y ) + 2 a E ( X ) = 0. (2) \begin{cases} \dfrac {\partial e}{\partial a}=2a+2bE\left( X\right) -2E\left( Y\right) =0,\\ \\ \dfrac {\partial e}{\partial b}=2bE\left( X^{2}\right) -2E\left( XY\right) +2aE\left( X\right) =0. \end{cases} \tag{2} ae=2a+2bE(X)2E(Y)=0,be=2bE(X2)2E(XY)+2aE(X)=0.(2)
    a , b a, b a,b的二元一次方程组,得出
    b 0 = C o v ( X , Y ) D ( X ) a 0 = E ( Y ) − b 0 E ( X ) = E ( X ) − E ( X ) C o v ( X , Y ) D ( X ) (3) \begin{aligned} b_{0}&=\dfrac {Cov\left( X,Y\right) }{D\left( X\right) } \\ a_0&=E\left( Y\right) -b_0E\left( X\right) =E\left( X\right) -E\left( X\right) \dfrac {Cov\left( X,Y\right) }{D\left( X\right) } \end{aligned} \tag{3} b0a0=D(X)Cov(X,Y)=E(Y)b0E(X)=E(X)E(X)D(X)Cov(X,Y)(3)
    3. 将 a 0 , b 0 a_0, b_0 a0,b0代入式 ( 1 ) (1) (1)中,得到
    e = E { [ Y − ( a + b x ) ] 2 } = D [ y − a 0 − b 0 X ] + [ E ( Y − a 0 − b 0 X ) ] 2 由 ( 2 ) 的 第 一 式 可 得 , E ( Y − a 0 − b 0 X ) = 0 = D ( Y − b 0 X ) = D ( Y ) + b 0 2 D ( X ) − 2 b 0 C o v ( X , Y ) = D ( Y ) + C o v 2 ( X , Y ) D ( x ) − 2 C o v 2 ( X , Y ) D ( x ) = D ( Y ) [ 1 − D ( X , Y ) D ( X ) D ( Y ) ] = ( 1 − ρ X Y 2 ) D ( Y ) \begin{aligned} e&= E\left\{ \left[ Y-\left( a+bx\right) \right] ^{2}\right\}\\ &= D\left[ y-a_0 -b_0X\right] +\left[ E\left( Y-a_0-b_0 X\right) \right] ^{2}\\ 由(2)的第一式可得,E\left( Y-a_0-b_0 X\right)=0 \\ &= D\left( Y- b_0X\right) \\ \\ &= D\left( Y\right) +b^{2}_0 D\left( X\right) -2b_0 Cov\left( X,Y\right) \\ \\ &= D\left( Y\right) +\dfrac {Cov^2\left( X,Y\right) }{D\left( x\right) }-2\dfrac {Cov^2\left( X,Y\right) }{D\left( x\right) } \\ \\ &= D\left( Y\right) \left[ 1-\dfrac {D\left( X,Y\right) }{D\left( X\right) D\left( Y\right) }\right] \\ \\ &=\left( 1-\rho_{XY}^2\right) D\left( Y\right) \end{aligned} e(2)E(Ya0b0X)=0=E{[Y(a+bx)]2}=D[ya0b0X]+[E(Ya0b0X)]2=D(Yb0X)=D(Y)+b02D(X)2b0Cov(X,Y)=D(Y)+D(x)Cov2(X,Y)2D(x)Cov2(X,Y)=D(Y)[1D(X)D(Y)D(X,Y)]=(1ρXY2)D(Y)
    因为由方差的定义可知,方差始终是大于或等于0的值,而且 e e e是一个非负随机变量(有平方)的期望,所以 ( 1 − ρ X Y 2 ) \left( 1-\rho_{XY}^2\right) (1ρXY2)必定大于0,所以 X , Y X,Y X,Y的相关系数 ∣ ρ X Y ∣ ≤ 1 |\rho_{XY}| \leq 1 ρXY1

    这里的证明过程没有问题,不过我有疑问的是,如果问题改为求任意随机变量X,Y的相关系数的取值范围,又该怎么做呢?因为这里的题目已经预设了证明是绝对值小于1,那么怎么证明1就是任意两个随机变量的相关系数的最大值呢?就像 a a a是一个 ( 0 , 0.5 ) (0, 0.5) (0,0.5)之间的值,现在已经证明了 a ≤ 1 a \leq 1 a1,怎么能够证明出 a ≤ 0.5 a\leq 0.5 a0.5

    更新,一些关于相关系数的理解:

    1. 相关系数表达的是两个随机变量 X , Y X, Y X,Y的线性关系,不相关意味着两随机变量间没有线性关系,而不表示两随机变量独立,即是说不存在 a + b X = Y a+bX = Y a+bX=Y这种关系,可能存在 Y = X 2 Y=X^2 Y=X2时,相关系数 ρ X Y = 0 \rho_{XY}=0 ρXY=0, X , Y X,Y X,Y不相关,但是 X , Y X,Y X,Y也不独立。详见浙大概率论与梳理统计第4版108页及其后例一
    2. 疑问解答:
      怎么证明出任意随机变量的相关系数的最大值就是1的呢?
      两个思路:
    • 知乎大佬的一个回答知道,可以将随机变量看作无穷维的向量,协方差看作是向量内积,那么相关系数就是向量的夹角余弦值,自然而然,取值范围是 [ − 1 , 1 ] [-1, 1] [1,1]
    • 由书上108页的第二个定理的证明可以知道, ∣ ρ X Y ∣ = 1 |\rho_{XY}|=1 ρXY=1的充要条件是存在常数 a , b a,b a,b使得
      P { Y = a + b X } = 1 P\{ Y= a+bX \} =1 P{Y=a+bX}=1
      即是当且仅当 Y = a + b X Y=a+bX Y=a+bX这个条件存在时,满足 ∣ ρ X Y ∣ = 1 |\rho_{XY}|=1 ρXY=1这个条件,对于其他 Y = a̸ + b X Y =\not a+bX Y=a+bX的情况都是 ∣ ρ X Y ∣ < 1 |\rho_{XY}|<1 ρXY<1,所以能够得出对于任意两个随机变量的相关系数,其绝对值最大能够取到1,以及 ∣ ρ X Y ∣ ≤ 1 |\rho_{XY}|\leq1 ρXY1
    展开全文
  • python学习----pearsonr(x,y)相关系数计算

    万次阅读 2017-03-25 18:15:33
    函数:pearsonr(x,y)功能: 计算特征目标变量之间的相关度 参数说明: 1)输入:x为特征,y为目标变量. 2)输出:r: 相关系数 [-1,1]之间,p-value: p值。 注: p值越小,表示相关系数越显著,一般p值在500个...

    函数:pearsonr(x,y)

    功能:

        计算特征与目标变量之间的相关度
    

    参数说明:

        1)输入:x为特征,y为目标变量.
        2)输出:r: 相关系数 [-1,1]之间,p-value: p值。
             注: p值越小,表示相关系数越显著,一般p值在500个样本以上时有较高的可靠性。
    

    python实现

    import numpy as np
    from scipy.stats import pearsonr
    import random
    np.random.seed(0)
    size=300
    x=np.random.normal(0,1,size)
    print "Lower noise",pearsonr(x,x+np.random.normal(0,1,size))
    print "Higher noise",pearsonr(x,x+np.random.normal(0,10,size))

    输出:

    Lower noise (0.71824836862138408, 7.3240173129983507e-49)
    Higher noise (0.057964292079338155, 0.31700993885324752)
    
    展开全文
  • python 实现相关系数计算和检验

    千次阅读 2020-01-29 16:26:25
    一般情况下,总体相关系数是未知的,通常将样本相关系数r作为的近似估值。 案例如下: 检验不良贷款贷款余额之间的相关关系是否显著(=0.05). 假设: import pandas as pd import numpy as np import ...

    一般情况下,总体相关系数\rho是未知的,通常将样本相关系数r作为\rho的近似估值。

    案例如下:

    检验不良贷款与贷款余额之间的相关关系是否显著(\alpha=0.05).

    假设:H_{0}: \rho =0; H_{1}: \rho \neq 0

     

    import pandas as pd
    import numpy as np
    import scipy
    import matplotlib.pyplot as plt
    from pylab import mpl
    mpl.rcParams['font.sans-serif'] = ['SimHei']  # 显示中文字体
    plt.rcParams['axes.unicode_minus'] = False    # 显示负号
    
    
    columns = {'A':"分行编号", 'B':"不良贷款(亿元)", 'C':"贷款余额(亿元)", 'D':"累计应收贷款(亿元)", 'E':"贷款项目个数", 'F':"固定资产投资额(亿元)"}
    data={"A":[1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,16,17,18,19,20,21,22,23,24,25],
          "B":[0.9,1.1,4.8,3.2,7.8,2.7,1.6,12.5,1.0,2.6,0.3,4.0,0.8,3.5,10.2,3.0,0.2,0.4,1.0,6.8,11.6,1.6,1.2,7.2,3.2],
          "C":[67.3,111.3,173.0,80.8,199.7,16.2,107.4,185.4,96.1,72.8,64.2,132.2,58.6,174.6,263.5,79.3,14.8,73.5,24.7,139.4,368.2,95.7,109.6,196.2,102.2],
          "D":[6.8,19.8,7.7,7.2,16.5,2.2,10.7,27.1,1.7,9.1,2.1,11.2,6.0,12.7,15.6,8.9,0,5.9,5.0,7.2,16.8,3.8,10.3,15.8,12.0],
          "E":[5,16,17,10,19,1,17,18,10,14,11,23,14,26,34,15,2,11,4,28,32,10,14,16,10],
          "F":[51.9,90.9,73.7,14.5,63.2,2.2,20.2,43.8,55.9,64.3,42.7,76.7,22.8,117.1,146.7,29.9,42.1,25.3,13.4,64.3,163.9,44.5,67.9,39.7,97.1]
         }
    
    df = pd.DataFrame(data).rename(columns=columns)
    print(df)

    # 绘制散点图
    df.plot(x='贷款余额(亿元)', y='不良贷款(亿元)', kind='scatter', title='不良贷款与贷款余额的散点图')
    
    df.plot(x='累计应收贷款(亿元)', y='不良贷款(亿元)', kind='scatter', title='不良贷款与累计应收贷款的散点图')
    
    df.plot(x='贷款项目个数', y='不良贷款(亿元)', kind='scatter', title='不良贷款与贷款项目个数的散点图')
    
    df.plot(x='固定资产投资额(亿元)', y='不良贷款(亿元)', kind='scatter', title='不良贷款与固定资产投资额的散点图')

    相关系数公式:

    r=\frac{n\sum xy-\sum x\sum y}{\sqrt{n\sum x^{2}-\left ( \sum x \right )^{2}}*\sqrt{n\sum y^{2}-\left ( \sum y \right )^{2}}}

    # 计算各变量之间的相关系数
    corr = df.drop(columns='分行编号').corr()
    print(corr)

     

    相关系数r检验统计量公式:

    t= |r| \sqrt{\frac{n-2}{1-r^{2}}} \sim t(n-2)

    # r的显著性检验
    # 各个相关系数检验的统计量
    def r_test_statistic(r, n):
        if r==1:
            return 0
        else:
            a = abs(r)
            b = np.sqrt((n-2) / (1-r**2))
            c = a*b
            return c
    
    # 计算各个相关系数检验的统计量
    corr_test_stat = corr.applymap(lambda x:r_test_statistic(x, len(df)))
    print(corr_test_stat)

     

    # 根据显著性水平0.05和自由度n-2=25-2=23, 计算t分布临界值
    alpha = 0.05
    t_score = scipy.stats.t.isf(alpha/2, df = len(df)-2)
    print(t_score)
    >>> 2.068657610419041

    由于t=7.533515 > t_score=2.0687, 所以拒绝原假设H_{0}, 说明不良贷款与贷款余额之间存在显著的正线性相关关系。

     

    展开全文
  • 夹角余弦(Cosine) ...(1)在二维空间中向量A(x1,y1)向量B(x2,y2)的夹角余弦公式: (2) 两个n维样本点a(x11,x12,…,x1n)和b(x21,x22,…,x2n)的夹角余弦 类似的,对于两个n维样本点a(x11,x12,…,x1n)和b...
  • 2. 协方差与相关系数 3. 不相关独立 4. 矩、协方差矩阵、多元正态分布的性质 1. 方差的性质 性质 1)c是常数,D(c) = 0 2) 设X是随机变量,c是常数,则有() 3) 设XY是两个随机变量,则 特别地,若XY...
  • matlab相关系数计算

    万次阅读 2018-07-17 01:00:31
    一、相关系数  具体的理论知识参见其他气象统计学教材。简单的说,相关系数r就是求两个大小相同样本的相关性,范围在-1到1之间。样本的相关性并不能代表总体也是相关的,因此需要做统计检验。常用的检验方法是t检验...
  • 第七章.线性相关系数计算

    千次阅读 2019-11-23 15:32:42
    7.1.1线性相关系数计算 线性相关分析是用相关系数来表示两个变量间相互的线性关系,并判断其密切程度的统计方法。 为了下面编程方便起见,我们令X=身高,Y=体重。 > x=ug$height > y=ug$weight > par...
  • 计算相关系数 为了更加准确地描述变量之间的线性相关程度,可以通过计算相关系统来进行相关分析。 在二元变量的相关分析过程中比较常用的有Pearson相关系数,Spearman秩相关系数和判定系数。 Pearson相关系数 一般...
  • 首先看下相关系数、偏相关系数计算公式 Xi=[1.1, 1.9, 3] Yi=[5.0, 10.4, 14.6] E(X) = (1.1+1.9+3)/3=2 E(Y) = (5.0+10.4+14.6)/3=10 E(XY)=(1.1×5.0+1.9×10.4+3×14.6)/3=23.02 Cov(X,Y)=E(XY)-E(X)E(Y)=...
  • 相关系数计算

    千次阅读 2017-06-06 19:59:24
    相关系数r的计算公式如下所示 (1-1) 其中x={x1,x2,x3...,xn},y={y1,y2,y3...yn} #include "math.h" #include "stdio.h" //相关系数函数 double aaa(int a[],int b[],int n){ int k = 0; int temp1s=0; int...
  • MATLAB相关系数计算

    万次阅读 2015-04-08 21:45:44
    参考资料 [1]matlab 相关系数 [2] Matlab的自相关函数xcorr [3]关于用matlab怎么分析两个离散序列相关性,是相关函数还是互功率谱?
  • 它根据 2 个或更多数据集计算 Spearman 等级相关系数,以及相关的 t 检验和 p 值。 该代码改编自 Numerical Recipes 一书 ( http://www.nr.com/ ) 例子: >> x = [1 2 3 3 3]'; >> y = [1 2 2 4 3; rand(1,5)]'; >>...
  • matlab中样本相关系数计算与测试

    万次阅读 2016-10-13 11:09:55
    1. 何谓相关系数?此处只列出相关系数的公式: r=Cov(X,Yxσy=E(X−μx)(Y−μyxσy r = \frac{ Cov(X,Y) } {\sigma_x \sigma_y} = \frac{ E(X - \mu_x)(Y - \mu_y) }{\sigma_x \sigma_y} 更多内容请百度...
  • python:numpy的corrcoef计算相关系数

    千次阅读 2020-05-11 22:45:29
    函数常用的是前三个参数,xy分别是需要计算相关系数的两个随机变量,当rowvar为True(默认情况)时,每一行代表一个随机变量,否则每一列代表一个随机变量。 该函数计算的是Pearson(皮尔逊)相关系数,大学学过概率论...
  • XY的(线性)相关系数是0。为什么呢?直观来说,因为是个圆,如果你画一条线性回归的线,线的斜率是正的还是负的都不合适,因为是对称的。数学上 因为 E(X|Y) = E(Y|X) = 0 所以 E(X) = E(Y) = 0 而且 E(XY) = E[E...
  • 有时候多组数据需要分析其关联(是否有正向/反向线性关联关系),这个时候就可以借助关联分析了。如果只是两组线性数据比较,那只要比出来一个关联度就好了。但是如果是两个表格(多对多组数据,两两比较,就...
  • numpy.corrcoef 计算相关系数

    千次阅读 2020-05-27 16:28:02
    y:(array_like,可选),一组额外的特征和值,数组形状与x相同 import numpy as np import pandas as pd import matplotlib.pyplot as plt beer = pd.read_csv(r"...\data\beer_data.txt", sep='
  • 计算皮尔逊相关系数——corr %% 多变量间相关性分析和选取相关性强的变量方法属于“属性约减”范畴。 %即进行各变量间的相关性分析,选取相关性强的变量。 %可以使用皮尔逊Pearson相关性系数r进行衡量,如果其绝对值...
  • 皮尔森相关系数,又称积差相关系数、积矩相关系数,可以看做将两组数据首先做Z分数处理之后, 然后两组数据的乘积和除以样本数Z分数一般代表正态分布中, 数据偏离中心点的距离.等于变量减掉平均数再除以标准差。按照...
  • Matlab计算相关系数

    千次阅读 2020-01-10 14:46:26
    Matlab使用corr函数和corrcoef函数计算r值和p值。
  • 本文主要是讲解下何为Pearson相关系数,Spearman相关系数,以及相应的代码实现。(代码是我根据公式自己封装的,所以:1. 性能肯定没有Tensorflow那些框架的性能好; 2. 有可能会有问题) 目录1 Pearson相关系数1.1...
  • 换句话说,假如X与Y有其它的函数关系但非线性关系时,用相关系数来衡量是不合理的。 相关系数定义为: ρX,Y=cov⁡(X,YXσY=E((X−μX)(Y−μY))σXσY=E(XY)−E(X)E(Y)E(X2)−E2(X)E(Y2)−E2(Y)\rho_{X, Y}=\...
  • 相关系数

    万次阅读 2018-10-14 11:46:18
    结论:在数据标准化之后,欧式距离、Pearson相关系数、...两个n维向量x与y间的欧式距离: D=∑k=1n(xi−yi)2 D=\sqrt{\sum_{k=1}^n{(xi-yi)^2}} D=k=1∑n​(xi−yi)2​ 向量运算形式: D=(a−b)(a−b)T D=\sqrt...
  • 协方差、相关系数(Pearson 相关系数

    万次阅读 多人点赞 2018-08-30 10:41:16
    概念:Pearson相关系数 (Pearson CorrelationCoefficient)是用来衡量两个数据集合是否在一条线上面,它用来衡量定距变量间的线性关系。[1] 注: 【定距变量】[2][3] 若想理解定距变量,需要其他变量...
  • 相关系数计算整理

    2020-04-29 15:41:05
    相关系数计算整理 一、使用公式计算 #coding=utf-8 import numpy import pandas X = [52,19,7,33,2] Y = [162,61,22,100,6] 均值 XMean = numpy.mean(X) YMean = numpy.mean(Y) #标准差 XSD = numpy.std(X) YSD = ...
  • Python+pandas计算数据相关系数(person、Kendall、spearman)

    万次阅读 多人点赞 2019-03-12 15:48:09
    pandas中DataFrame对象corr()方法的用法,该方法用来计算DataFrame对象中所有列之间的相关系数(包括pearson相关系数、Kendall Tau相关系数和spearman秩相关)。 pandas相关系数-DataFrame.corr()参数详解 ...
  • 皮尔逊相关系数计算过程

    万次阅读 2018-12-13 22:05:52
    皮尔逊相关系数计算过程备忘。 首先记录下3个公式: 1、皮尔逊相关系数公式: 2、协方差公式: 3、标准差公式: s=sqrt(((x1-x)^2 +(x2-x)^2 +......(xn-x)^2)/n)。x为x1~xn的均值(也叫做期望值E...
  • 计算相关系数 为了更加准确地描述变量之间的线性相关程度,可以通过计算相关系统来进行相关分析。 在二元变量的相关分析过程中比较常用的有Pearson相关系数,Spearman秩相关系数和判定系数。 皮尔逊相关系数...

空空如也

空空如也

1 2 3 4 5 ... 20
收藏数 377,523
精华内容 151,009
关键字:

如何计算x与y的相关系数