本次选取泰坦尼克号的数据,利用python进行抽样分布描述及实践。

备注:数据集的原始数据是泰坦尼克号的数据,本次截取了其中的一部分数据进行学习。Age:年龄,指登船者的年龄。Fare:价格,指船票价格。Embark:登船的港口。

1、按照港口分类,使用python求出各类港口数据 年龄、车票价格的统计量(均值、方差、标准差、变异系数等)。

import pandas as pd

df = pd.read_excel('/Users/Downloads/data.xlsx',usecols = [1,2,3] )

#拿到港口'Embarked'、年龄'Age'、价格'Fare'的数据

df2 = df.groupby(['Embarked'])

#按照港口'Embarked'分类后,查看 年龄、车票价格的统计量。

# 变异系数 = 标准差/平均值

def cv(data):

return data.std()/data.var()

df2 = df.groupby(['Embarked']).agg(['count','min','max','median','mean','var','std',cv])

df2 = df2.apply(lambda x:round(x,2))

df2_age = df2['Age']

df2_fare = df2['Fare']

分类后 年龄及价格统计量描述数据如下图:

年龄统计量

价格统计量

2、画出价格的分布图像,验证数据服从何种分布(正态?卡方?还是T?)

2.1 画出船票的直方图:

plt.hist(df['Fare'],20,normed=1, alpha=0.75)

plt.title('Fare')

plt.grid(True)

船票价格的直方图及概率分布

2.2 验证是否符合正态分布?

#分别用kstest、shapiro、normaltest来验证分布系数

ks_test = kstest(df['Fare'], 'norm')

#KstestResult(statistic=0.99013849978633, pvalue=0.0)

shapiro_test = shapiro(df['Fare'])

#shapiroResult(0.5256513357162476, 7.001769945799311e-40)

normaltest_test = normaltest(df['Fare'],axis=0)

#NormaltestResult(statistic=715.0752414548335, pvalue=5.289130045259168e-156)

以上三种检测结果表明 p<5%,因此 船票数据不符合正态分布。

绘制拟合正态分布曲线:

fare = df['Fare']

plt.figure()

fare.plot(kind = 'kde') #原始数据的正态分布

M_S = stats.norm.fit(fare) #正态分布拟合的平均值loc,标准差 scale

normalDistribution = stats.norm(M_S[0], M_S[1]) # 绘制拟合的正态分布图

x = np.linspace(normalDistribution.ppf(0.01), normalDistribution.ppf(0.99), 100)

plt.plot(x, normalDistribution.pdf(x), c='orange')

plt.xlabel('Fare about Titanic')

plt.title('Titanic[Fare] on NormalDistribution', size=20)

plt.legend(['Origin', 'NormDistribution'])

船票拟合正态分布曲线

2.3 验证是否符合T分布?

T_S = stats.t.fit(fare)

df = T_S[0]

loc = T_S[1]

scale = T_S[2]

x2 = stats.t.rvs(df=df, loc=loc, scale=scale, size=len(fare))

D, p = stats.ks_2samp(fare, x2) # (0.25842696629213485 2.6844476044528504e-21)

p = 2.6844476044528504e-21 ,p < alpha,拒绝原假设,价格数据不符合t分布。

对票价数据进行T分布拟合:

plt.figure()

fare.plot(kind = 'kde')

TDistribution = stats.t(T_S[0], T_S[1],T_S[2]) # 绘制拟合的T分布图

x = np.linspace(TDistribution.ppf(0.01), TDistribution.ppf(0.99), 100)

plt.plot(x, TDistribution.pdf(x), c='orange')

plt.xlabel('Fare about Titanic')

plt.title('Titanic[Fare] on TDistribution', size=20)

plt.legend(['Origin', 'TDistribution'])

票价拟合T分布

2.4 验证是否符合卡方分布?

chi_S = stats.chi2.fit(fare)

df_chi = chi_S[0]

loc_chi = chi_S[1]

scale_chi = chi_S[2]

