数据分析-概率分布

概率分布(Probability Distributions)

概率分布(Probability Distributions)是数学统计学中的一个重要概念,用于描述随机变量的取值规律。根据随机变量的类型,概率分布可以分为离散概率分布和连续概率分布。

离散概率分布

离散概率分布适用于取值为有限个或可数无限个的随机变量。常见的离散概率分布包括:

伯努利分布(Bernoulli Distribution)

  • 两种可能的结果:伯努利试验只有两种可能的结果,通常称为“成功”(1)和“失败”(0)。
import scipy.stats as stats
import seaborn as sns
import pandas as pd
import matplotlib.pyplot as plt
# 生成10000个伯努利随机变量,成功概率为0.3,设置随机种子为0
binomial_samples = stats.bernoulli.rvs(p=0.3, size=10000, random_state=0)
# 绘制直方图,设置直方图的柱宽为0.8,柱子的对齐方式为中间对齐
plt.hist(binomial_samples, bins=[-0.5, 0.5, 1.5], rwidth=0.8, align='mid')
# 设置x轴的刻度标签为0和1
plt.xticks([0, 1])
plt.xlabel('Value')
plt.ylabel('Frequency')
plt.title('Histogram of Bernoulli Samples')
plt.show()

二项分布(The Binomial distribution)

  • 试验之间的相互独立:每次试验的结果不会影响其他试验的结果。
  • 每次试验只有两个可能的结果:通常是“失败”和“成功”两种结果。在描述中,成功概率为p,失败概率为1-p。
import scipy.stats as stats
import matplotlib.pyplot as plt

# 设置二项分布的参数
n = 10  # 试验次数
p = 0.5  # 每次试验成功的概率

# 生成100个二项分布随机变量
binomial_samples = stats.binom.rvs(n=n, p=p, size=100)

# 打印前10个随机变量
print("First 10 Binomial samples:", binomial_samples[:10])

# 绘制直方图
plt.hist(binomial_samples, bins=range(n+2), rwidth=0.8, align='left')
plt.xlabel('Number of Successes')
plt.ylabel('Frequency')
plt.title('Histogram of Binomial Samples')
plt.show()

泊松分布(Poisson Distribution)

  • 事件彼此独立:一个事件的发生不会影响另一个事件发生的概率。
  • 两个事件不能同时发生:可以认为事件是逐个发生的。
  • 事件发生的平均速率是常数:在任何给定的时间间隔内,事件发生的平均速率是固定的。
import scipy.stats as stats
import matplotlib.pyplot as plt

# 设置泊松分布的参数
lam = 5  # 单位时间内事件发生的平均次数

# 生成100个泊松分布随机变量
poisson_samples = stats.poisson.rvs(mu=lam, size=100)

# 打印前10个随机变量
print("First 10 Poisson samples:", poisson_samples[:10])

# 绘制直方图
plt.hist(poisson_samples, bins=range(min(poisson_samples), max(poisson_samples) + 2), rwidth=0.8, align='left')
plt.xlabel('Number of Events')
plt.ylabel('Frequency')
plt.title('Histogram of Poisson Samples')
plt.show()

连续概率分布

连续概率分布适用于取值为连续的随机变量。常见的连续概率分布包括:

均匀分布(Uniform Distribution)

  • 均匀概率:均匀分布描述了在某个区间内,所有值出现的概率是均匀的,即相等的。
  • 区间:由两个参数a和b定义,表示变量X的取值范围为[a, b]。
import scipy.stats as stats
import matplotlib.pyplot as plt

# 设置均匀分布的参数
a = 0  # 下界
b = 10  # 上界

# 生成100个均匀分布随机变量
uniform_samples = stats.uniform.rvs(loc=a, scale=b-a, size=100)

# 打印前10个随机变量
print("First 10 Uniform samples:", uniform_samples[:10])

