概率论与数理统计以及Python 实现

概率论:

  1 import numpy as np
  2 import pandas as pd
  3 import matplotlib.pyplot as plt
  4
  5 #随机数  当随机种子设定时,随机数不变
  6 if 0:
  7     r = np.random.RandomState()
  8     # r = np.random.RandomState(10)
  9     res = r.rand(10)
 10     print(res)
 11     pass
 12
 13 import numpy.random as r
 14 #均匀分布
 15 if 0:
 16     x = r.rand(1000)
 17     y = r.rand(1000)
 18     plt.scatter(x,y)
 19     plt.show()
 20     pass
 21
 22 #正态分布  正态分布 - 标准正态分布,均值为0,方差为1
 23 if 0:
 24     x = r.randn(1000)
 25     y = r.randn(1000)
 26     plt.scatter(x,y)
 27
 28     plt.show()
 29     pass
 30
 31 # 正态分布
 32 # normal(loc=0.0, scale=1.0, size=None)
 33 # loc:均值,scale:标准差,size:抽取样本的size
 34 if 0:
 35     x = r.normal(10,5,1000)
 36     y = r.normal(10,5,1000)
 37     plt.scatter(x,y)
 38
 39     plt.show()
 40     pass
 41
 42
 43 #指数分布
 44 if 0:
 45
 46     lambd = 0.5
 47     x = np.arange(0,15,0.1)
 48     y = lambd* np.exp(-lambd*x)
 49     plt.plot(x,y)
 50
 51
 52     plt.show()
 53
 54
 55
 56 #二项分布
 57 # .binomial(n, p, size=None)表示对一个二项分布进行采样,s为成功次数
 58 # P(N)=CsnPs(1−P)n−s
 59 # size:采样的次数  n:p即式中的n   p:函数的返回值表示n中发生/成功的次数s.
 60
 61 # 同时抛弃9枚硬币,如果正面朝上少于5枚,则输掉8元,否则就赢8元。
 62 # 如果手中有1000元作为赌资,请问赌博10000次后可能会是什么情况呢?
 63 if 0:
 64     binomial = r.binomial(9, 0.5, 10000)  # 生成二项分布随机数
 65     # print(binomial)
 66     money = np.zeros(10001)  # 生成10001次赌资的列表
 67     money[0] = 1000 #一开始有1000
 68
 69     for i in range(10000):
 70         if binomial[i] <5:
 71             money[i+1] = money[i] -8
 72         else:
 73             money[i+1] = money[i] +8
 74     plt.plot(np.arange(10001),money)
 75     plt.axvline(0,color=‘cyan‘,linestyle=‘--‘)
 76     plt.axvline(10001,color=‘gray‘,linestyle=‘--‘)
 77     plt.axhline(1000,color=‘cyan‘,linestyle=‘--‘)
 78     plt.show()
 79     pass
 80
 81
 82 # 二项分布
 83 # 将一枚硬币抛掷三次:恰好出现一次正面与至少有一次出现正面的概率
 84 if 0:
 85     # res = r.binomial(3,0.5,100)
 86     # plt.scatter(np.arange(100),res)
 87     # print(res)
 88     # plt.show()
 89
 90     n0 = sum(r.binomial(3,0.5,10000) == 0)  #n0 是10000 次中有多少次 一个正面朝上也没有
 91     n1 = sum(r.binomial(3,0.5,10000) == 1)  #n1 是10000 次中有多少次 只有一个正面朝上
 92     n2 = sum(r.binomial(3,0.5,10000) == 2)  #n2 是10000 次中有多少次 只有两个正面朝上
 93     n3 = sum(r.binomial(3,0.5,10000) == 3)  #n3 是10000 次中有多少次 三个都正面朝上
 94     print(n0,n1,n2,n3)
 95
 96     print("3个中一个正面也没有的概率是",n0/10000)  #1/8
 97     print("3个中只有一个正面的概率是",n1/10000)  #3/8
 98     print("3个中只有两个正面的概率是",n2/10000)  #3/8
 99     print("3个中都是正面的概率是",n3/10000) #1/8
