多元相关性分析python
时间: 2023-11-05 10:04:27 浏览: 145
多元相关性分析是一种用于研究多个变量之间关系的统计方法。在Python中,可以使用相关系数来度量这种关系。常用的多元相关系数包括皮尔森相关系数、Spearman相关系数和Kendall秩相关系数。
1. 皮尔森相关系数是用来度量线性关系的强度和方向的统计量。在Python中,可以使用NumPy、Pandas和Scipy库来计算皮尔森相关系数。以下是一些示例代码:
```
import pandas as pd
import numpy as np
from sklearn.datasets import load_iris
from scipy.stats import pearsonr
X = load_iris().data
# 使用numpy计算皮尔森相关系数
result_1 = np.corrcoef(X, rowvar=False)
# 使用pandas中corr()计算相关系数
result_2 = pd.DataFrame(X).corr()
# 使用原始公式计算皮尔森相关系数
result_3 = np.zeros((X.shape[1], X.shape[1]))
for i in range(X.shape[1]):
for j in range(X.shape[1]):
std_i, std_j = np.std(X[:, i]), np.std(X[:, j])
cov_ij = np.mean(X[:, i] * X[:, j]) - X[:, i].mean() * X[:, j].mean()
result_3[i, j] = cov_ij / (std_i * std_j)
# 使用scipy.stats.pearsonr计算相关系数
result_4 = np.zeros((X.shape[1], X.shape[1]))
for i in range(X.shape[1]):
for j in range(X.shape[1]):
result_4[i, j], _ = pearsonr(X[:, i], X[:, j])
```
2. Spearman相关系数是一种非参数的方法,用于度量变量之间的单调关系。在Python中,可以使用Pandas和Scipy库来计算Spearman相关系数。以下是一些示例代码:
```
import pandas as pd
import numpy as np
from sklearn.datasets import load_iris
from scipy.stats import spearmanr
X = load_iris().data
# 使用pandas中的corr()计算Spearman相关系数
result_1 = pd.DataFrame(X).corr(method='spearman')
# 使用scipy.stats.spearmanr计算Spearman相关系数
result_2 = spearmanr(X)[0]
# 使用原始公式计算Spearman相关系数
result_3 = np.zeros((X.shape[1], X.shape[1]))
X = pd.DataFrame(X)
X_sort = X.rank(ascending=False)
for i in range(X.shape[1]):
for j in range(X.shape[1]):
tmp = sum((X_sort.iloc[:, i] - X_sort.iloc[:, j]) ** 2)
result_3[i, j] = 1 - 6 * tmp / (X.shape[0] * (X.shape[0] ** 2 - 1))
```
3. Kendall秩相关系数是一种用于度量定序变量之间关系的统计量。在Python中,可以使用Scipy库来计算Kendall秩相关系数。以下是一个示例代码:
```
from scipy.stats import kendalltau
X = load_iris().data
# 使用scipy.stats.kendalltau计算Kendall秩相关系数
result = kendalltau(X)
```
阅读全文