x2 = stats.chi2.rvs(df=df_chi, loc=loc_chi, scale=scale_chi, size=len(fare))

Df, pf = stats.ks_2samp(fare, x2) # (0.16292134831460675, 1.154755913291936e-08)

p = 1.154755913291936e-08 ,p < alpha,拒绝原假设,价格数据不符合卡方分布。

对票价数据进行卡方分布拟合

plt.figure()

fare.plot(kind = 'kde')

chiDistribution = stats.chi2(chi_S[0], chi_S[1],chi_S[2]) # 绘制拟合的正态分布图

x = np.linspace(chiDistribution.ppf(0.01), chiDistribution.ppf(0.99), 100)

plt.plot(x, chiDistribution.pdf(x), c='orange')

plt.xlabel('Fare about Titanic')

plt.title('Titanic[Fare] on chi-square_Distribution', size=20)

plt.legend(['Origin', 'chi-square_Distribution'])

票价拟合卡方分布

3、按照港口分类,验证S与Q两个港口间的价格之差是否服从某种分布

S_fare = df[df['Embarked'] =='S']['Fare']

Q_fare = df[df['Embarked'] =='Q']['Fare']

C_fare = df[df['Embarked'] =='C']['Fare']

S_fare.describe()

count 554.000000

mean 27.476284

std 36.546362

min 0.000000

25% 8.050000

50% 13.000000

75% 27.862500

max 263.000000

Q_fare.describe()

count 28.000000

mean 18.265775

std 21.843582

min 6.750000

25% 7.750000

50% 7.750000

75% 18.906250

max 90.000000

C_fare.describe()

count 130.000000

mean 68.296767

std 90.557822

min 4.012500

25% 14.454200

50% 36.252100

75% 81.428100

max 512.329200

按照港口分类后,S港口样本数<=554,Q港口样本数<=28,C港口样本数<=130。

总体不服从正态分布,所以需要当n比较大时,一般要求n>=30,两个样本均值之差的抽样分布可近似为正态分布。X2的总体容量为28,其样本容量不可能超过30,故其S港和Q港两个样本均值之差(E(X1)-E(X2))的抽样分布不服从正态分布。

S港和C港两个样本均值之差(E(X1)-E(X3))的抽样分布近似服从正态分布,其均值和方差分别为E(E(X1) - E(X3)) = E(E(X1)) - E(E(X3)) = μ1 - μ3;D(E(X1) + E(X3)) = D(E(X1)) + D(E(X3)) = σ1²/n1 + σ3²/n3 。绘图如下:

miu = np.mean(S_fare) - np.mean(C_fare)

sig = np.sqrt(np.var(S_fare, ddof=1)/len(S_fare) + np.var(C_fare, ddof=1)/len(C_fare))

x = np.arange(- 110, 50)

y = stats.norm.pdf(x, miu, sig)

plt.plot(x, y)

plt.xlabel("S_Fare - C_Fare")

plt.ylabel("Density")

plt.title('Fare difference between S and C')

plt.show()

以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持谷谷点程序。

