正态分布(normal distribution)与偏态分布(skewed distribution)

分享一下我老师大神的人工智能教程!零基础,通俗易懂!http://blog.csdn.net/jiangjunshow

也欢迎大家转载本篇文章。分享知识,造福人民,实现我们中华民族伟大复兴!

                       

存在正太分布的概念,自然也少不了偏态分布。

  • 正态分布(normal distribution)
  • 偏态分布(skewed distribution)
    • 左偏态:left skewed distribution,负偏态(negatively skewed distribution),以尾部命名,左偏态或者叫负偏态的尾部,主要在左侧;
    • 右偏态:right skewed distribution,正偏态(positively skewed distribution),同样地,右偏态或者叫正偏态的尾部,则集中在右侧;
  • 正态分布还是偏态分布(左偏态/右偏态)在函数图像上容易分辨,在统计数据上,也很容易分别,比如正偏态分布,mean > median,对于负偏态,mean < median,


这里写图片描述

1. 正态分布数字特征

  • 均值或者期望:

    E[x]=xN(μ,σ2)dx=μ

           

给我老师的人工智能教程打call!http://blog.csdn.net/jiangjunshow
这里写图片描述
### 关于正态分布的代码实现 正态分布(Skew Normal Distribution)是一种扩展的标准正态分布模型,允许引入不对称性。可以通过调整形状参数来控制分布斜程度。以下是基于 Python 的具体实现方式。 #### 使用 `scipy` 实现正态分布 Python 中的 `scipy.stats.skewnorm` 提供了正态分布的支持。下面是一个完整的例子: ```python import numpy as np from scipy.stats import skewnorm import matplotlib.pyplot as plt # 定义正态分布的形状参数 (a),均值 (loc) 和标准差 (scale) shape_parameter = 5 # 形状参数 a 控制斜方向和程度 mean_value = 0 # loc 参数表示位置(即均值) std_deviation = 1 # scale 参数表示尺度(标准差相关) # 创建一个正态分布对象 skewed_distribution = skewnorm(shape_parameter, loc=mean_value, scale=std_deviation) # 绘制概率密度函数 (PDF) x_values = np.linspace(skewed_distribution.ppf(0.01), skewed_distribution.ppf(0.99), 100) pdf_values = skewed_distribution.pdf(x_values) plt.plot(x_values, pdf_values, label=f'Skewness={shape_parameter}') plt.title('Skew Normal Distribution') plt.xlabel('X Values') plt.ylabel('Probability Density Function (PDF)') plt.legend() plt.show() # 随机抽样 random_samples = skewed_distribution.rvs(size=1000) print(random_samples[:10]) # 打印前十个样本 ``` 上述代码展示了如何定义并可视化正态分布的概率密度函数,并从中抽取随机样本[^4]。 --- #### R 语言中的正态分布实现 在 R 语言中,可以利用 `sn` 包完成正态分布的相关操作。如果尚未安装该包,则需先运行以下命令进行安装: ```r install.packages("sn") ``` 下面是具体的实现过程: ```r library(sn) # 设置正态分布的参数 alpha <- 5 # 斜参数 alpha xi <- 0 # 位置参数 xi (类似于均值) omega <- 1 # 尺度参数 omega (类似于标准差) # 定义正态分布的对象 distribution <- make.sn(xi = xi, Omega = matrix(omega^2, nrow = 1), alpha = c(alpha)) # 计算 PDF 并绘图 x_values <- seq(-3, 3, length.out = 100) pdf_values <- dsn(x_values, location = xi, scale = omega, shape = alpha) plot(x_values, pdf_values, type="l", main="Skew-Normal Distribution", xlab="Values of X", ylab="Density") # 抽取随机样本 set.seed(123) # 设定种子以便结果可重复 samples <- rsn(n = 1000, location = xi, scale = omega, shape = alpha) head(samples) # 显示前几个随机样本 ``` 此代码片段实现了正态分布在 R 中的建模、绘图以及随机采样的功能[^3]。 --- ### 总结 无论是通过 Python 还是 R 语言,都可以方便地构建正态分布模型。对于 Python 用户而言,推荐使用 `scipy.stats.skewnorm`;而对于 R 用户来说,`sn` 包提供了强大的支持工具。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值