自学内容网 自学内容网

Python和C++及R相关系数数学统计学可视化和神经模型及评估指标

🎯要点

  1. 较少统计样本显著性评估和变量关系梳理
  2. 功能磁共振成像一致性分析
  3. 检测非单调关联性结构
  4. 随机变量动力学相关性
  5. 热图和矩阵图基因疫苗非线性变量相关性
    在这里插入图片描述

Python相关矩阵

相关矩阵

n n n 个随机变量 X 1 , … , X n X_1, \ldots, X_n X1,,Xn 的相关矩阵是 n × n n \times n n×n 矩阵 C C C,其 ( i , j ) (i, j) (i,j) 条目为
c i j : = corr ⁡ ( X i , X j ) = cov ⁡ ( X i , X j ) σ X i σ X j ,  if  σ X i σ X j > 0 c_{i j}:=\operatorname{corr}\left(X_i, X_j\right)=\frac{\operatorname{cov}\left(X_i, X_j\right)}{\sigma_{X_i} \sigma_{X_j}}, \quad \text { if } \sigma_{X_i} \sigma_{X_j}>0 cij:=corr(Xi,Xj)=σXiσXjcov(Xi,Xj), if σXiσXj>0
因此对角线条目都是相同的。如果使用的相关性度量是乘积矩系数,则相关矩阵与标准化随机变量 X i / σ ( X i ) X_i / \sigma\left(X_i\right) Xi/σ(Xi) 的协方差矩阵相同,其中 $i=1, \dots, n $。这既适用于总体相关性矩阵(在这种情况下 σ \sigma σ 是总体标准差),也适用于样本相关性矩阵(在这种情况下 σ \sigma σ 表示样本标准差)。因此,每个矩阵都必然是正半定矩阵。此外,如果没有变量可以将其所有值精确地生成为其他变量值的线性函数,则相关矩阵是严格正定的。

相关矩阵是对称的,因为 X i X_i Xi X j X_j Xj 之间的相关性与 X j X_j Xj X i X_i Xi 之间的相关性相同。例如,相关矩阵出现在多重确定系数的一个公式中,多重确定系数是多重回归中拟合优度的一种度量。

在统计建模中,表示变量之间关系的相关矩阵被分为不同的相关结构,这些结构通过估计它们所需的参数数量等因素来区分。例如,在可交换相关矩阵中,所有变量对都被建模为具有相同的相关性,因此矩阵的所有非对角元素彼此相等。另一方面,当变量表示时间序列时,通常使用自回归矩阵,因为当测量时间更接近时,相关性可能会更大。

相关矩阵市场应用

让我们考虑相关矩阵在识别线性相关的股票中的应用。下面是使用 yfinance Python 库检索几只大型科技股的历史定价数据的一些示例代码。

import yfinance as yf
import pandas as pd

tickers = ['msft', 'aapl', 'tsla', 'nvda', 'goog']
df = yf.download(ticker=tickers, period='6mo')['Adj Close']

# Result
                  AAPL         GOOG        MSFT        NVDA        TSLA
Date                                                                   
2021-01-22  138.627029  1901.050049  224.911453  137.046280  846.640015
2021-01-25  142.464767  1899.400024  228.474991  136.454132  880.799988
2021-01-26  142.704010  1917.239990  231.262131  134.275360  883.090027
2021-01-27  141.607513  1830.790039  231.829514  129.103348  864.159973
2021-01-28  136.653336  1863.109985  237.831787  130.435074  835.429993
...                ...          ...         ...         ...         ...
2021-07-15  148.479996  2625.330078  281.029999  189.662506  650.599976
2021-07-16  146.389999  2636.909912  280.750000  181.610001  644.219971
2021-07-19  142.449997  2585.080078  277.010010  187.797501  646.219971
2021-07-20  146.149994  2622.030029  279.320007  186.119995  660.500000
2021-07-21  145.399994  2652.010010  281.399994  194.100006  655.289978

yfinance download() 方法默认提供开盘价-最高价-最低价-收盘价 (OHLC) 数据,包括开盘价、最高价、最低价、收盘价、成交量、调整收盘价。这里我们仅提取了过去 6 个月内每只股票每日调整收盘价数据。

