from scipy.stats import chi2                 # 卡方分布
from scipy.stats import norm # 正态分布
from scipy.stats import t # t分布
from scipy.stats import f # F分布
import matplotlib.pyplot as plt
import numpy as np
import pandas as pd
import scipy.stats as stats
from scipy.stats import chi2_contingency # 列联表分析 # matplotlib画图注释中文需要设置
from matplotlib.font_manager import FontProperties
xy_font_set = FontProperties(fname=r"c:\windows\fonts\方正稚艺简体.ttf", size=12)
zhushi_font_set = FontProperties(fname=r"c:\windows\fonts\方正粗倩简体.ttf", size=12)
titleYW_font_set = FontProperties(fname=r"c:\windows\fonts\Gabriola.ttf", size=20)
titleZW_font_set = FontProperties(fname=r"c:\windows\fonts\汉仪细行楷简.ttf", size=18) # rvs: Random Variates
# pdf: Probability Density Function 概率密度函数
# cdf: Cumulative Distribution Function 概率密度函数的积分函数
# sf: Survival Function (1-CDF)
# ppf: Percent Point Function (Inverse of CDF) 百分点函数,概率密度函数的积分值
# isf: Inverse Survival Function (Inverse of SF)
# stats: Return mean, variance, (Fisher’s) skew, or (Fisher’s) kurtosis
# moment: non-central moments of the distribution # ppf以概率的形式,查询函数值-----------类似分布临界表 plt.figure()
# example ------------------------------------------- 卡方分布(右侧单边)
plt.subplot2grid((2, 2), (0, 0))
df = 20 # 自由度
# print(chi2.ppf(0.01, df)) # 计算函q=0.01概率时数值。其中 q = 1-a
# print(chi2.cdf(8.260, df)) # 知道x值求a
x = np.linspace(chi2.ppf(0.01, df), # 绘制概率密度图
chi2.ppf(0.99, df), 100)
plt.plot(x, chi2.pdf(x, df), alpha=0.6, label='chi2 pdf')
plt.title(u'自由度为20时的卡方概率密度函数图', fontproperties=titleZW_font_set, size=10)
# 计算平均数、方差、标准差
# print(chi2.mean(df))
# print(chi2.var(df))
# print(chi2.std(df)) # example ---------------------------------------------------- 标准正态分布(左侧单边)
plt.subplot2grid((2, 2), (0, 1))
# print(norm.ppf(0.6179)) # 知道q时求x, q=a
# print(norm.cdf(0.3)) # 知道x时求q
x = np.linspace(norm.ppf(0.01), norm.ppf(0.99), 100)
plt.plot(x, norm.pdf(x), alpha=0.6, label='norm pdf')
plt.title(u'标准正态分布概率密度函数图', fontproperties=titleZW_font_set, size=10) # example ----------------------------------------------------- t分布(双边分布)
plt.subplot2grid((2, 2), (1, 0))
df = 15
x = np.linspace(t.ppf(0.01, df), t.ppf(0.99, df), 100)
# print(t.ppf(0.95, df)) # q=0.95,a=(1-q)*2
# print(t.cdf(1.753, df))
plt.plot(x, t.pdf(x, df), alpha=0.6, label='t pdf')
plt.title(u'自由度为15时的t分布概率密度函数图', fontproperties=titleZW_font_set, size=10) # example ------------------------------------------------------ F分布(右侧单边分布)
plt.subplot2grid((2, 2), (1, 1))
df = 5
dn = 8
x = np.linspace(f.ppf(0.01, df, dn), f.ppf(0.99, df, dn), 100)
# print(f.ppf(0.95, df, dn))
plt.plot(x, f.pdf(x, df, dn), alpha=0.6, label='f pdf')
plt.title(u'自由度为5和8时的f分布概率密度函数图', fontproperties=titleZW_font_set, size=10) # example ------------------------------------------------------- 非标准正态分布
plt.figure()
std = 1
mean = 2
normalDistribution = stats.norm(mean, std) # 构建统计分布
x = np.linspace(normalDistribution.ppf(0.01), normalDistribution.ppf(0.99), 100)
plt.plot(x, normalDistribution.pdf(x))
# plt.show() # example -------------------------------------------------------- 对连续数据进行正态拟合
plt.figure()
train = pd.read_csv("csv/Titanic/train.csv")
train_Age = train.dropna(subset=['Age'])
M_S = stats.norm.fit(train_Age['Age']) # 正态拟合的平均值与标准差
train_Age['Age'].plot(kind='kde') # 原本的概率密度分布图 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('Age about Titanic')
plt.title('Titanic[Age] on NormalDistribution', size=20)
plt.legend(['Origin', 'NormDistribution']) # ----------------------------------------------------------------- R x C列联表,独立性检验
# 建立关于性别与存活
train_pclass_0 = train['Pclass'][train['Survived'] == 0].value_counts()
train_pclass_1 = train['Pclass'][train['Survived'] == 1].value_counts()
train_pclass_01 = pd.concat([train_pclass_0, train_pclass_1], axis=1, sort=True)
train_pclass_01.columns = ['Not_Survived', 'Survived']
g, p, dof, expctd = chi2_contingency(train_pclass_01.values) # g为chi2值,服从自由度为dof的卡方分布 print(g)
# 拟合优度检验,判断两个分类型变量是否独立
# 首先绘制卡方自由度为dof的曲线
plt.figure()
x = np.linspace(chi2.ppf(0.01, dof), chi2.ppf(0.99, dof), 100)
plt.plot(x, chi2.pdf(x, dof)) # 以95%置信区间,查看小概率事件区间
plt.axvline(chi2.ppf(0.975, dof), color='r')
plt.axvline(chi2.ppf(0.025, dof), color='r')
plt.title('chi2 distribution'+'whose dof is '+str(dof))
plt.text(chi2.ppf(0.975, dof), 0.02, 'q=0.95,z='+str(round(chi2.ppf(0.975, dof), 2)), ha='right', va='top', color='g', alpha=0.8, size=15)
plt.text(chi2.ppf(0.025, dof), 0.02, 'q=0.05,z='+str(round(chi2.ppf(0.025, dof), 2)), ha='left', va='top', color='g', alpha=0.8, size=15) plt.show()