# 绘制直方图
plt.hist(uniform_samples, bins=10, rwidth=0.8, align='mid')
plt.xlabel('Value')
plt.ylabel('Frequency')
plt.title('Histogram of Uniform Samples')
plt.show()

正态分布(Normal Distribution)

也被称为高斯分布(Gaussian Distribution)

  • 对称性和钟形曲线:正态分布的概率密度函数呈对称的钟形曲线形状,以均值为中心,两侧对称下降。
  • 均值和标准差:由两个参数μ(均值)和σ(标准差)定义,决定了分布的中心位置和分布的宽度。
import pymc as pm
import matplotlib.pyplot as plt

with pm.Model() as model:
	y = pm.Normal.dist()
	samples = pm.draw(y, draws=1000)
plt.plot(samples)

import scipy.stats as stats
import seaborn as sns

normal_dist = stats.norm.rvs(size=10000,loc=200,scale=9,random_state=0)
pd.Series(normal_dist).plot(kind='hist',bins=100)

for mean in range(400,900,200):
	normal_dist = stats.norm.rvs(size=10000,loc=mean,scale=90,random_state=0)
	pd.Series(normal_dist).plot(kind='hist',bins=100,label="Mean = {:f}".format(mean))

指数分布(Exponential Distribution)

  • 事件发生的时间间隔:指数分布描述了两个连续事件发生之间的时间间隔。
  • 平均发生率:由参数λ定义,表示单位时间内事件发生的平均次数。
import scipy.stats as stats
import seaborn as sns
import pandas as pd

# 指数分布
exponential_data = stats.expon.rvs(scale=1, size=10000, random_state=0)
pd.Series(exponential_data).plot(kind='hist', bins=30, density=True)

t分布(t-Distribution)

  • 小样本推断:当样本量较小或总体标准差未知时,t分布用于估计正态总体的均值。
  • 自由度:由自由度参数df定义,自由度越大,t分布越接近正态分布。
import scipy.stats as stats
import seaborn as sns
import pandas as pd

# t分布
t_data = stats.t.rvs(df=10, size=10000, random_state=0)
pd.Series(t_data).plot(kind='hist', bins=30, density=True)

卡方分布(Chi-Squared Distribution)

  • 假设检验:卡方分布常用于检验观察频数与期望频数之间的差异,如卡方检验。
  • 自由度:由自由度参数df定义,决定了分布的形状。
import scipy.stats as stats
import seaborn as sns
import pandas as pd

# 卡方分布
chi_squared_data = stats.chi2.rvs(df=4, size=10000, random_state=0)
pd.Series(chi_squared_data).plot(kind='hist', bins=30, density=True)

伽玛分布(Gamma Distribution):

  • 总等待时间:伽玛分布用于描述多个指数分布事件发生的总等待时间。
  • 形状参数和比例参数:由形状参数α(或k)和比例参数β(或θ)定义,这两个参数决定了分布的形状和尺度。
import scipy.stats as stats
import matplotlib.pyplot as plt

# 设置伽玛分布的参数
alpha = 2  # 形状参数
beta = 3   # 比例参数

# 生成10000个伽玛分布随机变量
gamma_samples = stats.gamma.rvs(a=alpha, scale=1/beta, size=10000, random_state=0)

# 绘制直方图
plt.hist(gamma_samples, bins=30, density=True)
plt.xlabel('Value')
plt.ylabel('Density')
plt.title('Histogram of Gamma Samples')
plt.show()

随机游走/布朗运动(Random Walk/Brownian Motion):

  • 连续随机过程:布朗运动是一种连续时间内连续状态变量的随机过程,用于描述粒子在液体或气体中的随机运动。
import numpy as np
import matplotlib.pyplot as plt

# 设置参数
n_steps = 1000  # 步数
delta_t = 1    # 时间间隔
sigma = 1      # 标准差

# 生成随机游走
steps = np.random.normal(loc=0, scale=sigma * np.sqrt(delta_t), size=n_steps)
brownian_motion = np.cumsum(steps)

