-
2021-07-24 17:13:15
0引言
最近在看偏正态分布相关的东西,偏正态分布的定义形式还是挺多样的,在偏态分布及其数字特征(R语言可视化)中我介绍的最初的一种定义。在平时做模型做随机模拟的时候的需要产生随机数来检验自己模型估计的有效性,我们可以通过各种分层表示用已知的分布去近似,也可以通过筛法使用均匀分布去生成、也可以用MCMC去采样。但是最为一个专业的统计软件——R语言肯定是有内置函数或者内置包去做的。大家感兴趣原理的也可以自行打开R函数查看。
本文的主要目的是介绍R语言内部的产生下面分布的随机数的函数。
– 一元正态分布随机数
– 一元偏正态分布随机数
– 一元对数正态随机数
– 多元正态分布随机数
– 多元偏正态分布随机数
– 多元对数正态随机数1、函数名
对于熟悉R语言的人只有函数名字和包名即可,下面列出具体名字。
维度 分布 函数 包 一维度 正态分布 rnorm stats 一维度 偏正态分布 rsn sn 一维度 对数正态 rlnorm stats 多维度 正态分布 mvrnorm MASS 多维度 偏正态分布 rmsn sn 多维度 对数正态 mvlognormal MethylCapSig 但是对于很多R小白的科研大佬来说只有一个名字是比较浪费时间的,下面给出具体案例。
2、示例
先把该安装的包岸上并且载入,后面有备注大家按需安装载入。
install.packages("MethylCapSig") # 多元对数正态包 install.packages("MASS") # 多元正态分布包 install.packages("sn") # 偏态数据包 library(MASS) library(sn) library(MethylCapSig)
2.1正态分布随机数
这块介绍如何生成一元和多元的正态分布随机数。生成正态分布的随机数的函数是
rnorm
,多元正态随机数用mvrnorm
。#生成n个均值0标准差1的正态随机数 > n = 10 > rnorm(n, mean = 0, sd = 1) [1] 0.6035027 -0.9081701 1.5303255 0.3761588 -1.6406858 -1.5728766 [7] -1.6586157 0.8287051 1.7688131 1.1472097
mvrnorm(n = 1, mu, Sigma, tol = 1e-6, empirical = FALSE, EISPACK = FALSE) # 生成均值为mu,协方差矩阵为Sigma的10次观测的多元正态随机数 > mu <- rep(0, 2) > mu [1] 0 0 > Sigma <- matrix(c(5,1,1,2),2,2) > Sigma [,1] [,2] [1,] 5 1 [2,] 1 2 > mvrnorm(n, mu, Sigma) [,1] [,2] [1,] 0.3458454 0.3552218 [2,] -4.9145503 -2.2932391 [3,] 2.3285543 1.7957570 [4,] 2.6422543 1.4493042 [5,] -2.0447422 -0.5195390 [6,] -0.5682730 -0.1557601 [7,] -0.0560933 0.6941458 [8,] 3.5873361 2.1324344 [9,] -0.3522617 -1.0535145 [10,] 1.9490186 -1.7155158
2.2偏正态分布
这块介绍如何生成一元和多元的偏正态分布随机数。生成偏正态分布的随机数的函数是
rsn
,多元正态用rmsn
。rsn(n=1, xi=0, omega=1, alpha=0, tau=0, dp=NULL) # 生成10个位置参数为5,标准差为2,偏度为5的一元偏正态分布 > n = 10 > rsn(n, 5, 2, 5) [1] 6.366628 4.622272 4.973537 5.716082 6.438601 7.489781 5.034990 5.762948 [9] 9.547775 8.470482 attr(,"family") [1] "SN" attr(,"parameters") [1] 5 2 5 0
rmsn(n=1, xi=rep(0,length(alpha)), Omega, alpha, tau=0, dp=NULL) # 生成多元偏态分布,均值向量xi,协方差矩阵,偏度向量 alpha > xi <- c(0, 0) > xi [1] 0 0 > Omega <- matrix(c(5,1,1,2),2,2) > Omega [,1] [,2] [1,] 5 1 [2,] 1 2 > alpha <- c(2,-2) > alpha [1] 2 -2 > rmsn(10, xi, Omega, alpha) [,1] [,2] [1,] -0.65320266 0.6861521 [2,] 1.37481687 -0.1659318 [3,] 3.14522100 0.4529551 [4,] -0.07057607 -0.6608571 [5,] -2.68493331 -2.9035422 [6,] 2.19216656 0.7597699 [7,] 1.50244323 0.7730602 [8,] -1.81347772 -1.4717120 [9,] -0.56875748 -0.8176260 [10,] 0.88476306 -0.3663496 attr(,"family") [1] "SN" attr(,"parameters") attr(,"parameters")$xi [1] 0 0 attr(,"parameters")$Omega [,1] [,2] [1,] 5 1 [2,] 1 2 attr(,"parameters")$alpha [1] 2 -2 attr(,"parameters")$tau [1] 0
2.3对数正态分布
这块介绍如何生成一元和多元的对数正态分布随机数。生成对数正态分布的随机数的函数是
rlnorm
,多元对数正态用mvlognormal
。生成10个对数均值为0,对数标准差为1的对数随机数。 > n = 10 > rlnorm(n, meanlog = 0, sdlog = 1) [1] 1.5638173 0.7085567 0.9552697 0.7990129 0.3913724 2.3829746 2.7009141 [8] 2.3251721 4.7090633 0.5284348
mvlognormal(n, Mu, Sigma, R) # 生成10个 5维度的多元对数正态分布 > n = 10 > p = 5 > Mu = runif(p, 0, 1) > mvlognormal(n, Mu, Sigma = rep(2, p), R = toeplitz(0.5^(0:(p-1)))) [,1] [,2] [,3] [,4] [,5] [1,] 0.19001058 1.03046394 0.96453695 0.82259809 0.15816013 [2,] 0.17443047 0.06155735 0.37621382 0.33498919 0.27119953 [3,] 0.34553546 0.28509934 0.29120016 0.04141813 0.22553617 [4,] 0.11498941 0.35994614 0.23380755 0.15672124 0.04621199 [5,] 0.32452033 0.11553876 0.55283657 0.26637357 0.11062302 [6,] 0.04953786 0.16264098 1.75032911 6.34862167 1.38340544 [7,] 0.32886451 0.30378793 0.02375825 0.02375620 0.89213319 [8,] 0.16846539 0.03653899 0.11298382 0.22751003 0.09530435 [9,] 0.07762988 0.31748557 0.05862739 0.03529833 0.12301490 [10,] 0.18367711 2.58261427 0.03078996 0.01153906 0.07951331 >
写在最后的话
希望可以帮助大家学习R语言。水平有限发现错误还望及时评论区指正,您的意见和批评是我不断前进的动力。
更多相关内容 -
对数正态分布:对数正态分布-matlab开发
2021-05-30 04:07:31对数正态分布 -
lognorm:R中对数正态分布的函数
2021-05-05 11:18:58近似几个对数正态分布的随机变量的总和 安装 # From CRAN install.packages( " lognorm " ) # Or the the development version from GitHub: # install.packages("devtools") devtools :: install_github( " bgctw/... -
DistributionFit:将正态分布、对数正态分布和威布尔分布拟合到数据。-matlab开发
2021-05-31 04:11:2806-jun-05 将三种概率分布(正态、对数正态、威布尔)之一拟合到输入数据向量。 如果将分布指定为“最佳”,则会自动选择最适合数据的分布。 输入如果 nargin==1,则提示“分布”并交互输入 数据 - nx 1 或 1 xn ... -
对数正态pdf,对数正态分布,matlab
2021-09-10 17:37:53关于可见光通信信道建模的有关对数正态pdf的MATLAB代码。 -
对数正态助手:拟合对数正态分布-matlab开发
2021-06-01 10:46:26包含对正态分布和对数正态分布的直方图数据的拟合。 虽然仍然需要拟合工具箱,但参数的调整方式使 Matlab 可以实际拟合值(例如非常小的 x 值)! 函数返回 mu 和 sigma 参数、缩放因子(对于非单位分布)和拟合... -
Particles:正态分布、对数正态分布和对数正态(质量)分布套件 - 粒子大小-matlab开发
2021-06-01 06:35:41Normal、LogNormal2 和 LogNormal1 这三个代码分别生成粒子的 Normal、LogNormal 和 LogNormal (Mass) 分布,给定中值和方差或 (LogVariance)。 LOgNormal1 与 xls 支持文件 ("lognorm.xls") 一起使用,该文件应放置... -
lognormal-random:生成对数正态分布随机变量
2021-05-09 10:59:13对数正态随机变量 创建一个用对数绘制填充的或数组。 安装 $ npm install distributions-lognormal-random 要在浏览器中使用,请使用 。 用法 var random = require ( 'distributions-lognormal-random' ) ; ... -
对数正态分布拟合
2015-10-10 11:10:47在输入大量数据后 对其数据进行对数正态分布拟合 -
对数正态分布
2021-10-31 18:59:01正态分布 令Φ(y)\Phi \left( y \right)Φ(y),φ(y)\varphi \left( y \right)φ(y)分别表示正态分布N(μ,σ2)N\left( \mu ,{{\sigma }^{2}} \right)N(μ,σ2)的CDF和PDF,其中 φ(y)=12πσe−(y−μ)22σ2,−∞<...对数正态分布
在概率论与统计学中,任意随机变量的对数服从正态分布,则这个随机变量服从的分布称为对数正态分布。如果 Y Y Y是正态分布的随机变量,则 e x p ( Y ) exp(Y) exp(Y)(指数函数)为对数正态分布;同样,如果
正态分布
令 Φ ( y ) \Phi \left( y \right) Φ(y), φ ( y ) \varphi \left( y \right) φ(y)分别表示正态分布 N ( μ , σ 2 ) N\left( \mu ,{{\sigma }^{2}} \right) N(μ,σ2)的CDF和PDF,其中
φ ( y ) = 1 2 π σ e − ( y − μ ) 2 2 σ 2 , − ∞ < y < + ∞ \varphi \left( y \right)=\frac{1}{\sqrt{2\pi }\sigma }{{e}^{-\frac{{{\left( y-\mu \right)}^{2}}}{2{{\sigma }^{2}}}}},-\infty <y<+\infty φ(y)=2πσ1e−2σ2(y−μ)2,−∞<y<+∞
累积分布函数CDF是指随机变量 Y Y Y小于或等于 y y y的概率,正态分布的CDF用概率密度函数表示为:
F ( y ; μ , σ ) = 1 2 π σ ∫ − ∞ y e − ( t − μ ) 2 2 σ 2 d t F\left( y;\mu ,\sigma \right)=\frac{1}{\sqrt{2\pi }\sigma }\int_{-\infty }^{y}{{{e}^{-\frac{{{\left( t-\mu \right)}^{2}}}{2{{\sigma }^{2}}}}}}dt F(y;μ,σ)=2πσ1∫−∞ye−2σ2(t−μ)2dt
正态分布的CDF能够由一个叫做误差函数的特殊函数表示:
Φ ( y ) = 1 2 [ 1 + e r f ( y − μ σ 2 ) ] \Phi \left( y \right)=\frac{1}{2}\left[ 1+erf\left( \frac{y-\mu }{\sigma \sqrt{2}} \right) \right] Φ(y)=21[1+erf(σ2y−μ)]正态分布与对数正态分布
因 Y = ln X ∼ N ( μ , σ 2 ) Y=\ln X\sim N\left( \mu ,{{\sigma }^{2}} \right) Y=lnX∼N(μ,σ2),则 X = e Y X={{e}^{Y}} X=eY且 Y ∼ N ( μ , σ 2 ) Y\sim N\left( \mu ,{{\sigma }^{2}} \right) Y∼N(μ,σ2),于是当 x > 0 x>0 x>0时,
F X ( x ) = Pr { X ≤ x } = Pr { e Y ≤ x } = Pr { Y ≤ ln ( x ) } = Φ ( ln x ) {{F}_{X}}\left( x \right)=\Pr \left\{ X\le x \right\}=\Pr \left\{ {{e}^{Y}}\le x \right\}=\Pr \left\{ Y\le \ln \left( x \right) \right\}=\Phi \left( \ln x \right) FX(x)=Pr{X≤x}=Pr{eY≤x}=Pr{Y≤ln(x)}=Φ(lnx)对数正态分布
Φ ( x ) = 1 2 [ 1 + e r f ( ln x − μ σ 2 ) ] \Phi \left( x \right)=\frac{1}{2}\left[ 1+erf\left( \frac{\ln x-\mu }{\sigma \sqrt{2}} \right) \right] Φ(x)=21[1+erf(σ2lnx−μ)]
几个积分的计算
-
TCP、IP日流量的混合对数正态分布模型
2020-01-31 22:20:39TCP、IP日流量的混合对数正态分布模型,董颖,李明,对网络流量分布进行及时准确的识别和分类,解决了网络因需求等因素具有的多样性问题,使得为不同环境提供合适的网络环境更加便捷 -
Coefficients of Polynomial Chaos Expansion (PCE):这个简单的 Matlab 代码计算对数正态分布不确定参数 X...
2021-05-29 05:51:14具有 LN(mu,sigma) 的任何不确定参数 X 的“n”阶系数可以分析计算为: ai_a=sigma^n*exp(mu+sigma^2/2)/(n!) 代码使用Matlab符号积分计算系数 -
基于对数正态分布的VFD加速寿命试验研究 (2006年)
2021-05-18 16:35:30应用对数正态分布函数描述了VFD寿命分布,利用最小二乘法(LSM)估计出均值和标准差,完成了恒定及步进应力温度试验数据的统计和分析,并自行开发了寿命预测软件。数值结果表明,该试验方案是正确可行的,VFD的寿命服从对数... -
二元对数正态分布 (bivariate lognormal distribution) 的几个性质
2022-01-05 21:31:29二元对数正态分布 - bivariate lognormal distribution - 的几个性质摘要对数正态分布二元正态分布 (bivariate normal distribution) 摘要 本文讲简要介绍二元对数正态分布 (bivariate lognormal distribution) 的...二元对数正态分布 - bivariate lognormal distribution - 的几个性质
摘要
本文讲简要介绍二元对数正态分布 (bivariate lognormal distribution) 的期望、方差,以及其相关系数的计算与性质。
对数正态分布
如果随机变量 U U U 取值大于 0,并且 X = log ( U ) X = \log (U) X=log(U), X ∼ N ( μ x , σ x 2 ) X \sim N(\mu_x, \, \sigma_x^2) X∼N(μx,σx2),我们就称 U U U 服从对数正态分布。
我们看到对数正态分布是从正态分布派生出来的分布。自然的,二元对数正态分布也是从二元正态分布中派生的。我们先来回顾一下二元正态分布。
二元正态分布 (bivariate normal distribution)
在文章 生成一定相关性的二元正态分布 中我们有提到,如果二元随机变量 ( X , Y ) (X, \, Y) (X,Y) 服从二元正态分布 (bivariate normal distribution) ,那么其概率密度函数为
f ( x , y ) = 1 2 π σ x σ Y 1 − ρ 2 × exp ( − 1 2 ( 1 − ρ 2 ) ( ( x − μ x σ x ) 2 − 2 ρ ( x − μ X σ x ) ( y − μ y σ y ) + ( y − μ y σ y ) 2 ) ) ( ∗ ) \begin{aligned} f(x, \, y) &= \frac{1}{2\pi \sigma_x \sigma_Y \sqrt{1 - \rho^2}} \times \\ & \exp \left( -\frac{1}{2(1 - \rho^2)} \Big( \big( \frac{x - \mu_x}{\sigma_x} \big)^2 - 2 \rho (\frac{x - \mu_X}{\sigma_x}) (\frac{y - \mu_y}{\sigma_y}) + (\frac{y - \mu_y}{\sigma_y})^2 \Big) \right) (*) \end{aligned} f(x,y)=2πσxσY1−ρ21×exp(−2(1−ρ2)1((σxx−μx)2−2ρ(σxx−μX)(σyy−μy)+(σyy−μy)2))(∗)
上式中的 ρ \rho ρ 即为 X X X 与 Y Y Y 的相关性系数 (correlation coefficient)。 μ x \mu_x μx 为 X X X 的期望, μ y \mu_y μy 为 Y Y Y 的期望; σ x 2 \sigma_x^2 σx2 为 X X X 的方差, σ y 2 \sigma_y^2 σy2 为 Y Y Y 的方差。
回顾了二元正态分布的概念之后,我们可以定义二元对数正态分布如下:
定义:如果两个随机变量 ( X , Y ) (X, \, Y) (X,Y) 服从二元正态分布,且另外两个随机变量 ( U , V ) (U, \, V) (U,V),我们有 U = exp ( X ) , V = exp ( Y ) U = \exp(X), \, V = \exp(Y) U=exp(X),V=exp(Y)。我们称 ( U , V ) (U, \, V) (U,V) 服从二元对数正态分布。
对数正态分布的期望与方差
在看二元对数正态分布的性质之前,我们先来看一元对数正态分布的期望与方差。
假设我们有随机变量 X ∼ N ( μ x , σ x 2 ) X \sim N(\mu_x, \sigma_x^2) X∼N(μx,σx2), U = exp ( X ) U = \exp(X) U=exp(X)。那么我们可以直接用定义求出 U U U 的期望。
E ( U ) = ∫ − ∞ ∞ e x ⋅ 1 2 π σ x e − ( x − μ x ) 2 2 σ x 2 d x = ∫ − ∞ ∞ 1 2 π σ x e − 1 2 σ x 2 ( ( x − μ x ) 2 − 2 σ x 2 x ) d x = ∫ − ∞ ∞ 1 2 π σ x e − 1 2 σ x 2 ( x 2 − 2 ( μ x + σ x 2 ) x + μ x 2 ) d x = ∫ − ∞ ∞ 1 2 π σ x e − 1 2 σ x 2 ( ( x − ( μ x + σ x 2 ) ) 2 − σ x 4 − 2 μ x σ x 2 ) d x = ( ∫ − ∞ ∞ 1 2 π σ x e − 1 2 σ x 2 ( x − ( μ x + σ x 2 ) ) 2 d x ) ⋅ e − 1 2 σ x 2 ( − σ x 4 − 2 μ x σ x 2 ) \begin{aligned} \displaystyle \mathbb{E}(U) &= \int_{-\infty}^{\infty} e^x \cdot \frac{1}{\sqrt{2 \pi} \sigma_x} e^{- \frac{(x - \mu_x)^2}{2 \sigma_x^2}} dx \\ &= \int_{-\infty}^{\infty} \frac{1}{\sqrt{2 \pi} \sigma_x} e^{-\frac{1}{2 \sigma_x^2} \big( (x - \mu_x)^2 - 2 \sigma_x^2 x \big)} dx \\ &= \int_{-\infty}^{\infty} \frac{1}{\sqrt{2 \pi} \sigma_x} e^{-\frac{1}{2 \sigma_x^2} \big( x^2 - 2 (\mu_x + \sigma_x^2) x + \mu_x^2 \big) } dx \\ &= \int_{-\infty}^{\infty} \frac{1}{\sqrt{2 \pi} \sigma_x} e^{-\frac{1}{2 \sigma_x^2} \big( (x - (\mu_x + \sigma_x^2) )^2 - \sigma_x^4 - 2 \mu_x \sigma_x^2 \big)} dx \\ &= \Big( \int_{-\infty}^{\infty} \frac{1}{\sqrt{2 \pi} \sigma_x} e^{-\frac{1}{2 \sigma_x^2} (x - (\mu_x + \sigma_x^2) )^2 } dx \Big) \cdot e^{-\frac{1}{2 \sigma_x^2} (- \sigma_x^4 - 2 \mu_x \sigma_x^2) } \end{aligned} E(U)=∫−∞∞ex⋅2πσx1e−2σx2(x−μx)2dx=∫−∞∞2πσx1e−2σx21((x−μx)2−2σx2x)dx=∫−∞∞2πσx1e−2σx21(x2−2(μx+σx2)x+μx2)dx=∫−∞∞2πσx1e−2σx21((x−(μx+σx2))2−σx4−2μxσx2)dx=(∫−∞∞2πσx1e−2σx21(x−(μx+σx2))2dx)⋅e−2σx21(−σx4−2μxσx2)
注意到, ∫ − ∞ ∞ 1 2 π σ x e − 1 2 σ x 2 ( x − ( μ x + σ x 2 ) ) 2 d x \displaystyle \int_{-\infty}^{\infty} \frac{1}{\sqrt{2 \pi} \sigma_x} e^{-\frac{1}{2 \sigma_x^2} (x - (\mu_x + \sigma_x^2) )^2 } dx ∫−∞∞2πσx1e−2σx21(x−(μx+σx2))2dx 这一项正是 N ( μ x + σ x 2 , σ x ) N(\mu_x + \sigma_x^2, \sigma_x) N(μx+σx2,σx) 的概率密度函数在 R \mathbb{R} R 上的积分,故其值等于 1。于是
E [ U ] = e − 1 2 σ x 2 ( − σ x 4 − 2 μ x σ x 2 ) = exp ( μ x + 1 2 σ x 2 ) \displaystyle \mathbb{E} [U] = e^{-\frac{1}{2 \sigma_x^2} (- \sigma_x^4 - 2 \mu_x \sigma_x^2)} = \exp {(\mu_x + \frac{1}{2} \sigma_x^2 )} E[U]=e−2σx21(−σx4−2μxσx2)=exp(μx+21σx2) 。
如果读者熟悉距生成函数 (moment-generating function) 的概念,我们就可以直接得到 E [ U ] = E [ e X ] \displaystyle \mathbb{E} [U] = \mathbb{E} [e^{X}] E[U]=E[eX]。
我们先来回忆一下距生成函数的定义。
定义: 随机变量 X X X 的距生成函数 M X ( t ) M_X (t) MX(t) 定义为
M X ( t ) = E [ e t X ] \displaystyle M_X (t) = \mathbb{E} [e^{tX}] MX(t)=E[etX],其中须要 E [ e t X ] \mathbb{E} [e^{tX}] E[etX] 在 t = 0 t = 0 t=0 附近是存在的。对于服从正态分布 N ( μ x , σ x 2 ) N(\mu_x, \, \sigma_x^2) N(μx,σx2) 的随机变量 X X X,可以计算其距生成函数是 exp ( μ x t + 1 2 σ x 2 t 2 ) \displaystyle \exp \big( \mu_x t + \dfrac{1}{2} \sigma_x^2 t^2 \big) exp(μxt+21σx2t2)。令 t = 1 t = 1 t=1,我们就直接得到 E [ e X ] = exp ( μ x + 1 2 σ x 2 ) \mathbb{E} [e^X] = \exp(\mu_x + \frac{1}{2} \sigma_x^2) E[eX]=exp(μx+21σx2)。这与我们上面得到的结果是一样的。
有了对数正态分布的期望,其方差的计算可以根据定义 Var ( U ) = E [ U 2 ] − ( E [ U ] ) 2 \displaystyle \textrm{Var}(U) = \mathbb{E}[U^2] -(\mathbb{E}[U])^2 Var(U)=E[U2]−(E[U])2,
于是 Var ( U ) = exp ( 2 μ x + 2 σ x 2 ) − exp ( 2 μ x + σ x 2 ) = exp ( 2 μ x + σ x 2 ) ⋅ ( exp ( σ x 2 ) − 1 ) ) \displaystyle \textrm{Var}(U) = \exp(2 \mu_x +2 \sigma_x^2) - \exp(2 \mu_x + \sigma_x^2) = \exp(2 \mu_x + \sigma_x^2) \cdot (\exp(\sigma_x^2) - 1)) Var(U)=exp(2μx+2σx2)−exp(2μx+σx2)=exp(2μx+σx2)⋅(exp(σx2)−1))。
二元对数正态分布的协方差
现在我们来看二元对数正态分布的协方差。根据协方差的定义,我们有 C o v ( U , V ) = E ( U V ) − E ( U ) E ( V ) \displaystyle Cov(U, \, V) = \mathbb{E} (UV) - \mathbb{E}(U) \mathbb{E}(V) Cov(U,V)=E(UV)−E(U)E(V)。假设 U = exp ( X ) , V = exp ( Y ) U = \exp(X), \, V = \exp(Y) U=exp(X),V=exp(Y),其中 X ∼ N ( μ x , σ x 2 ) , Y ∼ N ( μ y , σ y 2 ) \displaystyle X \sim N(\mu_x, \, \sigma_x^2), \, Y \sim N(\mu_y, \, \sigma_y^2) X∼N(μx,σx2),Y∼N(μy,σy2)。根据上一节的介绍,我们知道 E ( U ) = exp ( μ x + 1 2 σ x 2 ) \displaystyle \mathbb{E} (U) = \exp \big( \mu_x + \frac{1}{2} \sigma_x^2 \big) E(U)=exp(μx+21σx2), E ( V ) = exp ( μ y + 1 2 σ y 2 ) \displaystyle \mathbb{E} (V) = \exp \big( \mu_y + \frac{1}{2} \sigma_y^2 \big) E(V)=exp(μy+21σy2)。
而对于 E ( U V ) = E ( e X + Y ) \mathbb{E} (UV) = \mathbb{E} (e^{X + Y}) E(UV)=E(eX+Y),我们知道 X + Y X + Y X+Y 仍然服从正态分布。这是因为,如果 ( X , Y ) (X, \, Y) (X,Y) 服从二元正态分布,即 ( X , Y ) (X, \, Y) (X,Y) 的概率密度函数是 (*) 式,那么我们有如下的定理:
定理: 如果二元随机变量 ( X , Y ) (X, \, Y) (X,Y) 服从二元正态分布,即 ( X , Y ) (X, \, Y) (X,Y) 的概率密度函数是 ( ∗ ) (*) (∗) 式。那么对于任意的常数 a , b a, \, b a,b, 我们有随机变量 a X + b Y a X + b Y aX+bY 服从正态分布,其均值为 a μ x + b μ y a \mu_x + b \mu_y aμx+bμy,方差是 a 2 σ x 2 + b 2 σ y 2 + 2 a b σ x σ y ρ a^2 \sigma_x^2 + b^2 \sigma_y^2 + 2 a b \sigma_x \sigma_y \rho a2σx2+b2σy2+2abσxσyρ。
根据上述定理,我们有 X + Y ∼ N ( μ x + μ y , σ x 2 + σ y 2 + 2 ρ σ x σ y ) X + Y \sim N(\mu_x + \mu_y, \sigma_x^2 + \sigma_y^2 + 2 \rho \sigma_x \sigma_y) X+Y∼N(μx+μy,σx2+σy2+2ρσxσy)。
从而 E ( U V ) = E ( e X + Y ) = exp ( μ x + μ y + 1 2 ( σ x 2 + σ y 2 + 2 ρ σ x σ y ) ) \displaystyle \mathbb{E} (UV) = \mathbb{E} (e^{X + Y}) = \exp \big( \mu_x + \mu_y + \frac{1}{2} (\sigma_x^2 + \sigma_y^2 + 2 \rho \sigma_x \sigma_y) \big) E(UV)=E(eX+Y)=exp(μx+μy+21(σx2+σy2+2ρσxσy))。
现在,我们就可以计算 Cov ( U , V ) \displaystyle \textrm{Cov}(U, \, V) Cov(U,V)。代入上述计算,我们有
Cov ( U , V ) = exp ( μ x + μ y + 1 2 ( σ x 2 + σ y 2 + 2 ρ σ x σ y ) ) − exp ( μ x + 1 2 σ x 2 ) ⋅ exp ( μ y + 1 2 σ y 2 ) = exp ( μ x + μ y + 1 2 ( σ x 2 + σ y 2 ) ) ⋅ ( exp ( ρ σ x σ y − 1 ) ) \displaystyle \textrm{Cov}(U, \, V) =\exp \big( \mu_x + \mu_y + \frac{1}{2} (\sigma_x^2 + \sigma_y^2 + 2 \rho \sigma_x \sigma_y) \big) - \exp \big( \mu_x + \frac{1}{2} \sigma_x^2 \big) \cdot \exp \big( \mu_y + \frac{1}{2} \sigma_y^2 \big) = \exp \big(\mu_x + \mu_y + \frac{1}{2} (\sigma_x^2 + \sigma_y^2) \big) \cdot \big( \exp(\rho \sigma_x \sigma_y - 1 ) \big) Cov(U,V)=exp(μx+μy+21(σx2+σy2+2ρσxσy))−exp(μx+21σx2)⋅exp(μy+21σy2)=exp(μx+μy+21(σx2+σy2))⋅(exp(ρσxσy−1))二元对数正态分布的相关系数
那么, U , V U, V U,V 的相关系数即为:
corr ( U , V ) = Cov ( U , V ) Var ( U ) ⋅ Var ( V ) \displaystyle \textrm{corr}(U, \, V) = \frac{\textrm{Cov}(U, \, V)}{\sqrt{ \textrm{Var}(U) \cdot \textrm{Var}(V) }} corr(U,V)=Var(U)⋅Var(V)Cov(U,V)
将 Cov ( U , V ) , Var ( U ) , Var ( V ) \textrm{Cov}(U, \, V), \, \textrm{Var}(U), \, \textrm{Var}(V) Cov(U,V),Var(U),Var(V) 代入,我们有
corr ( U , V ) = e ( ρ σ x σ y ) − 1 ( e σ x 2 − 1 ) ( e σ y 2 − 1 ) ( ∗ ∗ ) \displaystyle \textrm{corr}(U, \, V) = \frac{e^{ (\rho \sigma_x \sigma_y)} - 1}{\sqrt{(e^{\sigma_x^2} - 1) (e^{\sigma_y^2} - 1) }} \hspace{2cm} (**) corr(U,V)=(eσx2−1)(eσy2−1)e(ρσxσy)−1(∗∗)
模拟验证
下面我们用代码快速检验下上面的相关系数的公式。 我们根据文章 生成一定相关性的二元正态分布 中的代码,生产 $N $ 对服从二元正态分布的随机数 ( X , Y ) (X, \, Y) (X,Y),然后取 U = exp ( X ) , V = exp ( V ) U = \exp(X), \, V = \exp(V) U=exp(X),V=exp(V),计算 U , V U, V U,V 的相关系数,然后与用公式计算得到的数值相比较。
import numpy as np import matplotlib.pyplot as plt class bivariateNormal: def __init__(self, rho: 'float', m: int): """ Suppose we want to generate a pair of random variables X, Y, with X ~ N(0, 1), Y ~ N(0, 1), and Cor(X, Y) = rho. m is the number of data pairs we want to generate. """ self.rho = rho self.m = m def generateBivariate(self) -> 'tuple(np.array, np.array)': """ Generate two random variables X, Y, with X ~ N(0, 1), Y ~ N(0, 1), and Cor(X, Y) = rho. self.m is the number of sample points we generated. We return a tuple (X, Y). """ theta = np.arcsin(self.rho) / 2 A = np.random.normal(0, 1, self.m) B = np.random.normal(0, 1, self.m) X = np.cos(theta) * A + np.sin(theta) * B Y = np.sin(theta) * A + np.cos(theta) * B return X, Y
我们取 μ x = μ y = 0 , σ x = σ y = 1 \mu_x = \mu_y = 0, \, \sigma_x = \sigma_y = 1 μx=μy=0,σx=σy=1,生成 N N N 对服从二元正态分布的随机变量取值 ( X , Y ) (X, \, Y) (X,Y) 。这里取 N = 1 0 4 N = 10^4 N=104。
N = 10 ** 4 exp_corr = 0 # 记录要模拟的二元对数正态分布的相关系数 rho = -0.9 m = 10 ** 4 a = bivariateNormal(rho, m) for i in range(N): x, y = a.generateBivariate() x_exp = np.exp(x) y_exp = np.exp(y) exp_corr += np.corrcoef(x_exp, y_exp)[0][1] print(exp_corr / N)
输出结果如下:
-0.3475984850891084
而根据上述的分析,其解析值应该为
e − 0.9 − 1 e − 1 = − 0.34536263518051 \displaystyle \frac{e^{-0.9} - 1}{e - 1} = -0.34536263518051 e−1e−0.9−1=−0.34536263518051。
可以看出模拟值与解析值很接近。
二元正态分布与其对应的二元对数正态分布相关系数的比较
假设 σ x = σ y = σ \sigma_x = \sigma_y = \sigma σx=σy=σ,代入 ( ∗ ∗ ) (**) (∗∗) 式,我们有
corr ( U , V ) = exp ( ρ σ 2 ) − 1 exp ( σ 2 ) − 1 \displaystyle \textrm{corr}(U, \, V) = \frac{\exp(\rho \sigma^2) - 1}{\exp(\sigma^2) - 1} corr(U,V)=exp(σ2)−1exp(ρσ2)−1。
rho = np.linspace(-1, 1, 20) corr_bi_lognormal_0p5 = (np.exp(rho * 0.5 ** 2) - 1) / (np.exp(0.5 ** 2) - 1) corr_bi_lognormal_1 = (np.exp(rho * 1 ** 2) - 1) / (np.exp(1 ** 2) - 1) corr_bi_lognormal_2 = (np.exp(rho * 2 ** 2) - 1) / (np.exp(2 ** 2) - 1)
plt.figure(figsize=(12, 8)) plt.plot(rho, corr_bi_lognormal, 'b*', rho, corr_bi_lognormal_1, 'gs', rho, corr_bi_lognormal_2, 'yo', rho, rho, 'r-', linewidth=2, markersize=10); plt.xlabel(r'$\rho$', fontsize=36) plt.ylabel("corr(U, V)", fontsize=36) plt.xticks(fontsize=20) plt.yticks(fontsize=20) plt.legend([r'$\sigma=0.5$', r'$\sigma=1$', r'$\sigma=2$', 'bivariate normal'], fontsize=24)
可以看出二元对数正态分布的相关性要低于相对应的二元正态分布的相关性。而当 ρ = 1 \rho = 1 ρ=1 时,即原来的二元正态分布的两个随机变量 X , Y X, Y X,Y 的相关系数为 1时,且 σ x = σ y \sigma_x = \sigma_y σx=σy,对应的二元对数正态分布的相关系数也是 1。参考文献
[1] 40 Puzzles and Problems in Probability and Mathematical Statistics, Wolfgang Schwarz, page 114, Springer (2007)
-
Lognormal Distribution对数正态分布
2020-12-28 22:49:08对数正态分布(logarithmic normal distribution)是指一个随机变量的对数服从正态分布,则该随机变量服从对数正态分布。对数正态分布从短期来看,与正态分布非常接近。但长期来看,对数正态分布向上分布的数值更多...对数正态分布(logarithmic normal distribution)是指一个随机变量的对数服从正态分布,则该随机变量服从对数正态分布。对数正态分布从短期来看,与正态分布非常接近。但长期来看,对数正态分布向上分布的数值更多一些。
有些量本身就是不对称的。例如,试想,人们完成某项特定任务需要的时间:因为每个人都是不同的,我们会得到一个分布。然而,所有的值都必然是正数(因为时间不可能为负数)。而且,我们还能预测到该分布可能的形状:有一个无人可及的最小时间,然后是少数一些非常快的“冠军”,接下来就是普通人的最具代表性的完成时间形成一个高峰,最后是尾部一长串的“掉队者”。显然,高斯分布不会很好地描述这样的分布,因为高斯分布中x可以定义为正值,也可定义为负值,它是对称的且尾部很短。[1]
在很多应用中,特别是在可靠性和维修性方面,数据可能不符合正态分布。可是,随机变量的对数可能符合正态分布,对此情况称为对数正态分布。如果应用对数正态分布,在对数正态图纸上数据的图形将是一条直线。绘图的过程与其他分布是相同的。其分析的过程包括计算对数值的平均值和标准差,以及对最终结果取反对数。[2]
对数正态分布与正态分布很类似,除了它的概率分布向右进行了移动。对数正态分布从短期来看,与正态分布非常接近。但长期来看,对数正态分布向上分布的数值更多一些。更准确地说,对数正态分布中,有更大向上波动的可能,更小向下波动的可能。[3]
对数正态分布用于半导体器件的可靠性分析和某些种类的机械零件的疲劳寿命。其主要用途是在维修性分析中对修理时间数据进行确切的分析。
已知对数正态分布的密度函数,就可以根据可靠度与不可靠度函数的定义计算出该分布的可靠度函数和不可靠度函数的表达式
性质
对数正态分布具有如下性质:
(1)正态分布经指数变换后即为对数正态分布;对数正态分布经对数变换后即为正态分布。
(2)γ,t是正实数,X是参数为(μ,σ)的对数正态分布,则
仍是对数正态分布,参数为
。
(3)对数正态总是右偏的。
(4)对数正态分布的均值和方差是其参数(μ,σ)的增函数。
(5)对给定的参数μ,当σ趋于零时,对数正态分布的均值趋于exp(μ),方差趋于零
应用:股票
对数正态分布(logarithmic normal distribution):一个随机变量的对数服从正态分布,则该随机变量服从对数正态分布。
在分析测试中,特别是在痕量分析中,在不少情况下,测定值不遵循正态分布,而是遵循对数正态分布。
在概率论与统计学中,对数正态分布是对数为正态分布的任意随机变量的概率分布。如果 X 是服从正态分布的随机变量,则 exp(X) 服从对数正态分布;同样,如果 Y 服从对数正态分布,则 ln(Y) 服从正态分布。 如果一个变量可以看作是许多很小独立因子的乘积,则这个变量可以看作是对数正态分布。一个典型的例子是股票投资的长期收益率,它可以看作是每天收益率的乘积。
Some common distributions which are not directly related to the normal distribution
are described briefly in the following:
• Lognormal distribution: A normal distribution, plotted on an exponential scale.
A logarithmic transformation of the data is often used to convert a strongly
skewed distribution into a normal one.
Normal distributions are the easiest ones to work with. In some circumstances a set
of data with a positively skewed distribution can be transformed into a symmetric,
normal distribution by taking logarithms. Taking logs of data with a skewed
distribution will often give a distribution that is near to normal
-
对数正态分布杂波仿真
2011-12-23 14:14:54对数正态分布杂波仿真,包含pdf和概率密度函数 -
matlab 概率图纸代码 正态分布 对数正态分布 伽马分布
2021-11-18 21:14:29matlab 概率图纸代码 正态分布 对数正态分布 伽马分布 -
对数正态分布的C++实现
2011-12-30 15:02:07这是使用C++语言编写的产生随机对数正态分布变量的程序 -
R语言对数正态分布
2022-06-13 11:09:49对数正态分布(logarithmic normal distribution)是指一个随机变量的对数服从正态分布,则该随机变量服从对数正态分布。对数正态分布从短期来看,与正态分布非常接近。但长期来看,对数正态分布向上分布的数值更多... -
对数正态分布的随机数产生 C语言实现
2022-05-04 18:29:48对数正态分布的概率密度函数为 对数正态分布均值为,方差为 首先产生正态分布的随机变量 y ,然后通过变换产生对数正态分布的随机变量 x。具体方法如下: (1)产生正态分布的随机数 y ,即 (2)计算 1、lognorm... -
正态分布、对数正态分布参数(mu, sigma)与数据本身均值方差(m, v)的关系
2022-05-31 06:43:31对数正态分布参数 mu 和 sigma,与数据本身均值m和方差v之间存在如下关系: 利用如下MATLAB代码,对上述关系进行了验证。 clc clear close all % 利用对数正态分布参数mu, sigma生成随机数 mu=1 sigma=0.3 a... -
拟合对数正态分布使用Scipy与Matlab
2021-04-20 04:35:04我想使用Scipy拟合对数正态分布。我之前已经使用Matlab来完成它,但由于需要将应用程序扩展到统计分析之外,我正在试图在Scipy中重现拟合值。拟合对数正态分布使用Scipy与Matlab下面是Matlab代码我用适合我的数据:%... -
python中的对数正态分布
2020-12-18 06:44:32你说I have a sample data, the logarithm of which ...使此数据适合使用scipy.stats.lognorm的对数正态分布,使用:s, loc, scale = stats.lognorm.fit(data, floc=0)假设mu和sigma是基本正态分布。得到这些值... -
python 拟合对数正态分布
2020-11-18 10:53:42用python拟合对数正态分布使用的是scipy.stats.lognorm这个包,这个包的使用看官方文档就行,但是其中有一个很迷的地方,网上也有人提到了这个很迷的地方:关于scipy对数正态分布的误区,然后Stack Overflow里也有人... -
scipy,对数正态分布-参数
2021-03-06 03:06:33首先,loc不是简单的线性移位分布,事实上loc有自己的统计意义,它意味着样本减去loc后会得到一个标准化的对数正态分布,其下限为零,这一点相当重要。因此,当您指定“loc”或“floc”时,实际上您施加了一个非常强... -
在python中从对数正态分布生成随机数
2021-05-25 07:19:35你有对数正态分布的模式和标准偏差。要使用scipy的rvs()方法,必须根据形状参数s参数化分布,这是基本正态分布的标准差sigma,而{},即{},其中{}是基础分布的平均值。在您指出,进行这种重新参数化需要求解四次... -
python生成具有上下限的截断对数正态分布
2021-01-11 22:56:14目标:用python生成一组具有上下限的对数正态分布随机数。思路:利用python的scipy.stats生成截断正态分布,再将正态分布转化为对数正态分布。要求:生成的目标对数正态分布随机数要介于区间[log_lower,log_upper]内... -
一种基于对数正态分布的图像阈值模型
2020-06-27 21:54:17为了更准确地拟合图像的目标与背景的灰度级分布并分割出图像的目标部分,采用基于参数的阈值估计方法,提出了基于对数正态分布的粒子群EM混合算法,设计了对数正态分布参数的粒子群算法、EM算法和粒子群EM混合算法,给出... -
对数正态分布代码实现
2021-12-28 11:07:19public class LognormalDistribution : ContinuousDistribution { private double mean; private double standardDeviation; public override double Mean => Math.Exp(this.mean + 0.5 * this.... -
对数正态pdf,对数正态分布,matlab源码.rar
2021-10-10 21:47:24对数正态pdf,对数正态分布,matlab源码.rar