zhuifeng66666 2023-02-08 06:09 采纳率: 50%
浏览 94
已结题

从多元正态分布中生成3维样本

问题遇到的现象和发生背景
  1. 从多元正态分布中生成3维样本。样本的大小 T = 300。多变量正态分布的参数由你自己选择。自己选择,但它们应满足以下条件。1)数学上的
    1)数学期望值m必须为非零;2)协方差矩阵S必须为非正交且为正确定。正向确定。
    让𝑌=(𝑦𝑖𝑗),其中𝑦𝑖=(𝑦𝑖1,.,𝑦𝑖𝐾)代表单元i的K项矢量。在我们的案例中,K=3,i从1到300变化。
    1. 在样本中产生缺失数据,条件如下:每个单位的每个项目 观察到的概率为4/5,遗漏的概率为1/5。
  2. (完全案例分析)。只考虑没有遗漏项目的单位。估计模型 参数(数学期望值和协方差矩阵),只使用完全观察到的项目。观察到的项目。你的估计值与参数的实际值有多接近?有多少个
    估算器的构建有多少可用的观测值?
  3. (可用案例分析)。考虑教科书 "有缺失值的统计分析 "中的第3.4段。有缺失值的统计分析"。并构建估计器,如下数学估计器 构建以下数学期望、协方差和相关矩阵的估计值。1) 𝑦̅𝑗 (𝑗) 2) 𝑠𝑗𝑘 (𝑗𝑘) , 3) 𝑟𝑗𝑘 ∗ , 4) 𝑟𝑗𝑘 (𝑗𝑘)。 , 5) 𝑠𝑗𝑘 ∗ , 6) 𝑠𝑗𝑘̃ (𝑗𝑘) 。 , 𝑗, 𝑘∈{1,2,3}。(见课本中的符号)。从s和r构建 构建相应的协方差矩阵S和相关矩阵R的估计值。这些估计值对实际矩阵有多接近?所有的相关性都在(-1,1)范围内吗?是否所有 估计的矩阵都是正确定的吗?
我想要达到的结果

使用Python和Jupyter notebook编写,完成以上的项目要求

  • 写回答

5条回答 默认 最新

  • 2301_76433421 2023-02-08 08:02
    关注
    获得7.50元问题酬金

    使用numpy和scipy包中的函数生成多元正态分布样本

    import numpy as np
    from scipy.stats import multivariate_normal
    
    # 定义均值和协方差矩阵
    mean = np.array([0,0,0])
    cov = np.array([[1,0,0],[0,1,0],[0,0,1]])
    
    # 生成样本
    samples = multivariate_normal.rvs(mean=mean, cov=cov, size=300)
    
    

    这将生成一个形状为(300, 3)的样本矩阵,每一行都是一个三维的正态分布样本。

    使用numpy中的randint函数生成随机的0/1数字,表示该项是否被观察到。

    import numpy as np
    
    # 定义观察到的概率为4/5,即遗漏的概率为1/5
    prob = 0.8
    
    # 生成300*3的随机0/1矩阵,表示每一项是否被观察到
    mask = np.random.randint(0,2,size=(300,3))
    mask = (mask<prob).astype(float)
    
    # 使用随机矩阵对样本进行遮盖
    samples_missing = samples * mask
    
    

    这将生成一个形状为(300, 3)的样本矩阵,表示每一项有缺失数据的情况。

    使用numpy的mean和cov函数估计数学期望和协方差矩阵,仅考虑完全观察到的项目。

    import numpy as np
    
    # 获取所有完全观察到的项目
    samples_observed = samples_missing[np.all(samples_missing!=0, axis=1)]
    
    # 估计数学期望值
    mean_estimated = np.mean(samples_observed, axis=0)
    
    # 估计协方差矩阵
    cov_estimated = np.cov(samples_observed, rowvar=False)
    
    # 比较估计的数学期望值和协方差矩阵与实际的数学期望值和协方差矩阵的差距
    print("Difference between estimated mean and actual mean: ", np.mean(mean_estimated - mean))
    print("Difference between estimated covariance and actual covariance: ", np.mean(cov_estimated - cov))
    
    # 计算可用的观测值数量
    num_observed = np.sum(np.all(samples_missing!=0, axis=1))
    
    

    上面的代码将打印出估计的数学期望值和协方差矩阵与实际数学期望值和协方差矩阵的差距,并计算可用的观测值数量。
    在进行有缺失值的统计分析时,使用估计器来估计数学期望、协方差和相关矩阵的值,是一种常见的方法。首先,需要使用可用案例分析来处理缺失值,然后使用合适的方法来构建估计器。如果估计值与实际值接近,则可以认为估计器是合理的;如果所有相关性都在-1和1之间,则说明相关性是合法的;如果所有估计的矩阵都是正确定的,则说明估计是准确的。最后,使用Python和Jupyter notebook编写完成上述项目要求。

    评论

报告相同问题?

问题事件

  • 系统已结题 2月16日
  • 创建了问题 2月8日