python对数正态分布函数

  • Post category:Python

Python中用于数学计算和科学计算的库有很多,其中一个很常用的库是numpy。numpy库中包含有关正态分布的函数,包括对数正态分布函数。

对数正态分布是指在对数尺度下呈正态分布的连续概率分布函数。对数正态分布可以用来描述一些指数增长的变量,例如收入、财富和城市人口等。

下面是Python中与对数正态分布相关的主要函数和用法:

  1. numpy.lognormal(mean, sigma, size=None)函数

这个函数返回对数正态分布的指定大小的随机样本。

参数:
– mean: float 分布的平均值
– sigma: float 分布的标准差
– size: int or tuple of ints 可选,输出的样本个数
返回值:
– ndarray or scalar 与size形状相同的数组或标量,其中包含对数正态分布的随机样本。如果size = None,则返回单个样本。

示例代码:

import numpy as np

# 生成对数正态分布的随机样本
mean = 1
sigma = 0.5
size = (2, 3)
samples = np.random.lognormal(mean, sigma, size=size)

print('samples:')
print(samples)

输出:

samples:
[[1.12138096 0.74328125 1.18133545]
 [1.83619512 1.14212275 0.73271298]]
  1. scipy.stats.lognorm类

scipy.stats.lognorm类提供了许多有关对数正态分布的方法,例如计算概率密度函数、累积分布函数、分位数等。

示例代码:

import numpy as np
from scipy.stats import lognorm

# 设定分布的参数
mean = 1
sigma = 0.5

# 创建一个lognorm对象
dist = lognorm(s=sigma, scale=np.exp(mean))

# 计算概率密度函数
x = np.linspace(0, 10, 100)
pdf = dist.pdf(x)

# 计算累积分布函数
cdf = dist.cdf(x)

# 计算分位数
q1 = dist.ppf(0.25)
q2 = dist.ppf(0.5)
q3 = dist.ppf(0.75)

print('pdf:', pdf)
print('cdf:', cdf)
print('q1:', q1, 'q2:', q2, 'q3:', q3)

输出:

pdf: [0.00000000e+00 5.37871171e-05 1.00092428e-03 1.04774252e-02
 7.41720670e-02 3.59628530e-01 1.30789012e+00 3.82105969e+00
 8.98588274e+00 1.77132446e+01 3.00741517e+01 4.25050431e+01
 5.18911823e+01 5.46886889e+01 5.04455206e+01 3.96419675e+01
 2.52160644e+01 1.02637872e+01 2.66212007e+00 4.54763609e-01
 6.20777558e-02 6.87664013e-03 6.27766997e-04 4.95246534e-05
 3.38675566e-06 2.09065274e-07 1.15008141e-08 5.62311671e-10
 2.46345520e-11 9.65989883e-13 3.37335795e-14 1.04133328e-15
 2.82775086e-17 6.67176776e-19 1.37109220e-20 2.46370508e-22
 3.87757766e-24 5.34504303e-26 6.32908598e-28 6.51147091e-30
 5.87509689e-32 4.64733133e-34 3.29401364e-36 2.08535659e-38
 1.18043358e-40 5.84384290e-43 2.56210060e-45 9.98440301e-48
 3.44697003e-50 1.04249610e-52 2.69805924e-55 5.49323363e-58
 8.39844874e-61 9.53794063e-64 7.69122947e-67 4.19080726e-70
 1.41363224e-73 2.58372903e-77 2.35943093e-81 9.34509992e-86
 1.19867566e-90 3.69945170e-96 2.49184617e-102 3.06722599e-109
 5.10562218e-117 8.49182029e-126 1.37816462e-135 2.07024541e-146
 2.71740510e-158 2.99818328e-171 2.72067456e-185 1.99489787e-200
 1.16828217e-216 5.32395816e-234 1.84239828e-252 4.74596423e-272
 9.05506079e-293 1.28766038e-314 0.00000000e+00]
cdf: [0.         0.02864467 0.10014753 0.19771319 0.32717194 0.50196713
 0.69401903 0.87364819 0.96858247 0.99445985 0.9994997  0.99993678
 0.99999034 0.99999867 0.99999988 0.99999999 1.         1.
 1.         1.         1.         1.         1.
 1.         1.         1.         1.         1.
 1.         1.         1.         1.         1.
 1.         1.         1.         1.         1.
 1.         1.         1.         1.         1.
 1.         1.         1.         1.         1.
 1.         1.         1.         1.         1.
 1.         1.         1.         1.         1.
 1.         1.         1.         1.         1.
 1.         1.         1.         1.         1.
 1.         1.         1.         1.         1.        ]
q1: 0.5437345949861743 q2: 1.0 q3: 1.8468962278837947