python按指定概率抽样_基于python进行抽样分布描述及实践详解相关推荐

  1. mysql 点赞数据库设计_基于redis实现的点赞功能设计思路详解

    点赞其实是一个很有意思的功能.基本的设计思路有大致两种, 一种自然是用mysql等 数据库直接落地存储, 另外一种就是利用点赞的业务特征来扔到redis(或memcache)中, 然后离线刷回mysq ...

  2. 单片机控制两个步进电机画圆_基于单片机的步进电机转速控制设计详解(附程序)...

    步进电机是将电脉冲信号转变为角位移或线位移的开环控制元件.在非超载的情况下,电机的转速.停止的位置只取决于脉冲信号的频率和脉冲数,而不受负载变化的影响,即给电机加一个脉冲信号,电机则转过一个步距角.这 ...

  3. python电影推荐算法_基于Python的电影推荐算法

    原标题:基于Python的电影推荐算法 第一步:收集和清洗数据 数据链接:https://grouplens.org/datasets/movielens/ 下载文件:ml-latest-small ...

  4. python兼职平台信号处理_基于Python的数字信号处理初步

    作者:许欢 来源:EETOP 行者无疆(论坛usrname:ICNO.1) 的博客 Python 是目前的热门语言,一直觉得掌握一门编程语言对作为搞技术的来说还是很有必要的,结合工作中能用到的一些数据 ...

  5. 用python做双人五子棋_基于python的socket实现单机五子棋到双人对战

    基于python的socket实现单机五子棋到双人对战,供大家参考,具体内容如下 本次实验使用python语言.通过socket进行不同机器见的通信,具体可以分为以下四步:1.创建ServerSock ...

  6. 用python做生物信息数据分析_基于Python的自动获取生物信息数据的软件设计

    基于 Python 的自动获取生物信息数据的软件设计 * 周斯涵,刘月兰 ** [摘 要] [摘 要] 从国际生物信息学数据库中采集数据来进行相关领域的分析, 但随着数据库规模不断扩大 , 数据来源种 ...

  7. python 工资管理软件_基于[Python]的员工管理系统

    基于[Python]的员工管理系统 -------------------------------- 简介 使用python语言来完成一个员工管理系统,员工信息包含:员工工号,姓名, 年龄,性别,职位 ...

  8. autocad python二次开发_基于Python AutoCAD ActiveX 二次开发,pyautocad应用技术

    AutoCAD应用程序开发系列 基于Python AutoCAD ActiveX 二次开发技术 主要库:pyautocad==0.2.0 内容#:基于Python AutoCAD ActiveX 二次 ...

  9. python语法元素测试_基于python全局设置id 自动化测试元素定位过程解析

    背景: 在自动化化测试过程中,不方便准确获取页面的元素,或者在重构过程中方法修改造成元素层级改变,因此通过设置id准备定位. 一.python准备工作: 功能:用自动化的方式进行批量处理. 比如,你想 ...

最新文章

  1. python class 是否存在某个变量_Python编程思想(29):使用type()函数定义类
  2. 单元测试中使用mock最好不要使用easymock而应该使用powermock
  3. chrome设置微信ua_Chrome谷歌浏览器模拟微信内置浏览器的方法(电脑上)
  4. 基于 Apache Flink + Hologres 的实时推荐系统架构解析
  5. tp3.2 复合查询
  6. 【洛谷1361】 小M的作物(最小割)
  7. .NET(c#) 移动APP开发平台 - Smobiler(1)
  8. linux ftp配置chroot,vsftp chroot 设置
  9. linux如何自动化部署脚本实现免密登录并访问资源
  10. .NET Framework 工具下载
  11. 基于IDEA搭建JavaWeb入门项目结构(2021版)
  12. tomcat组播实现session一致性_java会话技术-Session
  13. Uva 140 Bandwidth
  14. 不可不知的CPU风扇清理技巧
  15. oppoAndroid面试题,retrofit解析
  16. 产品经理必读的九步法
  17. 动词ing基本用法_(完整版)英语动词ing的用法
  18. 【Windows10安装CUDA和cuDNN】
  19. 将base64加密之后的图片文件流写为文件
  20. [机器学习与scikit-learn-4]:scikit-learn机器学习的一般流程与案例演示

热门文章

  1. 品读国学经典之三——《齐桓晋文之事》
  2. vue 获取数组长度_Vue数据响应式
  3. 盘点13 款适用于 Windows PC的强大屏幕截图工具,您可能没有用过
  4. 3D物联网之生产线监控3D可视化解决方案
  5. 雄才、大略、贪婪、恐惧
  6. Java中Set真的是无序的吗?
  7. Imagination宣布和恩智浦(NXP)达成最新授权协议
  8. python+appium自动化测试遇到的一些坑及问题总结(一)
  9. python 等差数列生成器
  10. 在html中怎么插入腾讯视频,腾讯视频加载方案, 网页嵌入腾讯视频方式 iframe, 网页嵌入腾讯视频方式...