数据特征分析-正太分布

期望值,即在一个离散性随机变量试验中每次可能结果的概率乘以其结果的总和。

若随机变量X服从一个数学期望为μ、方差为σ^2的正态分布,记为N(μ,σ^2),其概率密度函数为正态分布的期望值μ决定了其位置,其标准差σ决定了分布的幅度。当μ = 0、σ = 1时的正态分布是标准正态分布。正态分布的图示如下:

在实际场景中,数据可能不完全符合正态分布,因此需要对数据进行检验,验证是否符合正态分布。

一、通过直方图初步判断

df = pd.DataFrame(np.random.randn(1000)+2,columns=['value'])
fig,axes = plt.subplots(1,2,figsize = (10,4))
ax1 = axes[0]
ax1.scatter(df.index,df.values)ax2 = axes[1]
df.hist(bins = 20,alpha = 0.7,ax = ax2)
df.plot(kind = 'kde',secondary_y = True,ax = ax2)  #使用y轴作为副坐标轴

 

二、通过qq图判断

qq图通过把测试样本数据的分位数与已知分布进行比较,从而检验数据的分布情况。

qq图是一种散点图,对应于正态分布的qq图,就是有标准正态分布的分位数为横坐标、样本值为纵坐标的散点图。

参考直线:四分之一分位点和四分之三分位点,看散点是否落在这条线附近。

qq图绘制思路:

①数据清洗后进行排序(x(1)<x(2)<...<x(n))

②排序后,计算出每个数据对应的百分位p(i),即第i个数据x(i)为p(i)分位数,其中p(i) = (i-0.5)/n(pi有多种算法,该种最常用)

③绘制直方图 + qq 图,直方图作为参考

# qq图判断
df = pd.DataFrame(np.random.randn(1000)+2,columns=['value'])
mean = df['value'].mean()
std = df['value'].std()
print('平均值为%.2f,标准差为%.2f'%(mean,std))
df.sort_values('value',inplace = True)
df_r = df.reset_index(drop = False) #t变为DataFrame
df_r['p'] = (df_r.index-0.5)/len(df_r)
df_r['q'] = (df_r['value']-mean)/std
print(df_r.head())
fig,axes = plt.subplots(1,3,figsize = (20,4))
des = df['value'].describe()
# x1,y1 = 0.25,des['25%']
# x2,y2 = 0.75,des['75%']

ax1 = axes[0]
ax1.scatter(df.index,df['value'])ax2 = axes[1]
df['value'].hist(bins = 20,ax = ax2)
df['value'].plot(kind='kde',secondary_y = True,ax = ax2)ax3 = axes[2]
ax3.plot(df_r['p'],df_r['value'],'b')
# ax3.plot([x1,x2],[y1,y2],'r')
ax3.plot([0.25,0.75],[des['25%'],des['75%']],'r')

 

 

三、k-s检验

k-s是比较一个频率分布f(x)与理论分布g(x)的检测方法,将样本数据的累计频率分布与特定的理论分布(比如正态分布)进行比较,如果两者差距小,则推论样本分布取自某特定分布。

H0:样本的总体分布 服从 某特定分布

H1:样本的总体分布 不服从 某特定分布

f(x):样本的累计分布函数

g(x):理论分布的分布函数

D:f(x)-g(x)的绝对值的最大值,即max(abs(f(x)-g(x)))

根据D与D(u,a)比较,如果p>0.05则接受H0,p<0.05则拒绝H0接受H1.

from scipy import stats
data = np.random.randint(70,80,100)
df = pd.DataFrame(data,columns=['value'])
u = df['value'].mean()  #求均值
std = df['value'].std()  #求标准差
stats.kstest(df['value'],'norm',(u,std))
# KstestResult(statistic=0.12748380545258786, pvalue=0.07085249921876394)
# 结果中pvalue=0.07,大于0.05

 

k-s检验的推导过程

