最近在阅读Allen B. Downey所著的《统计思维:程序员数学之概率统计》,由于文章中大部分的函数操作都是基于作者自己写的模块thinkstats2,为了能够使用常用python库来复现操作,加深自己对文章内容的理解,故记录此读书笔记。

前期准备

首先导入数据分析三件套

import numpy as np
import pandas as pd
import matplotlib.pyplot as plt

之后为了导入文章所用数据,需要使用sys模块,再把数据文件所在的路径复制到sys.path列表当中。

import sys
sys.path.append('E:\\Anaconda\\Lib\\ThinkStats2-master\\code')

再传入数据,nsfg文件中的ReadFemPreg函数会返回一个描述美国新生儿数据的DataFrame,用作之后的分析。

import nsfg
df = nsfg.ReadFemPreg(dct_file='E:\\Anaconda\\Lib\\ThinkStats2-master\\code\\2002FemPreg.dct', dat_file='E:\\Anaconda\\Lib\\ThinkStats2-master\\code\\2002FemPreg.dat.gz')

绘制直方图

直方图的绘制主要用到plt模块中的hist函数。当绘制产妇怀孕数据的直方图时,发现与书上结果不同。检查后发现需要添加成功怀孕(即outcome=1)的条件。代码如下:

# 找出成功生育的产妇,并去除空值
weeks = df.prglngth[df['outcome']==1].dropna()
# bins指定直方个数,density指定是否将纵坐标归一化,edgecolor指定边框颜色
hist = plt.hist(weeks, bins=16, density=True, edgecolor='black')
plt.xlabel('Weeks of pregnancy') # x轴命名
plt.ylabel('Frequency') # y轴命名


另外,通过设置直方图的 histtype 参数,可以实现用不同方式将两类数据组合在一张图中。我分别选取了成功生育和未成功生育的产妇的怀孕周数数据,并通过在两个子图中分别设置 histtype 参数为 bar 或 barstacked,来直观地体现出两者的差距。

plt.figure(figsize=[10,10])
ax1 = plt.subplot(2, 1, 1) # 初始化子图1
ax2 = plt.subplot(2, 1, 2) # 初始化子图2
weeks_live = df.prglngth[df['outcome']==1].dropna() # 成功生育产妇数据
weeks_all = df.prglngth[df['outcome']!=1].dropna() # 未成功生育产妇数据
hist = ax1.hist([weeks_live, weeks_all], bins=30, density=True, edgecolor='black', alpha=0.7, histtype='bar')
hist = ax2.hist([weeks_live, weeks_all], bins=30, density=True, edgecolor='black', alpha=0.7, histtype='barstacked')

结果如下,上图参数值为 bar,数据左右并列;下图参数值为 barstack,数据上下重叠。

第一胎的宝宝经常晚于预产期出生吗?

这是书中刚开头便抛出的统计学问题,在有了统计数据后,便可以对该假设做进一步验证了。作者在本章中只是对结论作出了直观说明,并没有给出统计学证明(查询目录后发现作者在第九章中证明了),这里我将尝试使用统计学方法对该问题进行假设检验。步骤如下:
(1)首先分别观测头胎和非头胎母亲的怀孕周数数据
分别绘制直方图

live = df[df['outcome']==1]
firsts = live.prglngth[live['birthord']==1].dropna() # 头胎数据
others = live.prglngth[live['birthord']!=1].dropna() # 非头胎数据
hist = plt.hist([firsts, others], bins=30, density=True, edgecolor='black', alpha=0.7)


基本认为数据满足正态分布,且样本数量足够大,故可选用z检验方法。
(2)进行z检验
首先确定原假设和备择假设
H 0 H_0 H0​: W f i r ≤ W o t h W_{fir} \le W_{oth} Wfir​≤Woth​ ; H 1 H_1 H1​: W f i r > W o t h W_{fir} > W_{oth} Wfir​>Woth​
并设定显著性水平为 α = 0.05 \alpha =0.05 α=0.05
接下来就可以进行z检验了

fir_avg, oth_avg = firsts.mean(), others.mean() # 均值
fir_var, oth_var = firsts.var(), others.var() # 方差
# 进行z检验
pooled_var = fir_var / len(firsts) + oth_var / len(others)
diff = (fir_avg - oth_avg) / pooled_var ** 0.5

得到 z = 1.377 z=1.377 z=1.377,小于临界值 u 1 − α = 1.645 u_{1- \alpha}=1.645 u1−α​=1.645,故接受原假设 H 0 H_0 H0​,认为:头胎产妇平均怀孕周数不大于非头胎产妇平均怀孕周数。

