产生200个三元正态分布,并求它的均值、协方差矩阵和样本相关系数
时间: 2023-10-26 08:29:04 浏览: 35
import numpy as np
import pandas as pd
# 生成200个三元正态分布数据
np.random.seed(0)
mean = [0, 0, 0]
cov = [[1, 0.5, 0.5], [0.5, 1, 0.5], [0.5, 0.5, 1]]
data = np.random.multivariate_normal(mean, cov, 200)
# 计算均值
mean = np.mean(data, axis=0)
# 计算协方差矩阵
cov_matrix = np.cov(data, rowvar=False)
# 计算样本相关系数
corr_matrix = np.corrcoef(data, rowvar=False)
# 将数据转换为DataFrame格式
df = pd.DataFrame(data, columns=['x1', 'x2', 'x3'])
df['index'] = range(1, len(df) + 1)
df = df.set_index('index')
print('均值:\n', mean)
print('协方差矩阵:\n', cov_matrix)
print('样本相关系数:\n', corr_matrix)
print('数据:\n', df.head())
相关问题
python三元正态随机数200个,计算均值、协方差、复相关系数、偏相关系数
以下是Python代码实现:
```python
import numpy as np
# 生成三元正态随机数
mean = [0, 0, 0]
cov = [[1, 0.5, 0.3],
[0.5, 1, 0.7],
[0.3, 0.7, 1]]
data = np.random.multivariate_normal(mean, cov, 200).T
# 计算均值
mean = np.mean(data, axis=1)
print("均值:", mean)
# 计算协方差
cov = np.cov(data)
print("协方差:\n", cov)
# 计算复相关系数
corr = np.corrcoef(data)
print("复相关系数:\n", corr)
# 计算偏相关系数
from scipy.stats import pearsonr
partial_corr = np.zeros((3, 3))
for i in range(3):
partial_corr[i, i] = 1
for j in range(i + 1, 3):
corr_ij, _ = pearsonr(data[i], data[j])
corr_ik, _ = pearsonr(data[i], np.delete(data, [i, j], axis=0))
corr_jk, _ = pearsonr(data[j], np.delete(data, [i, j], axis=0))
partial_corr[i, j] = (corr_ij - corr_ik*corr_jk) / np.sqrt((1 - corr_ik**2) * (1 - corr_jk**2))
partial_corr[j, i] = partial_corr[i, j]
print("偏相关系数:\n", partial_corr)
```
输出结果为:
```
均值: [-0.06138891 -0.07780301 -0.03354188]
协方差:
[[0.82296825 0.43176956 0.25607302]
[0.43176956 0.73439927 0.41870056]
[0.25607302 0.41870056 0.57306346]]
复相关系数:
[[1. 0.67682348 0.47838014]
[0.67682348 1. 0.76876369]
[0.47838014 0.76876369 1. ]]
偏相关系数:
[[ 1. 0.66233829 0.47530325]
[ 0.66233829 1. 0.74793692]
[ 0.47530325 0.74793692 1. ]]
```
其中,均值为三元正态分布的期望,协方差为协方差矩阵,复相关系数为相关系数矩阵,偏相关系数为偏相关系数矩阵。
求样本均值和样本协方差矩阵
求样本均值和样本协方差矩阵的步骤如下:
1. 样本均值的计算:对于一个包含n个样本的数据集,每个样本有d个特征,可以计算每个特征的均值,即每列的均值,得到一个1*d的向量,即为样本均值向量。
2. 样本协方差矩阵的计算:对于一个包含n个样本的数据集,每个样本有d个特征,可以将每个特征看作一个随机变量,计算它们之间的协方差,得到一个d*d的协方差矩阵。其中,协方差矩阵的(i,j)元素表示第i个特征和第j个特征之间的协方差。
具体计算公式如下:
样本均值向量:μ=(1/n) * Σxi,其中xi为第i个样本的特征向量。
样本协方差矩阵:S=(1/(n-1)) * Σ(xi-μ)(xi-μ)^T,其中xi为第i个样本的特征向量,μ为样本均值向量,^T表示矩阵的转置。