df = pd.DataFrame(data,columns=['value'])
u = df['value'].mean()  #求均值
std = df['value'].std()  #求标准差
print('样本均值%.2f,标准差%.2f'%(u,std))
s = df['value'].value_counts().sort_index()
df_s = pd.DataFrame({'血糖浓度':s.index,'频数':s.values})
df_s['累计频数'] = df_s['频数'].cumsum()
df_s['累计频率'] = df_s['累计频数']/df_s['频数'].sum()
df_s['标准化取值'] = (df_s['血糖浓度'] - u)/std
df_s['理论分布'] = [0.0764,0.1314,0.2090,0.3085,0.4247,0.5438,0.6628,0.7673,0.8508,0.9099]  #根据标准化取值查询正态分布表得到
df_s['D'] = abs(df_s['累计频率'] - df_s['理论分布'])
dmax = df_s['D'].max()
print('实际观测D值为%.4f'%dmax)
df_s['累计频率'].plot(style = '--r')
df_s['理论分布'].plot(style = '--g')
plt.legend(loc = 'upper left')   #红色虚线表示累计频率、绿色虚线表示理论分布的注释位置
# 样本均值74.64,标准差3.23
# 实际观测D值为0.1110

根据D值为0.11,查询显著性水平表,可得知p>0.1,即满足正态分布。

 

转载于:https://www.cnblogs.com/Forever77/p/11355131.html

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/391676.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

leetcode 338. 比特位计数

给定一个非负整数 num。对于 0 ≤ i ≤ num 范围中的每个数字 i &#xff0c;计算其二进制数中的 1 的数目并将它们作为数组返回。 示例 1: 输入: 2 输出: [0,1,1] 示例 2: 输入: 5 输出: [0,1,1,2,1,2] 解题思路 偶数&#xff1a;和偶数除以2以后的数字&#xff0c;具有相…

r语言调用数据集中的数据集_自然语言数据集中未解决的问题

r语言调用数据集中的数据集Garbage in, garbage out. You don’t have to be an ML expert to have heard this phrase. Models uncover patterns in the data, so when the data is broken, they develop broken behavior. This is why researchers allocate significant reso…

为什么不应该使用(长期存在的)功能分支

Isn’t the git history in the picture above nice to work with? There are probably many problems in that repository, but one of them is most definitely the use of feature branches. Let’s see how such a bad thing became such a common practice.上面图片中的g…

(转) Spring 3 报org.aopalliance.intercept.MethodInterceptor问题解决方法

http://blog.csdn.net/henuhaigang/article/details/13678023 转自CSDN博客&#xff0c;因为一个jar包没引入困扰我好长时间 &#xff0c;当时正在做spring AOP 的一个小测试&#xff0c;总在报错&#xff0c;最后发现自己是问题3&#xff0c;引入一个jar包得到了解决 一 开发环…

数据特征分析-相关性分析

相关性分析是指对两个或多个具备相关性的变量元素进行分析&#xff0c;从而衡量两个变量的相关密切程度。 相关性的元素之间需要存在一定的联系或者概率才可以进行相关性分析。 相关系数在[-1,1]之间。 一、图示初判 通过pandas做散点矩阵图进行初步判断 df1 pd.DataFrame(np.…

leetcode 354. 俄罗斯套娃信封问题(dp+二分)

给定一些标记了宽度和高度的信封&#xff0c;宽度和高度以整数对形式 (w, h) 出现。当另一个信封的宽度和高度都比这个信封大的时候&#xff0c;这个信封就可以放进另一个信封里&#xff0c;如同俄罗斯套娃一样。 请计算最多能有多少个信封能组成一组“俄罗斯套娃”信封&#…

fastlane use_legacy_build_api true

fastlane版本号&#xff1a;fastlane 1.108.0 Xcode版本号&#xff1a;8.1 MacOS版本号&#xff1a;10.12 使用fastlane打包 - Release / Ad-Hoc包时报错: [13:36:59]: There was an error exporting your application [13:36:59]: Unfortunately the new Xcode export API is …

获取所有权_住房所有权经济学深入研究

获取所有权Note from Towards Data Science’s editors: While we allow independent authors to publish articles in accordance with our rules and guidelines, we do not endorse each author’s contribution. You should not rely on an author’s works without seekin…

scala 单元测试_Scala中的法律测试简介

