多元正态分布

正态分布大家都非常熟悉了,多元正态分布就是多维数据的正态分布,其概率密度函数为

上式为 x 服从 k 元正态分布,x 为 k 维向量;|Σ| 代表协方差矩阵的行列式

二维正态分布概率密度函数为钟形曲面,等高线是椭圆线族,并且二维正态分布的两个边缘分布都是一维正态分布,如图

np.random.multivariate_normal

生成一个服从多元正态分布的数组      【适用于 python3,但在 python2 中也能用】

multivariate_normal(mean, cov, size=None, check_valid=None, tol=None) 

mean:均值,维度为1,必选参数;

cov:协方差矩阵,必选参数;

size: 指定生成矩阵的维度,若size=(1, 1, 2),则输出的矩阵的 shape 即形状为 1X1X2XN(N为mean的长度);

check_valid:可取值 warn,raise以及ignore;

tol:检查协方差矩阵奇异值时的公差,float类型;

示例

mean = (1, 2)
cov = [[1, 0], [0, 1]]
x = np.random.multivariate_normal(mean, cov, (2, 2), 'raise') # 2x2x2
print(x)

直接生成数组

scipy.stats.multivariate_normal

生成一个多元正态分布

def __call__(self, mean=None, cov=1, allow_singular=False, seed=None)

示例-生成多元正态分布

import numpy as np
import scipy.stats as st
import matplotlib.pylab as plt x, y = np.mgrid[-1:1:.01, -1:1:.01]
pos = np.empty(x.shape + (2,))
pos[:, :, 0] = x; pos[:, :, 1] = y
rv = st.multivariate_normal([0, 0], [[1, 0], [0, 1]]) # 生成多元正态分布
print(rv) # <scipy.stats._multivariate.multivariate_normal_frozen object at 0x08EDDDB0> 只是生成了一个对象,并没有生成数组
plt.contourf(x, y, rv.pdf(pos))
plt.show()

示例-概率密度函数

x = np.linspace(0, 5, 10, endpoint=False)       # 样本
y = st.multivariate_normal.pdf(x, mean=2.5, cov=.5) # 样本的概率密度函数 plt.plot(x, y)
plt.show()

生成了概率密度曲线

可用方法

pdf(x, mean=None, cov=1) :概率密度函数

logpdf(x, mean=None, cov=1) :概率密度函数日志

rvs(mean=None, cov=1) :从多元正态分布中随机抽取样本

entropy() :计算多元法线的微分熵

参考资料:

https://www.cnblogs.com/21207-iHome/p/8039741.html  多元正态分布

https://blog.csdn.net/zch1990s/article/details/80005940  np.random.multivariate_normal方法浅析

https://www.cnblogs.com/wanghui-garcia/p/10763418.html   scipy.stats.multivariate_normal的使用