# 绘制随机游走图
plt.plot(brownian_motion)
plt.xlabel('Time')
plt.ylabel('Position')
plt.title('Random Walk / Brownian Motion')
plt.show()

分布变换 (Distribution Transformations)

对数变换 (Log Transform):

将数据通过自然对数变换,常用于处理右偏分布,使其更接近正态分布。

平方根变换 (Square Root Transform):

对数据进行平方根变换,通常用于处理计数数据的偏态分布。

Box-Cox变换 (Box-Cox Transform):

一种更广义的数据变换方法,包括对数变换和平方根变换,用于使数据更接近正态分布

pdf,cdf,ppf

PDF (Probability Density Function)

概率密度函数(PDF)描述了连续随机变量在某个特定值或某个区间内取值的概率密度。对于连续随机变量,PDF不直接给出概率,而是表示概率的密度。

CDF (Cumulative Distribution Function)

累积分布函数(CDF)描述了随机变量取值小于或等于某个特定值的概率。对于连续随机变量,CDF是PDF的积分。

PPF (Percent Point Function)

百分点函数(PPF),也称为分位数函数或逆累积分布函数,是CDF的逆函数。PPF给出了使CDF达到某个特定概率值的随机变量的值。

  • 17
    点赞
  • 19
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
数据分析--分析方法 各种分析方法 逻辑回归分析 什么是逻辑回归? Logistic回归与多重线性回归实际上有很多相同之处,最大的区别就在于它们的因变量不同,其他的基本都差不多。正是因为如此,这两种回归可以归于同一个家族,即广义线性模型(generalized linear model)。 这一家族中的模型形式基本上都差不多,不同的就是因变量不同。 如果是连续的,就是多重线性回归; 如果是二项分布,就是Logistic回归; 如果是Poisson分布,就是Poisson回归; 如果是负二项分布,就是负二项回归。 Logistic回归的因变量可以是二分类的,也可以是多分类的,但是二分类的更为常用,也更加容易解释。所以实际中最常用的就是二分类的Logistic回归。 Logistic回归的主要用途: 寻找危险因素:寻找某一疾病的危险因素等; 预测:根据模型,预测在不同的自变量情况下,发生某病或某种情况的概率有多大; 判别:实际上跟预测有些类似,也是根据模型,判断某人属于某病或属于某种情况的概率有多大,也就是看一下这个人有多大的可能性是属于某病。 数据分析--分析方法全文共17页,当前为第1页。Logistic回归主要在流行病学中应用较多,比较常用的情形是探索某疾病的危险因素,根据危险因素预测某疾病发生的概率,等等。例如,想探讨胃癌发生的危险因素,可以选择两组人群,一组是胃癌组,一组是非胃癌组,两组人群肯定有不同的体征和生活方式等。这里的因变量就是是否胃癌,即"是"或"否",自变量就可以包括很多了,例如年龄、性别、饮食习惯、幽门螺杆菌感染等。自变量既可以是连续的,也可以是分类的。 数据分析--分析方法全文共17页,当前为第1页。 Logistic Regression的具体过程,包括:选取预测函数,求解Cost函数和J(θ),梯度下降法求J(θ)的最小值,以及递归下降过程的向量化(vectorization)。 基本原理 Logistic Regression和Linear Regression的原理是相似的,按照我自己的理解,可以简单的描述为这样的过程: (1)找一个合适的预测函数(Andrew Ng的公开课中称为hypothesis(假设)),一般表示为h函数,该函数就是我们需要找的分类函数,它用来预测输入数据的判断结果。这个过程时非常关键的,需要对数据有一定的了解或分析,知道或者猜测预测函数的"大概"形式,比如是线性函数还是非线性函数。 (2)构造一个Cost函数(损失函数),该函数表示预测的输出(h)与训练数据类别(y)之间的偏差,可以是二者之间的差(h-y)或者是其他的形式。综合考虑所有训练数据的"损失",将Cost求和或者求平均,记为J(θ)函数,表示所有训练数据预测值与实际类别的偏差。 (3)显然,J(θ)函数的值越小表示预测函数越准确(即h函数越准确),所以这一步需要做的是找到J(θ)函数的最小值。找函数的最小值有不同的方法,Logistic Regression实现时有的是梯度下降法(Gradient Descent)。 具体过程 (1)构造预测函数 Logistic回归虽然名字里带"回归",但是它实际上是一种分类方法,主要用于两分类问题(即输出只有两种,分别代表两个类别),所以利用了Logistic函数(或称为Sigmoid函数),函数形式为: Sigmoid 函数是一个取值在0和1之间的S型曲线,如下图所示: 数据分析--分析方法全文共17页,当前为第2页。下面左图是一个线性的决策边界,右图是非线性的决策边界。 数据分析--分析方法全文共17页,当前为第2页。 对于线性边界的情况,边界形式如下: 构造预测函数为: 函数的值有特殊的含义,它表示结果取1的概率,因此对于输入x分类结果为类别1和类别0的概率分别为: (2)构造Cost函数 Cost函数和J函数如下,它们是基于最大似然估计推导得到的。 (3)梯度下降法求J(θ)的最小值 求J(θ)的最小值可以使用梯度下降法,根据梯度下降法可得θ的更新过程: 事实上,采用梯度上升法和梯度下降法是完全一样的,这也是《机器学习实战》中采用梯度上升法的原因。 数据分析--分析方法全文共17页,当前为第3页。(4)梯度下降过程向量化 数据分析--分析方法全文共17页,当前为第3页。 《机器学习实战》中给出的实现代码确是实现了vectorization的,图所示代码的32行中weights(也就是θ)的更新只用了一行代码,直接通过矩阵或者向量计算更新,没有用for循环,说明确实实现了vectorization。 约定训练数据的矩阵形式如下,x的每一行为一条训练样本,而每一列为不同的特称取值: 约定待求的参数θ的矩阵形式为: θ更新过程可以改为: 综上所述,Vectorizati
【课程简介】 本课程适合所有对金融知识和MATLAB感兴趣的同学,通过本课程,你不仅可以学习到如何应用MATLAB,还可以学习到如何使用MATLAB进行金融数据处理与金融数据分析 【完整课程列表】 基于MATLAB的金融数据分析 金融MATLAB-第01,02章 金融市场与金融产品 MATLAB基础知识(共47页).ppt 基于MATLAB的金融数据分析 金融MATLAB-第03章 MATLAB与Excel文件的数据交换(共41页).ppt 基于MATLAB的金融数据分析 金融MATLAB-第05章 贷款按揭与保险产品 现金流分析案例(共44页).ppt 基于MATLAB的金融数据分析 金融MATLAB-第06章 随机模拟 概率分布与随机数(共33页).ppt 基于MATLAB的金融数据分析 金融MATLAB-第07章 cftool数据拟合 GDP与用电量增速分析(共22页).ppt 基于MATLAB的金融数据分析 金融MATLAB-第08章 策略模拟 组合保险策略分析(共32页).ppt 基于MATLAB的金融数据分析 金融MATLAB-第09章 KMV模型求解 方程与方程组的数值解(共31页).ppt 基于MATLAB的金融数据分析 金融MATLAB-第10章 期权定价模型与数值方法(共23页).ppt 基于MATLAB的金融数据分析 金融MATLAB-第12章 马克维兹均值 方差模型(共19页).ppt 基于MATLAB的金融数据分析 金融MATLAB-第13章 投资组合绩效(共22页).ppt 基于MATLAB的金融数据分析 金融MATLAB-第17章 固定收益证券的久期与凸度(共12页).ppt 基于MATLAB的金融数据分析 金融MATLAB-第18章 利率的期限结构(共7页).ppt 基于MATLAB的金融数据分析 金融MATLAB-第22章 技术分析 指标计算与绘图(共8页).ppt

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值