scala 单元测试Property-based law testing is one of the most powerful tools in the scala ecosystem. In this post, I’ll explain how to use law testing and the value it’ll give you using in-depth code examples.基于财产的法律测试是scala生态系统中最强大的工具…

getBoundingClientRect说明

getBoundingClientRect用于获取某个元素相对于视窗的位置集合。 1.语法&#xff1a;这个方法没有参数。 rectObject object.getBoundingClientRect() 2.返回值类型&#xff1a;TextRectangle对象&#xff0c;每个矩形具有四个整数性质&#xff08; 上&#xff0c; 右 &#xf…

robot:接口入参为图片时如何发送请求

https://www.cnblogs.com/changyou615/p/8776507.html 接口是上传图片&#xff0c;通过F12抓包获得如下信息 由于使用的是RequestsLibrary&#xff0c;所以先看一下官网怎么传递二进制文件参数&#xff0c;https://2.python-requests.org//en/master/user/advanced/#post-multi…

开发小Tips-setValue

字典添加数据请用 [dict setValue:value forKey:key] 代替 [dict setObject:value forKey:key] 复制代码这样在一些网络传参时不用考虑nil的情况&#xff0c;?

浏览器快捷键指南_快速但完整的IndexedDB指南以及在浏览器中存储数据

浏览器快捷键指南Interested in learning JavaScript? Get my JavaScript ebook at jshandbook.com有兴趣学习JavaScript吗&#xff1f; 在jshandbook.com上获取我JavaScript电子书 IndexedDB简介 (Introduction to IndexedDB) IndexedDB is one of the storage capabilities …

Java-Character String StringBuffer StringBuilder

Java Character 类 Character 类用于对单个字符进行操作character 类在对象包装一个基本类型char的值 char ch "a";char uniChar \u039A;char[] charArray {a, b, c};使用Character的构造方法创建一个Character类对象 Character ch new Character(a);Charact…

已知两点坐标拾取怎么操作_已知的操作员学习-第3部分

已知两点坐标拾取怎么操作有关深层学习的FAU讲义 (FAU LECTURE NOTES ON DEEP LEARNING) These are the lecture notes for FAU’s YouTube Lecture “Deep Learning”. This is a full transcript of the lecture video & matching slides. We hope, you enjoy this as mu…

缺失值和异常值处理

一、缺失值 1.空值判断 isnull()空值为True&#xff0c;非空值为False notnull() 空值为False&#xff0c;非空值为True s pd.Series([1,2,3,np.nan,hello,np.nan]) df pd.DataFrame({a:[1,2,np.nan,3],b:[2,np.nan,3,hello]}) print(s.isnull()) print(s[s.isnull() False]…

leetcode 503. 下一个更大元素 II(单调栈)

给定一个循环数组&#xff08;最后一个元素的下一个元素是数组的第一个元素&#xff09;&#xff0c;输出每个元素的下一个更大元素。数字 x 的下一个更大的元素是按数组遍历顺序&#xff0c;这个数字之后的第一个比它更大的数&#xff0c;这意味着你应该循环地搜索它的下一个更…

setNeedsDisplay看我就懂!

前言&#xff1a; setNeedsDisplay异步执行的。它会自动调用drawRect方法&#xff0c;这样可以拿到 UIGraphicsGetCurrentContext&#xff0c;就可以绘制了。而setNeedsLayout会默认调用layoutSubViews&#xff0c;处理子视图中的一些数据。 一、着手 我定义了一个UIView的子类…

如何使用ArchUnit测试Java项目的体系结构

by Emre Savcı由EmreSavcı 如何使用ArchUnit测试Java项目的体系结构 (How to test your Java project’s architecture with ArchUnit) In this post, I will show you an interesting library called ArchUnit that I met recently. It does not test your code flow or bu…

解决ionic3 android 运行出现Application Error - The connection to the server was unsuccessful

在真机上启动ionic3打包成的android APK,启动了很久结果弹出这个问题&#xff1a; Application Error - The connection to the server was unsuccessful 可能是我项目资源太多东西了&#xff0c;启动的时间太久了&#xff0c;导致超时了。 解决方案是在项目目录下的config.xml…