大师兄的数据分析学习笔记(六):探索性数据分析(五)

大师兄的数据分析学习笔记(五):探索性数据分析(四)
大师兄的数据分析学习笔记(七):探索性数据分析(六)

四、多因子与复合分析

4. 相关系数
  • 相关系数是衡量两组数据的分布趋势和变化趋势一致性程度的因子。
  • 相关系数有正相关、负相关和不相关之分。
  • 相关系数越大,越接近1,变化趋势越正向同步;
  • 相关系数越小,越接近-1,变化趋势越反向同步;
  • 相关系数越接近0,变化趋势越不相关;
  • 常用的相关系数有两种:皮尔逊相关系数(Pearson correlation coefficient)斯皮尔曼相关系数(spearman correlation coefficient)
4.1 皮尔逊相关系数
  • 皮尔逊相关系数的分子是两组数据的协方差,分母是两组数据的标准差的集。
  • r(X,Y) = \frac{Cov(X,Y)}{\sigma_x\sigma_y} = \frac{E[(X-\mu_x)(Y-\mu_y)]}{\sigma_x\sigma_y}
>>>import numpy as np
>>>import scipy.stats as ss

>>>data1 = np.random.rand(10)
>>>data2 = np.random.rand(10)
>>>pccs = ss.pearsonr(data1,data2)
>>>print(f"data1:{data1}")
>>>print(f"data2:{data2}")
>>>print(f"Pearson's correlation coefficient:{pccs[0]}")
>>>print(f"Two-tailed p-value:{pccs[1]}")
data1:[0.99837294 0.784658   0.53345186 0.59309483 0.28240823 0.66189433
 0.29580696 0.31315612 0.7754216  0.77443794]
data2:[0.48826977 0.81899969 0.77566201 0.91464751 0.05536523 0.35246479
 0.32585614 0.71434004 0.37966254 0.94915496]
Pearson's correlation coefficient:0.32409101999585543
Two-tailed p-value:0.3609398908469933
4.2 斯皮尔曼相关系数
  • 斯皮尔曼相关系数关注两组数据的名次差。
  • \rho_s = 1 - \frac{6\sum{d^2_i}}{n(n^2-1)}
  • n:每组数据的数量;
  • d:两组数据排名后的名次差;
>>>import numpy as np
>>>import scipy.stats as ss

>>>data1 = np.random.rand(10)
>>>data2 = np.random.rand(10)
>>>pccs = ss.spearmanr(data1,data2)
>>>print(f"data1:{data1}")
>>>print(f"data2:{data2}")
>>>print(f"Spearman's correlation coefficient:{pccs[0]}")
>>>print(f"Two-tailed p-value:{pccs[1]}")
data1:[0.0085787  0.94480457 0.29985499 0.54689296 0.13564683 0.72558257
 0.83684571 0.2797848  0.58108358 0.96698258]
data2:[0.71151971 0.3121948  0.20845518 0.68793807 0.62991839 0.43235496
 0.93005684 0.64161376 0.93214243 0.06559743]
Spearman's correlation coefficient:-0.32121212121212117
Two-tailed p-value:0.3654683104386702
5. 线性回归
  • 回归是确定两种或两种以上变量间相互依赖的定量关系的一种统计分析方法,如果变量间的关系是线性关系,则称为线性回归
  • 线性回归最常用的算法是最小二乘法,最小二乘法的本质是最小化误差的平方的方法,公式如下:

\hat{b}=\frac{\sum_{i=1}^n(x_i-\overline{x})(y_i-\overline{y})}{\sum_{i=1}^n(x_i-\overline{x})^2} = \frac{\sum_{i=1}^nx_iy_i-n\overline{xy}}{\sum_{i=1}^nx_i^2-n\overline{x}^2}
\hat{a}=\overline{y}-\hat{b}\overline{x}
\hat{y} = \hat{b}x+\hat{a}

  • 线性回归的关键指标包括决定系数残差不相关
  • 一元线性回归决定系数公式:R^2 = \frac{SSR}{SST} = \frac{\sum_{i=1}^n(\hat{y_i}-\overline{y})^2}{\sum_{i=1}^n(y_i-\overline{y})^2}

y_i:实际值
\overline{y}:均值
\hat{y_i}:预测值
决定系数越接近1,代表线性回归效果越好。

  • 多元线性回归采用了校正式的决定系数:adjusted R^2 = 1 - \frac{\frac{SSR}{(n-k-1)}}{\frac{SST}{(n-1)}}

k:参数的个数

  • 残差不相关(DW检验)的公式:DW=\frac{\sum_{l=2}^n(e_l-{e_{l-1}})^2}{\sum_{l=1}^n{e_l}^2}

值得范围在0-4之间;
如果值为2则残差不相关(好的回归);
接近4代表残差正相关;
接近0代表残差负相关。

>>>import random
>>>import numpy as np
>>>import matplotlib.pyplot as plt
>>>from sklearn.linear_model import LinearRegression

>>>x = np.arange(10).astype(float).reshape((10,1))
>>>y = random.randint(-5,20)+np.random.rand(10,1)