鉴于这些股票都来自同一行业,并且是市场上交易量最大的股票,因此它们的价格很有可能会一起变动。也就是说,当 M S F T MSFT MSFT 的价格上涨时, G O O G GOOG GOOG 的价格很可能也会上涨。不过,这只是猜测,让我们创建一个相关矩阵来验证我们的假设。

>>> data.corr()

# Result
          AAPL      GOOG      MSFT      NVDA      TSLA
AAPL  1.000000  0.429290  0.708614  0.634802  0.407953
GOOG  0.429290  1.000000  0.894801  0.882468 -0.535120
MSFT  0.708614  0.894801  1.000000  0.911506 -0.218011
NVDA  0.634802  0.882468  0.911506  1.000000 -0.243408
TSLA  0.407953 -0.535120 -0.218011 -0.243408  1.000000

这些结果详细列出了 6 个月期间每只股票调整后收盘价之间的相关系数,可供交叉引用。请注意,1.0 的值从左上角向右下角对角移动。这些值反映了完美的相关性,因为它们引用的是同一只股票。换句话说,$AAPL 和 $AAPL 之间的相关系数为 1.0,因为它们始终完全相同!

矩阵中的相关系数介于 -1 到 1 之间,其中 -1 表示完全负相关,0 表示无相关,1 表示完全正相关。考虑这些值可以让我们识别价格一起变动的不同股票,无论是正向变动还是负向变动。关于如何解释这些结果,存在不同的学派,但一般来说,高于 .7 和低于 -.7 的值被视为可能存在共线性的危险信号。在这种情况下,应进行进一步调查,以确保得到的线性模型具有最小的误差。

上面的表格非常有见地,但在解释大型数据集时,它并不是最友好的格式。相关矩阵在其他应用中很有用,例如对特征工程等应用程序的变量进行快速初步评估。在这些情况下,使用一种更直观的格式,称为热图。

matplotlib 和 seaborn 都提供了生成这些可视化效果的宝贵工具。让我们使用seaborn 生成一个相关矩阵热图来直观地表示我们的定价相关性。

import seaborn as sns
import matplotlib.pyplot as plt

cmap = sns.diverging_palette(230, 20, as_cmap=True)

sns.heatmap(
        data=data.corr(),  
        linewidths=0.3,  
        square=True,   
        cmap=cmap,  
        vmax=1,  
        vmin=-1, 
        center=0, 
        cbar_kws={"shrink": .75}  
    )

plt.yticks(rotation=0)  
plot.show()

在此热图中,最接近深棕色的值表示更强的正相关性。那些更接近深蓝色的值表示更强的正负相关性。由于相关矩阵中数据组织的性质,存在大量冗余数据。例如,从左上角到右下角对角线上方的每个单元格都是下半部分的重复。我们可以通过在之前的代码中添加掩码来减少这些:

import numpy as np

mask = np.triu(np.ones_like(data.corr(), dtype=bool))
np.fill_diagonal(mask, False)  # keeps the diagonal

[[False  True  True  True  True]
 [False False  True  True  True]
 [False False False  True  True]
 [False False False False  True]
 [False False False False False]]

sns.heatmap(..., mask=mask, ...)

通过从我们的可视化中删除冗余数据,我们创建了一种更高效的技术股相关系数关系表示。从这种映射中获得的见解可以帮助确定在应用程序中应使用哪些特征,例如使用线性回归预测股价或为更复杂的建模设计特征。

从交易者/投资者角度理解相关矩阵

  • 分散化:交易者可以使用相关矩阵来识别弱相关或负相关的股票,从而帮助他们分散投资组合。通过投资不朝同一方向变动的股票,交易者可以潜在地降低其投资组合的整体风险。
  • 风险管理:相关性分析可以通过突出显示倾向于共同波动的股票来帮助交易者识别和管理风险。通过了解这些关系,交易者可以调整头寸并对冲潜在的损失。
  • 市场情绪分析:相关矩阵还可以提供对市场情绪的洞察。例如,如果某个行业或市场中的大多数股票高度相关,则可能表明它们都受到共同因素的影响,例如广泛的市场趋势、经济状况或地缘政治事件。这些信息可以帮助交易者对其投资做出明智的决策。

👉更新:亚图跨际


原文地址:https://blog.csdn.net/jiyotin/article/details/142384332

免责声明:本站文章内容转载自网络资源,如本站内容侵犯了原著者的合法权益,可联系本站删除。更多内容请关注自学内容网(zxcms.com)!