100
101
102     pass
103
104
105 # 随机选择
106 if 0:
107     res = r.choice([‘a‘,‘b‘,‘c‘,‘d‘,‘e‘,‘f‘],size = 40)
108     print(res) #此时是随机选择40 个 ,放回的抽样
109
110     res2 = r.choice([‘a‘,‘b‘,‘c‘,‘d‘,‘e‘,‘f‘])
111     print(res2)  #默认值是抽取一个
112     pass
113
114 #随机顺序打乱
115 if 0:
116     a = np.arange(20)
117     res = r.shuffle(a)
118     # print(res)  #None
119     print(a)
120     pass
121
122
123 #随机变量的数字特征
124
125 #方差计算
126 if 1:
127     a = r.randn(100) #创建个一个正态分布  标准的
128     # print(a)
129
130     n = len(a) #元素个数
131     #均值
132     m = a.mean()
133     #方差
134     s = np.sum((a-m)**2)/n
135     print("均值为 {}  方差为 {} ".format(m,s))
136
137     #numpy 提供的计算方差的函数 var() 
138     print("方差为 {} (Numpy 函数var 直接计算)".format(np.var(a)))
139
140
141
142     pass

数理统计:

注:频率直方图 和 条形图是有很大区别的

 1 import numpy as np
 2 import pandas as pd
 3 import matplotlib.pyplot as plt
 4
 5 #数据分布的图表可视化 - 直方图
 6 import numpy.random as r
 7 if 0:
 8     a =r.randn(1000)*100   #创建一个1000个数的  标准正态分布的数组
 9     # print(max(a),min(a))
10     # print(len(a))
11     plt.hist(a,bins=50)
12     # plt.grid() #显示网格线
13
14
15     plt.show()
16     pass
17
18 # 数据分布的图表可视化 - 箱型图
19 if 0:
20     a = r.randn(1000)*100
21     plt.boxplot(a,
22                 vert=True,  # 是否垂直
23                 whis=1.5,  # IQR,默认1.5,也可以设置区间比如[5,95],代表强制上下边缘为数据95%和5%位置
24                 patch_artist=True,  # 上下四分位框内是否填充,True为填充
25                 meanline=False, showmeans=True,  # 是否有均值线及其形状
26                 showbox=True,  # 是否显示箱线
27                 showcaps=True,  # 是否显示边缘线
28                 showfliers=True,  # 是否显示异常值
29                 notch=False,  # 中间箱体是否缺口
30                 )
31     plt.grid()
32     plt.show()
33
34     pass
35
36 #计算分位数
37 if 0:
38     # 用 numpy 求  分位数
39     if 1:
40         a = r.randn(1000)*100  #1000个
41         p25 = np.percentile(a, 25)
42         p40 = np.percentile(a, 40)
43         p75 = np.percentile(a, 75)
44         print(‘ar的25分位数为%.2f, 40分位数为%.2f, 75分位数为%.2f‘ % (p25, p40, p75))
45
46         print("中位数 {} ".format(np.median(a)))
47         print("中位数 {} ".format(  np.percentile(a,50)  )   )
48
49
50     # 使用pandas中的dataframe 来求分位数
51     if 0:
52         a = r.randn(1000)*100
53         df = pd.DataFrame(a,columns=[‘value‘])
54         # print(df)
55
56         q25 = df[‘value‘].quantile(0.25)
57         q40 = df[‘value‘].quantile(0.4)
58         q75 = df[‘value‘].quantile(0.75)
59         # print(‘df的25分位数为%.2f, 40分位数为%.2f, 75分位数为%.2f‘ % (q25, q40, q75))
60
61         if 0:
62             q50 = df[‘value‘].quantile(0.5)
63             print(q50)
64             print(‘df的中位数为%.2f‘ % df[‘value‘].median())
65             pass
66
67
68         pass
69
70
71
72
73     pass

原文地址:https://www.cnblogs.com/zach0812/p/11624988.html

时间: 2024-10-23 22:12:05

概率论与数理统计以及Python 实现的相关文章

【总目录】——概率论与数理统计及Python实现

注:这是一个横跨数年的任务,标题也可以叫做“从To Do List上划掉学习统计学”.在几年前为p值而苦恼的时候,还不知道Python是什么:后来接触过Python,就喜欢上了这门语言.统计作为数据科学的基础,想要从事这方面的工作,这始终是一个绕不过去的槛. 其实从中学就开始学习统计学了,最早的写"正"字唱票(相当于寻找众数),就是一种统计分析的过程.还有画直方图,求平均值,找中位数等.自己在学校里并没有完整系统的学习过概率论和数理统计,直到在工作中用到,才从最初的印象中,逐渐把这门学

【概率论与数理统计】小结9 - 参数估计概述