《统计思维:程序员数学之概率统计》学习笔记 Chap.1-2相关推荐

  1. python实现概率论与数理统计_《统计思维:程序员数学之概率统计》读书笔记

    更多 1.书籍信息 书名:Think Stats: Probability and Statistics for Programmers 译名:<统计思维:程序员数学之概率统计> 作者:A ...

  2. 统计思维:程序员数学之概率统计(第2版):第1章 探索性数据分析

    第1章 探索性数据分析 如果能将数据与实际方法相结合,就可以在存在不确定性时解答问题并指导决策,这就是本书的主题. 举个例子.我的妻子在怀第一胎时,我听到了一个问题:第一胎是不是经常晚于预产期出生?下 ...

  3. 好程序员web前端分享Nodejs学习笔记之Stream模块

    好程序员web前端分享Nodejs学习笔记之Stream模块 一,开篇分析 流是一个抽象接口,被 Node 中的很多对象所实现.比如对一个 HTTP 服务器的请求是一个流,stdout 也是一个流.流 ...

  4. 《程序员进阶攻略》学习笔记

    整个专栏分七讲,下面总结作者感触颇深的内容. 一.征途:启程之初 1.有时选择对了合适的路,比光顾着赶路要重要得多. 2.技术的选择,都是赚取长期回报,短期的波动放在长期来看终将被抵消掉,成为时代的一 ...

  5. 《程序员的自我修养》学习笔记

    程序员的自我修养 第一章 谈职业生涯 1.程序员应该是那些不断追求更高技术,并有着自己产品梦的工匠.当你通过对自己技术不断打磨,一次又一次做出那些优秀产品的时候,你会发现自己不再是他人口中的码农或是屌 ...

  6. 黑马程序员之SQL server基础学习笔记(三)

    ---------------------- Windows Phone 7手机开发..Net培训.期待与您交流! ---------------------- (一)group by select ...

  7. 《程序员防近视指南》学习笔记全

    大家好,博主左右视力是散光100,不经常戴眼镜.为了更好地护眼,更新此篇博文,警惕自己,照顾自己身体健康.代码虽好,但也要适度让眼睛放假.记得收藏! 文章目录 1.拍打法 1.1 眼睛周围拍打法 1. ...

  8. 《Unity 游戏设计与实现 南梦宫一线程序员的开发实例》学习笔记01

    第0章 Unity概要 这是我的Unity初体验,之前没有接触过Unity引擎,但是确实很想学习,就先阅读了一点Unity Manual.熟悉了一下软件界面各窗口功能后,觉得Unity Manual ...

  9. B 站黑马程序员 pink 老师前端课程学习笔记_02 CSS3

    CSS_01 1. CSS 简介 1.1 语法规范 <style>/* 选择器{样式} */p {color: red;font-size: 12px;} </style> 1 ...

最新文章

  1. 读书笔记12:观察者模式
  2. js:进一步关闭(范围:下一个)
  3. Linux——POSIX有名信号量
  4. System Center 2012与vCenter Operations 产品功能对比
  5. 2字节取值范围_5G NR 下行同步SSB(2)—PSS和SSS的用途
  6. Runtime使用单例模式,饿汉式
  7. Hibernate延时加载
  8. Linux 下wifi 驱动开发(二)—— WiFi模块浅析
  9. 《JavaScript权威指南》——JavaScript核心
  10. OpenCV 3.1 imwrite()函数写入异常问题解决方法
  11. spring boot几个初始配置文件
  12. MDaemon12.X特殊注意事项和新功能
  13. 认识HTML与CSS
  14. kmeans算法和kmeans++
  15. Java面向对象㈡ -- 继承与多态
  16. 《东周列国志》第四十回 先轸诡谋激子玉 晋楚城濮大交兵
  17. 计算机清理垃圾代码,你也可以写代码系列,一键清除系统垃圾文件的代码(超简单)-清除垃圾文件...
  18. 《烈烈先秦》9、世界奇迹的缔造者——全才冤臣蒙恬
  19. C++(11):多线程同步packaged_task
  20. Springboot中国古代史在线学习网站 毕业设计-附源码260839

热门文章

  1. java页面后退代码,JS后退一页, JS返回上一页代码, JS返回下一页,JS返回第几页,JS页面跳转...
  2. mysql如何drop数据库_MySQL如何删除数据库
  3. uniapp字体图标的使用步骤详细版【前端开发】
  4. 国外著名搜索引擎简介
  5. Win11系统怎么安装到虚拟机的方法分享
  6. Java 并发高频面试题:聊聊你对 AQS 的理解?
  7. java isempty用法_Java ArrayList isEmpty() 使用方法及示例
  8. 7-3 打怪升级 单源最短路
  9. CSS3元素与选择器
  10. 中国钛产业运行现状分析及投资规模预测报告2022-2027年版