>>>reg = LinearRegression()
>>>res = reg.fit(x,y) # 拟合
>>>y_pred = reg.predict(x) # 预测值
>>>print(f"coefficient:{reg.coef_}")
>>>print(f"intercept:{reg.intercept_}")

>>>plt.scatter(x,y)
>>>plt.plot(y_pred)
>>>plt.show()
coefficient:[[-0.01168797]]
intercept:[19.51730895]
6. 主成分分析
  • 主成分分析(PCA),通过正交变换将一组可能存在相关性的变量转换为一组线性不相关的变量,转换后的这组变量叫主成分,最重要的作用是给数据降维
  • 主成分分析的步骤:
  1. 求特征协方差矩阵;
  2. 求协方差的特征值和特征向量;
  3. 将特征值按照从大到小的顺序排序,选择其中最大的k个;
  4. 将样本点投影到选取的特征向量上。
>>>import numpy as np
>>>import matplotlib.pyplot as plt
>>>from sklearn.decomposition import PCA

>>>data = np.array([np.random.randint(0,5,10),np.random.randint(0,5,10),np.random.randint(0,5,10),np.random.randint(0,5,10)]).T
>>>lower_dim = PCA(n_components=1)
>>>lower_dim.fit(data)
>>>print(f"explained_variance_ratio:{lower_dim.explained_variance_ratio_}")

>>>plt.plot(lower_dim.fit_transform(data))
>>>plt.show()
explained_variance_ratio:[0.40663428]
最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
  • 序言:七十年代末,一起剥皮案震惊了整个滨河市,随后出现的几起案子,更是在滨河造成了极大的恐慌,老刑警刘岩,带你破解...
    沈念sama阅读 201,681评论 5 474
  • 序言:滨河连续发生了三起死亡事件,死亡现场离奇诡异,居然都是意外死亡,警方通过查阅死者的电脑和手机,发现死者居然都...
    沈念sama阅读 84,710评论 2 377
  • 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
    开封第一讲书人阅读 148,623评论 0 334
  • 文/不坏的土叔 我叫张陵,是天一观的道长。 经常有香客问我,道长,这世上最难降的妖魔是什么? 我笑而不...
    开封第一讲书人阅读 54,202评论 1 272
  • 正文 为了忘掉前任,我火速办了婚礼,结果婚礼上,老公的妹妹穿的比我还像新娘。我一直安慰自己,他们只是感情好,可当我...
    茶点故事阅读 63,232评论 5 363
  • 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
    开封第一讲书人阅读 48,368评论 1 281
  • 那天,我揣着相机与录音,去河边找鬼。 笑死,一个胖子当着我的面吹牛,可吹牛的内容都是我干的。 我是一名探鬼主播,决...
    沈念sama阅读 37,795评论 3 393
  • 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
    开封第一讲书人阅读 36,461评论 0 256
  • 序言:老挝万荣一对情侣失踪,失踪者是张志新(化名)和其女友刘颖,没想到半个月后,有当地人在树林里发现了一具尸体,经...
    沈念sama阅读 40,647评论 1 295
  • 正文 独居荒郊野岭守林人离奇死亡,尸身上长有42处带血的脓包…… 初始之章·张勋 以下内容为张勋视角 年9月15日...
    茶点故事阅读 35,476评论 2 317
  • 正文 我和宋清朗相恋三年,在试婚纱的时候发现自己被绿了。 大学时的朋友给我发了我未婚夫和他白月光在一起吃饭的照片。...
    茶点故事阅读 37,525评论 1 329
  • 序言:一个原本活蹦乱跳的男人离奇死亡,死状恐怖,灵堂内的尸体忽然破棺而出,到底是诈尸还是另有隐情,我是刑警宁泽,带...
    沈念sama阅读 33,226评论 3 318
  • 正文 年R本政府宣布,位于F岛的核电站,受9级特大地震影响,放射性物质发生泄漏。R本人自食恶果不足惜,却给世界环境...
    茶点故事阅读 38,785评论 3 303
  • 文/蒙蒙 一、第九天 我趴在偏房一处隐蔽的房顶上张望。 院中可真热闹,春花似锦、人声如沸。这庄子的主人今日做“春日...
    开封第一讲书人阅读 29,857评论 0 19
  • 文/苍兰香墨 我抬头看了看天上的太阳。三九已至,却和暖如春,着一层夹袄步出监牢的瞬间,已是汗流浃背。 一阵脚步声响...
    开封第一讲书人阅读 31,090评论 1 258
  • 我被黑心中介骗来泰国打工, 没想到刚下飞机就差点儿被人妖公主榨干…… 1. 我叫王不留,地道东北人。 一个月前我还...
    沈念sama阅读 42,647评论 2 348
  • 正文 我出身青楼,却偏偏与公主长得像,于是被迫代替她去往敌国和亲。 传闻我的和亲对象是个残疾皇子,可洞房花烛夜当晚...
    茶点故事阅读 42,215评论 2 341

推荐阅读更多精彩内容