python3 scipy stats 使用 常见分布的操作

原文链接: python3 scipy stats 使用 常见分布的操作

上一篇: python3 概率论 作业

下一篇: python3 命令行 扫雷

离散型

正态分布

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()

201718_eRKJ_2856757.png

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()

202014_4gDG_2856757.png

3,分布函数和分位点
202849_D1BC_2856757.png

# 正态分布
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

204543_vimY_2856757.png

204623_soJo_2856757.png

# 由期望和标准差构造随机变量
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()

221935_1IRz_2856757.png

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()

205638_PMBF_2856757.png


# 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()

210509_Vtm7_2856757.png

标准均匀分布

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()

标准图像

210942_jphW_2856757.png

离散型

贝努利分布,两点分布


# 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()

213557_zkyb_2856757.png

几何分布

# 几何分布,参数是该事件发生的概率
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)

214355_UTnX_2856757.png

超几何分布

# 超几何分布,共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()

214756_APot_2856757.png

其他分布

卡方分布

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()

220904_tPNO_2856757.png

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()

221033_7S48_2856757.png

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()



221119_g8l9_2856757.png

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
### 回答1: 我了解Scipy.stats,它是一个用于统计计算的Python模块。 你好!Scipy.stats 是一个 Python 库,提供了大量用于数据分析、概率计算和统计分布的函数和类。Python Scipy.stats 是一个用于科学计算和统计分析的 Python 库。它提供了大量用于数据探索、描述性统计、概率分布和假设检验等的函数。 Scipy.stats 包含了多种概率分布函数,包括连续型分布(如正态分布、指数分布和威布尔分布等)和离散型分布(如泊松分布和二项分布等)。此外,它还提供了许多统计函数,如假设检验、相关分析、方差分析等。 下面是一些 Scipy.stats 常用函数的示例: 1. 正态分布 ```python from scipy.stats import norm # 计算正态分布概率密度函数在 x=1 处的取值 norm.pdf(1) # 计算正态分布累积分布函数在 x=1 处的取值 norm.cdf(1) # 计算给定正态分布的均值和标准差时,从 -1 到 1 区间的概率密度函数值 norm.interval(0.68, loc=0, scale=1) ``` 2. t 分布 ```python from scipy.stats import t # 计算给定 t 分布的自由度,从 -1 到 1 区间的概率密度函数值 t.interval(0.68, df=10, loc=0, scale=1) # 计算两个样本的 t 统计值和 p 值,用于假设检验 ttest_ind(sample1, sample2) ``` 3. 卡方分布 ```python from scipy.stats import chi2 # 计算给定卡方分布的自由度,从 0 到 2 区间的概率密度函数值 chi2.interval(0.68, df=5, loc=0, scale=1) # 计算卡方分布的 p 值,用于假设检验 chisquare(observed, expected) ``` 以上是 Scipy.stats 库的一些常用函数。你可以通过调用这些函数和查看其文档来进一步了解该库的使用。 ### 回答2: Python是一种广泛使用的编程语言,而Python scipy.stats是Python的一个统计学模块。它是一个极其强大的模块,用于执行各种统计和概率分布操作。这个模块是SciPy库的一部分,SciPy是一个Python库,专门用于数学、科学和工程计算。 Python scipy.stats可以用于在Python生成各种概率分布,如正态分布、泊松分布、二项分布、t分布等等。使用它可以计算每个概率分布的概率密度、累积分布函数和逆累积分布函数。 除了概率分布之外,Python scipy.stats还提供了各种统计测量功能,例如Kendall的Tau系数、Spearman的等级相关系数、Pearson的相关系数、均值、位数、标准差等。还可以使用Python scipy.stats来进行假设检验,例如单样本和双样本t检验、卡方检验等等。 Python scipy.stats还提供了一些有用的函数,如峰度(kurtosis)、偏态(skewness)、最大值、最小值和极差。将这些函数与概率分布和统计测量相关函数相结合,可以在Python快速完成高级统计分析操作。 总的来说,Python scipy.stats对于希望利用Python进行统计分析的科学家和工程师来说是非常有用的。它提供了方便、快速和高效的数据分析工具,使得研究人员可以更简单、更迅速地实现各种复杂的统计分析操作。 ### 回答3: PythonScipy库提供了许多统计函数,其最重要的是scipy.stats模块。在统计学和数据科学scipy.stats被广泛用于概率分布的计算、分位数的计算、假设检验、线性回归、方差分析等。 该模块提供了多种分布概率密度函数的计算。例如,正态分布(norm)、t分布(t)、卡方分布(chi2)、F分布(f)、伽马分布(gamma)等。对于每种分布,该模块提供了一个或多个方法计算概率密度函数、累积分布函数、分位数等。除此之外,还有如半正态分布、冈分布、三角分布等其它分布概率密度函数的计算。 与此同时,该模块还可用于执行假设检验。例如,在从正态分布取样时,可以使用t检验测试样本和总体的均值是否不同。还可以使用方差分析(ANOVA)来比较不同组的平均值是否有差异。 scipy.stats模块还提供了一些关于线性回归的函数,例如pearsonr和spearmanr方法可以计算线性相关系数和斯皮尔曼等级相关系数。还可以使用linregress方法进行回归分析,包括计算斜率、截距、标准错误、t值和p值。 总的来说,scipy.stats是Python科学计算的重要组成部分,对于数据科学家、研究人员等人员来说非常有用,可以方便地计算和分析各种数据分布和假设检验,并且提供了一些常见的统计函数来解决数据问题。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值