写一个程序,从二维高斯分布N(μ,Σ)中产生n个随机数,绘制数据的散布图和等密度点分布轨迹。
时间: 2024-05-07 07:16:17 浏览: 153
好的,这是一个统计学的问题,我可以回答。您可以使用Python的numpy和matplotlib库来实现。首先使用numpy的random.multivariate_normal方法生成n个随机数,然后使用matplotlib的scatter方法绘制散布图。使用numpy的linalg.eig方法计算协方差矩阵的特征值和特征向量,进而绘制等密度点分布轨迹。下面是Python代码示例:
```python
import numpy as np
import matplotlib.pyplot as plt
# 定义参数
n = 1000
mu = np.array([1, 2])
sigma = np.array([[2, 1], [1, 2]])
# 生成随机数
r = np.random.multivariate_normal(mu, sigma, n)
# 绘制散布图
plt.scatter(r[:, 0], r[:, 1], s=2, alpha=0.3)
# 计算特征值和特征向量
eig_vals, eig_vecs = np.linalg.eig(sigma)
# 计算等密度点分布轨迹
theta = np.linspace(0, 2*np.pi, 100)
x = np.sqrt(eig_vals[0]) * np.cos(theta)
y = np.sqrt(eig_vals[1]) * np.sin(theta)
xy = np.vstack((x, y)).T.dot(eig_vecs.T) + mu
# 绘制等密度点分布轨迹
plt.plot(xy[:, 0], xy[:, 1], c='r', linewidth=2)
plt.axis('equal')
plt.show()
```
希望这可以帮助您解决问题。
阅读全文