multivariate_normal 多元正态分布的更多相关文章

  1. Multivariate normal distribution | 多元正态分布

    现在终于需要用到了.

  2. scipy.stats.multivariate_normal的使用

    参考:https://docs.scipy.org/doc/scipy-0.14.0/reference/generated/scipy.stats.multivariate_normal.html ...

  3. np.random.multivariate_normal方法浅析

    从多元正态分布中抽取随机样本. 多元正态分布,多正态分布或高斯分布是一维正态分布向更高维度的推广.这种分布由其均值和协方差矩阵来确定.这些参数类似于一维正态分布的平均值(平均值或"中心&qu ...

  4. Hotelling T2检验和多元方差分析

    1.1 Hotelling T2检验 Hotelling T2检验是一种常用多变量检验方法,是单变量检验的自然推广,常用于两组均向量的比较. 设两个含量分析为n,m的样本来自具有公共协方差阵的q维正态 ...

  5. SPSS数据分析—多元方差分析

    之前的单因素方差分析和多因素方差分析,都在针对一个因变量,而实际工作中,经常会碰到多个因变量的情况,如果单纯的将其拆分为多个单因变量的做法不妥,需要使用多元方差分析或因子分析 多元方差分析与一元方差分 ...

  6. 正态分布(Normal distribution)又名高斯分布(Gaussian distribution)

    正态分布(Normal distribution)又名高斯分布(Gaussian distribution),是一个在数学.物理及project等领域都很重要的概率分布,在统计学的很多方面有着重大的影 ...

  7. 多元高斯分布(The Multivariate normal distribution)

    在数据建模时,经常会用到多元高斯分布模型,下面就这个模型的公式并结合它的几何意义,来做一个直观上的讲解. 1, 标准高斯函数 高斯函数标准型: $f(x) = \frac{1}{\sqrt{2π}}e ...

  8. ML—R常用多元统计分析包(持续更新中……)

    基本的R包已经实现了传统多元统计的很多功能,然而CRNA的许多其它包提供了更深入的多元统计方法,下面要综述的包主要分为以下几个部分: 1) 多元数据可视化(Visualising multivaria ...

  9. 使用正态分布变换(Normal Distributions Transform)进行点云配准

    正态分布变换算法是一个配准算法,它应用于三维点的统计模型,使用标准优化技术来确定两个点云间的最优的匹配,因为其在配准过程中不利用对应点的特征计算和匹配,所以时间比其他方法快.下面是PCL官网上的一个例 ...

随机推荐

  1. MySQL_(Java)分页查询MySQL中的数据

    MySQL_(Java)使用JDBC向数据库发起查询请求 传送门 MySQL_(Java)使用JDBC创建用户名和密码校验查询方法 传送门 MySQL_(Java)使用preparestatement ...

  2. PHP-windows下安装

    下载 Apache下载地址:http://httpd.apache.org/download.cgi PHP下载地址:http://php.net/downloads.php 解压 解压到安装路径下H ...

  3. ast.literal_eval(转)

    eval函数在Python中做数据类型的转换还是很有用的.它的作用就是把数据还原成它本身或者是能够转化成的数据类型.那么eval和ast.literal_val()的区别是什么呢?本文将大家介绍关于P ...

  4. Java多线程深入理解

    在java中要想实现多线程,有两种手段,一种是继续Thread类,另外一种是实现Runable接口. 对于直接继承Thread的类来说,代码大致框架是: ? 1 2 3 4 5 6 7 8 9 10 ...

  5. 学习UEFI 之你把C语言学好了码?学习UEFI 之你把C语言学好了吗?

    很多人在问我说: 怎样子把UEFI 学好?! 其实写BIOS 的人答案应该只有一个,把SPCE看懂看完然后融会贯通!这样子的答案好像跟没有是一样的! 小弟就以我的学习经验来分享给大家吧!(虽然我也没学 ...

  6. Centos7 yum install chrome

    一.配置 yun 源 vim /etc/yum.repos.d/google-chrome.repo [google-chrome] name=google-chrome baseurl=http:/ ...

  7. LeetCode 分类颜色

    LeetCode   分类颜色 给定一个包含红色.白色和蓝色,一共 n 个元素的数组,原地对它们进行排序,使得相同颜色的元素相邻,并按照红色.白色.蓝色顺序排列. 此题中,我们使用整数 0. 1 和 ...

  8. ccf 201512-3 画图(90)

    ccf 201512-3 画图(90) #include<iostream> #include<cstring> #include<algorithm> using ...

  9. 删除github上的一个repository

    在学github之初,我们免不了会建立一些简单的repository,那么,如何删掉它们呢? 第一步,打开所要删除的repository,比如:meilin.github.io 第二步,点击setti ...

  10. windows实用cmd命令总结

    D: 进入D盘 cd D:\eclipse   进入D盘后进入D盘下的某个路径 Ipconfig 查看计算机ip Cls 清空命令行 ping ip(主机名) 测试网络是否畅通 Help 查看所有的d ...