python scipy stats_python3 scipy stats 使用 常见分布的操作

离散型

正态分布

1,基本操作

# 正态分布

X = norm(loc=1, scale=2)

Y = norm(loc=-1, scale=4)

print(X.mean(), X.var(), X.std()) # 1.0 4.0 2.0

print(Y.mean(), Y.var(), X.std()) # -1.0 16.0 2.0

# 绘制概率密度曲线

t = np.arange(-15, 15, 0.01)

pl.plot(t, X.pdf(t))

pl.plot(t, Y.pdf(t))

pl.show()

2,生成随机数据,使用随机数据绘图

# 生成随机数据

rvs_X = X.rvs(size=1000)

rvs_Y = Y.rvs(size=1000)

sns.distplot(rvs_X, hist=False)

sns.distplot(rvs_Y, hist=False)

pl.show()

3,分布函数和分位点

# 正态分布

Z = norm()

# 分布函数的使用

print(Z.cdf(1.24)) # 0.892512302925

print(Z.cdf(2.37) - Z.cdf(1.24)) # 0.0985936544443

# 使用上册分位数

print(Z.sf(1.24) - Z.sf(2.37)) # 0.0985936544443

print(Z.cdf(-1.24) - Z.cdf(-2.37)) # 0.0985936544443

# 分位数的使用

print(Z.ppf(0.9147)) # 1.37027844179

print(Z.isf(0.0526)) # 1.62015027473

# 也可以使用ppf,注意上侧分位数需要转化一下

print(Z.ppf(1 - 0.0526)) # 1.62015027473

# 由期望和标准差构造随机变量

X = norm(loc=3, scale=2)

print(X.isf(0.95))

-0.289707253903

4,拟合,验证中心定理

# 100 个标准均匀分布之和的分布拟合

X = stats.uniform()

# 期望0.5 方差1/12

print(X.mean(), X.var(), X.std()) # 0.5 0.0833333333333 0.288675134595

all_num = 100

rvs = X.rvs(size=1000)

for i in range(all_num - 1):

rvs += X.rvs(size=1000)

sns.distplot(rvs)

# 理论值 期望50,方差 100*1/12

print(norm.fit(rvs)) # (50.14266028918243, 2.9431258178644071)

pl.show()

5,区间检验

# 返回一个区间,区间之间的概率为所给参数

a, b = Z.interval(0.5)

print(a, b)

print(Z.cdf(b) - Z.cdf(a))

-0.674489750196 0.674489750196

0.5

指数分布

1,基本操作

# 构造标准指数分布

X = expon()

print(X.mean(), X.var(), X.std()) # 1.0 1.0 1.0

t = np.arange(-5, 5, 0.01)

pl.plot(t, X.pdf(t))

# 构造参数不同的指数分布

Y = expon(scale=4)

print(Y.mean(), Y.var(), Y.std()) # 4.0 16.0 4.0

Y = expon(scale=16)

print(Y.mean(), Y.var(), Y.std()) # 16.0 256.0 16.0

pl.show()

# loc 表示偏移,scale 表示缩放比例

#distribution use the loc and scale parameters. Specifically, expon.pdf(x, loc, scale) is

# identically equivalent to expon.pdf(y) / scale with y = (x - loc) / scale.

Z = expon(loc=2, scale=2)

print(Z.mean(), Z.var(), Z.std())

pl.plot(t, Z.pdf(t))

pl.show()

标准均匀分布

1,简单使用

# 标准均匀分布

X = stats.uniform()

print(X.mean(), X.var(), X.std()) # 0.5 0.0833333333333 0.288675134595

t = np.arange(-2, 2, 0.01)

pl.plot(t, X.pdf(t))

pl.show()

# This distribution is constant between loc and loc + scale.

X = stats.uniform(loc=2, scale=4)

print(X.mean(), X.var(), X.std()) # 4.0 1.33333333333 1.15470053838

t = np.arange(1, 7, 0.01)

pl.plot(t, X.pdf(t))

pl.show()

标准图像

离散型

贝努利分布,两点分布

# 0--0.5 1--0.5

X = stats.bernoulli(0.5)

print(X.mean(), X.var(), X.std()) # 0.5 0.25 0.5

rvs = X.rvs(size=10) # [1 1 1 1 1 0 1 1 0 0]

print(rvs)

X = stats.bernoulli(0.9)

print(X.mean(), X.var(), X.std()) # 0.9 0.09 0.3

rvs = X.rvs(size=10) # [1 1 0 1 1 1 1 1 1 1]

print(rvs)

二项分布

# 二项分布

X = stats.binom(10, 0.5)

print(X.mean(), X.var(), X.std()) # 0.5 0.25 0.5

rvs = X.rvs(size=1000) # [1 1 1 1 1 0 1 1 0 0]

sns.distplot(rvs, rug=True, kde=True)

pl.show()

几何分布

# 几何分布,参数是该事件发生的概率

X = stats.geom(0.1)

print(X.mean(), X.var(), X.std()) #10.0 90.0 9.48683298051

rvs = X.rvs(size=1000)

sns.distplot(rvs)

pl.show()

print(rvs)

超几何分布

# 超几何分布,共N件,次品m件,取n件,有k件次品的概率

N = 20

m = 7

n = 12

X = stats.hypergeom(N, m, n)

print(X.mean(), X.var(), X.std()) # 2.0 2.0 1.41421356237

for i in range(n + 1):

print(X.pmf(i))

泊松分布

# 泊松分布

X = stats.poisson(2)

print(X.mean(), X.var(), X.std()) # 2.0 2.0 1.41421356237

rvs = X.rvs(size=100)

sns.distplot(rvs)

pl.show()

其他分布

卡方分布

X = stats.chi2(10)

print(X.mean(), X.var(), X.std()) # 10.0 20.0 4.472135955

t = np.arange(0, 40, 0.01)

pl.plot(t, X.pdf(t))

pl.show()

t分布

X = stats.t(10)

print(X.mean(), X.var(), X.std()) # 10.0 20.0 4.472135955

t = np.arange(-10, 10, 0.01)

pl.plot(t, X.pdf(t))

pl.show()

f分布

X = stats.f(10,10)

print(X.mean(), X.var(), X.std()) #1.25 0.9375 0.968245836552

t = np.arange(-10, 10, 0.01)

pl.plot(t, X.pdf(t))

pl.show()

  • 1
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值