python scipy stats学习笔记的更多相关文章

  1. Requests:Python HTTP Module学习笔记(一)(转)

    Requests:Python HTTP Module学习笔记(一) 在学习用python写爬虫的时候用到了Requests这个Http网络库,这个库简单好用并且功能强大,完全可以代替python的标 ...

  2. python网络爬虫学习笔记

    python网络爬虫学习笔记 By 钟桓 9月 4 2014 更新日期:9月 4 2014 文章文件夹 1. 介绍: 2. 从简单语句中開始: 3. 传送数据给server 4. HTTP头-描写叙述 ...

  3. Python Built-in Function 学习笔记

    Python Built-in Function 学习笔记 1. 匿名函数 1.1 什么是匿名函数 python允许使用lambda来创建一个匿名函数,匿名是因为他不需要以标准的方式来声明,比如def ...

  4. python数据分析入门学习笔记

    学习利用python进行数据分析的笔记&下星期二内部交流会要讲的内容,一并分享给大家.博主粗心大意,有什么不对的地方欢迎指正~还有许多尚待完善的地方,待我一边学习一边完善~ 前言:各种和数据分 ...

  5. python数据分析入门学习笔记儿

    学习利用python进行数据分析的笔记儿&下星期二内部交流会要讲的内容,一并分享给大家.博主粗心大意,有什么不对的地方欢迎指正~还有许多尚待完善的地方,待我一边学习一边完善~ 前言:各种和数据 ...

  6. Python快速入门学习笔记(二)

    注:本学习笔记参考了廖雪峰老师的Python学习教程,教程地址为:http://www.liaoxuefeng.com/wiki/001374738125095c955c1e6d8bb49318210 ...

  7. python网络爬虫学习笔记(二)BeautifulSoup库

    Beautiful Soup库也称为beautiful4库.bs4库,它可用于解析HTML/XML,并将所有文件.字符串转换为'utf-8'编码.HTML/XML文档是与“标签树一一对应的.具体地说, ...

  8. Python之xml学习笔记

    XML处理模块 xml是实现不同语言或程序之间进行数据交换的协议,跟json差不多,但json使用起来更简单,至今很多传统公司如金融行业的很多系统的接口还主要是xml. xml的格式如下,就是通过&l ...

  9. python网络爬虫学习笔记(一)Request库

    一.Requests库的基本说明 引入Rquests库的代码如下 import requests 库中支持REQUEST, GET, HEAD, POST, PUT, PATCH, DELETE共7个 ...

随机推荐

  1. 使用 rem 作为单位使页面自适应设备宽度

    一.新建 rem.js 文件,代码如下: export default function () { document.documentElement.style.fontSize = document ...

  2. canal数据同步目录

    我们公司对于数据同步有以下需求 1.多个mysql库中有一些基础表需要数据统一,mysql跨库同步 2.mysql热数据加载到redis 3.全文检索需要mysql同步到es 4.数据变更是附属的其它 ...

  3. DFT scan chain

    现代集成电路的制造工艺越来越先进,但是在生产过程中的制造缺陷也越来越难以控制,甚至一颗小小的PM2.5就可能导致芯片报废,为了能有效的检测出生产中出现的废片,需要用到扫描链测试(scan chain) ...

  4. 数据库基本的的sql语句

    数据库数据类型: 1.定义一个学生课程模式: create schma<模式名>authorization <用户名> create schema authorization ...

  5. nginx反向代理 强制https请求 + 非root用户起80,443端口

    1. #强制使用https跳转 return 301 https://$server_name$request_uri;rewrite ^(.*)$ https://${server_name}$1 ...

  6. PGM1.1-简介

    自己根据Jordan大神的资料写的(算翻译?完全不记得了,这是半年前整理的,反正不记得了,如果大神有看到部分重合,那肯定是我借鉴了人家的,本来是一个群里的人大家兴致高说写DL的书(所以这一章并不是书的 ...

  7. 20155317 王新玮《网络对抗技术》实验5 MSF基础应用

    20155317 王新玮<网络对抗技术>实验5 MSF基础应用 1. MS08_067安全漏洞 原理:攻击者利用受害者主机默认开放的SMB服务端口445,发送特殊RPC请求,通过MSRPC ...

  8. 20155333 《网络对抗》Exp3 免杀原理与实践

    20155333 <网络对抗>Exp3 免杀原理与实践 基础问题回答 (1)杀软是如何检测出恶意代码的? 基于特征码的检测: 启发式恶意软件检测: 基于行为的恶意软件检测. (2)免杀是做 ...

  9. Nuget包CommonServiceLocator从1.0.3升级到2.0.4时MvvmLight的ViewModelLocator初始化SimpleIoc.Default格式不匹配问题

    原文:Nuget包CommonServiceLocator从1.0.3升级到2.0.4时MvvmLight的ViewModelLocator初始化SimpleIoc.Default格式不匹配问题 把旧 ...

  10. vue.js 2.0 官方文档学习笔记 —— 01. vue 介绍

    这是我的vue.js 2.0的学习笔记,采取了将官方文档中的代码集中到一个文件的形式.目的是保存下来,方便自己查阅. !官方文档:https://cn.vuejs.org/v2/guide/ 01. ...