注:在统计学的应用中,参数估计和假设检验是最重要的两个方面.参数估计是利用样本的信息,对总体的未知参数做估计.是典型的“以偏概全”. 0. 参数及参数的估计 参数是总体分布中的参数,反映的是总体某方面特征的量.例如:合格率,均值,方差,中位数等.参数估计问题是利用从总体抽样得到的信息来估计总体的某些参数或者参数的某些函数. 问题的一般提法 设有一个统计总体,总体的分布函数为$F(x, \theta)$,其中$\theta$为未知参数.现从该总体取样本$X_1, X_2, ..., X_n$,要依

【概率论与数理统计】小结3 - 一维离散型随机变量及其Python实现

注:上一小节对随机变量做了一个概述,这一节主要记录一维离散型随机变量以及关于它们的一些性质.对于概率论与数理统计方面的计算及可视化,主要的Python包有scipy, numpy和matplotlib等. 以下所有Python代码示例,均默认已经导入上面的这几个包,导入代码如下: import numpy as np from scipy import stats import matplotlib.pyplot as plt 0.  Python中调用一个分布函数的步骤 scipy是Pytho

【概率论与数理统计】小结1 - 基本概念

注:其实从中学就开始学习统计学了,最早的写"正"字唱票(相当于寻找众数),就是一种统计分析的过程.还有画直方图,求平均值,找中位数等.自己在学校里并没有完整系统的学习过概率论和数理统计,直到在工作中用到,才从最初的印象中,逐渐把这门学科与整个数学区分开来.自从认识到这门学科在自己从事的工作(数据分析)中所处的重要地位,真没少花时间在这方面的学习上.从最初的p值的含义,到各种分布,假设检验,方差分析...有的概念看过很多遍,但还是没有理解透彻:有的看过,长时间不用,又忘记了.总之,这一路

【概率论与数理统计】小结2 - 随机变量概述

注:对随机变量及其取值规律的研究是概率论的核心内容.在上一个小结中,总结了随机变量的概念以及随机变量与事件的联系.这个小结会更加深入的讨论随机变量. 随机变量与事件 随机变量的本质是一种函数(映射关系),在古典概率模型中,“事件和事件的概率”是核心概念:但是在现代概率论中,“随机变量及其取值规律”是核心概念. 随机变量与事件的联系与区别 小结1中对这两个概念的联系进行了非常详细的描述.随机变量实际上只是事件的另一种表达方式,这种表达方式更加形式化和符号化,也更加便于理解以及进行逻辑运算.不同的事

概率论与数理统计图解.tex

\documentclass[UTF8,a1paper,landscape]{ctexart} \usepackage{tikz} \usepackage{amsmath} \usepackage{amssymb} \usepackage{geometry} \geometry{top=5cm,bottom=5cm,left=5cm,right=5cm} \usepackage{fancyhdr} \pagestyle{fancy} \begin{document} \title{\Huge 概

概率论和数理统计的总结(一)

迄今为止,看得最为亲切的一本概率论与数理统计方面的书莫过于陈希孺先生的这本,陈先生用一种娓娓道来的语气把很多原本复杂的内容讲得那么清晰,而且并不是就着这一点知识而讲,能结合前后知识体系一起介绍. 这本书名为<概率论与数理统计>,主要也是讲两大知识体系,前半部分(前三章)讲概率论,后半部分(后三章)讲数理统计. 就知识点来看,第一章讲事件的概率,包括什么是概率(概率是什么),古典概率计算以及事件的计算.条件概率和概率的独立性.在这一章里,事件是整个概率的基础,如何定义概率也是整个概率论知识体系演

概率论与数理统计学习笔记

第一章 随机事件与概率 第二章 随机变量及其分布 第三章 多维随机变量及其分布 第四章 大数定律与中心极限定理 第五章 统计量及其分布 第六章 参数估计 第七章 假设检验 第八章 方差分析与回归分析 第一章 随机事件与概率 1.1随机事件及其运算 概率论与数理统计研究的对象是随机现象. 概率论是研究随机现象的模型(即概率分布),数理统计是研究随机现象的数据收集与处理. 随机现象: 在一定的条件下,并不总是出现相同结果的现象称为随机现象 样本空间:随机现象的一切可能基本结果组成的集合称为样本空间

概率论与数理统计图解

\documentclass[UTF8,a1paper,landscape]{ctexart}%UTF8,ctexart中文支持,landscape横向版面 \usepackage[svgnames]{xcolor} \usepackage{tikz}%画图 \usetikzlibrary{arrows,shapes,positioning} \tikzstyle arrowstyle=[scale=1] \usepackage{geometry}%页边距设置 \geometry{top=0.5