概率论与数理统计(Python)

概率论与数理统计(Python)

1 数据分布特征和描述统计

# 导入Scipy库的stata模块
from scipy import stats as sts
# from scipy.stats import mode
# 导入numpy库用于读取数据
import numpy as np
# 学习更多
help(sts)
data = np.loadtxt("D:\Allcode\python\大数据与python\salary.csv",delimiter =",",usecols=1) 
# delimiter分割符
# usecols读入的列数
# skiprows跳过的行数
# unpack是否将数据向量输出
# encoding编码
data
array([3850., 3950., 4050., 3880., 3755., 3710., 3890., 4130., 3940.,
       4225., 3920., 3880.])
# 众数
x = sts.mode(data,axis = None)[0][0]
print("众数为",x)
众数为 3880.0
# 平均数
x = sts.tmean(data,axis = None)
print("平均数为",x)
平均数为 3931.6666666666665
# 最小值
x = sts.tmin(data)
print("最小值为",x)
最小值为 3710.0
# 最大值
sts.tmax(data)
4225.0
# 样本标准误
sts.tstd(data)
145.85692449877868
# 样本方差
sts.tvar(data)
21274.242424242424
# 偏度
sts.skew(data)
0.5325875397307566
# 峰度
sts. kurtosis(data)
-0.2396155690457311
# 描述统计
sts.describe(data)
DescribeResult(nobs=12, minmax=(3710.0, 4225.0), mean=3931.6666666666665, variance=21274.242424242424, skewness=0.5325875397307566, kurtosis=-0.2396155690457311)
# 几何平均数
sts.gmean(data)
3929.2144614926315
# 调和平均数
sts.hmean(data)
3926.7897495993657
# 分位数
print("数据下四分位数为",
      sts.scoreatpercentile(data,25,interpolation_method = "lower",axis = None))
# interpolation_method:选择项fraction表示存在多个值返回平均数;lower存在多个值返回最小值
# higher返还最大值,默认fraction
数据下四分位数为 3850.0
# 分位数
print("数据上四分位数为",
      sts.scoreatpercentile(data,75,interpolation_method = "lower",axis = None))
# interpolation_method:选择项fraction表示存在多个值返回平均数;lower存在多个值返回最小值
# higher返还最大值,默认fraction
数据上四分位数为 3950.0
print("3850对应的分位数是",
      sts.percentileofscore(data,3850),"%")
3850对应的分位数是 25.0 %
# 极差
print("数据极差为",
     max(data)-min(data))
数据极差为 515.0
# 四分位数间距
print("四分数间距为",
    sts.scoreatpercentile(data,75,interpolation_method = "lower")
      - sts.scoreatpercentile(data,25,interpolation_method = "lower") )
四分数间距为 100.0
# 变异系数
print("变异系数为:",
     sts.tstd(data)/sts.tmean(data))
变异系数为: 0.03709798842698907

2 概率与概率分布

# 离散概型——二项分布:投篮球
import numpy as np
from scipy  import stats as sts
# 试验次数
n = 5
# 成功概率
p = 0.5
# 共有k次投中的概率
k = np.arange(0,6)
# 使用scipy库下stats模块binom类下的pmf方法(概率质量函数)
binomial = sts.binom.pmf(k,n = n,p = p)
binomial
array([0.03125, 0.15625, 0.3125 , 0.3125 , 0.15625, 0.03125])
# 对所有取值概率求和
sum(binomial)
1.0
# 一次也没投中概率
binomial[0]
0.03125
# 投中四次概率
binomial[3]
0.3125
# 泊松分布:某公路段一天出现事故次数
# 设定参数λ值
r = 2
# 假设一天有5次出现的可能
n = np.arange(0,6)
poisson = sts.poisson.pmf(k = n ,mu = r)
print("发生0-5次的事故的概率分别为\n",poisson)
发生0-5次的事故的概率分别为
 [0.13533528 0.27067057 0.27067057 0.18044704 0.09022352 0.03608941]
# 连续型随机变量
# 均匀分布
# 均匀分布下限
a = 100
# 均匀分布上限
b = 200
# 目标值
k = 150
# 求解k处概率
uniform = sts.randint.pmf(k,low = a,high = b)
print("取值为k的概率为",uniform)
取值为k的概率为 0.01
# 指数分布
r = 1/3
# 实际随机变量可能的取值
x = np.arange(0,5)
expon = sts.expon.pdf(x,scale = r)
expon
array([3.00000000e+00, 1.49361205e-01, 7.43625653e-03, 3.70229412e-04,
       1.84326371e-05])
# 当x=2时,对应的概率为
expon[2]
0.0074362565299990755
# 正态分布
# 均值
u = 1
# 方差4
s = 2
# 实际随机变量取值
k = 1
normal = sts.norm.pdf(k,loc = u,scale = 2)
normal
0.19947114020071635

3 随机变量的数字特征

3.1 期望
# 二项分布期望
# 试验次数
n = 5
# 成功概率
p = 0.2
# 期望为np
sts.binom.mean(n,p)
1.0
# 泊松分布期望
# 参数λ的值
r = 0.1,0.2,0.3
# 期望为λ
sts.poisson.mean(mu = r)
array([0.1, 0.2, 0.3])
# 均匀分布期望
# 下限
a = 100
# 上限
b = 200
# 期望为(a+b)/2
sts.randint.mean(a,b,loc = 0.5)
150.0
# 指数分布期望
sts.expon.mean(scale = 1/3)
0.3333333333333333
# 正态分布期望
sts.norm.mean(loc = 1,scale = 2)
1.0
3.2 方差
# 二项分布方差
# 试验次数
n = 5
# 成功概率
p = 0.2
# 期望为np(1-p)
sts.binom.var(n,p)
0.8
# 泊松分布方差
# 参数λ的值
r = 0.1,0.2,0.3
# 方差为λ
sts.poisson.var(mu = r)
array([0.1, 0.2, 0.3])
# 均匀分布方差
# 下限
a = 100
# 上限
b = 200
# 方差为(b-a)^2/12
sts.randint.var(a,b,loc = 0)
833.25
# 指数分布方差
sts.expon.var(scale = 1/3)
0.1111111111111111
# 正态分布方差
sts.norm.var(loc = 1,scale = 2)
4.0

4 参数估计与假设检验

4.1 置信区间求解
from scipy import stats as sts
# 置信度alpha
a = 0.95
# (均值)位置参数loc
u = 100
# (方差)尺度参数scale
s = 0.5
# 使用正态分布的interval方法
CI = sts.norm.interval(alpha = a,loc = u,scale = s)
print("置信区间为:",CI)
置信区间为: (99.02001800772997, 100.97998199227003)
4.2 假设检验
# 单个正态总体均值检验
from scipy import stats as sts
# 单个总体的样本数据,总体方差未知
data = [0.33,0.55,0.777,0.555,0.344,0.445,0.666,0.555,0.755,0.456,0.123]
# 原假设H_0:X = 0.5,检验上述数据均值是否与0.6存在显著差异
A = sts.ttest_1samp(a = data,popmean = 0.65)
print("T值为",A[0])
print("伴随概率为",A[1],"<0.05,拒绝原假设H_0")

T值为 -2.472310459101947
伴随概率为 0.032974160668988416 <0.05,拒绝原假设H_0

-END-
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值