大家好,今天来为大家分享深入解析:Python在数据统计分析中的应用技巧的一些知识点,和的问题解析,大家要是都明白,那么可以忽略,如果不太清楚的话可以看看本篇文章,相信很大概率可以解决您的问题,接下来我们就一起来看看吧!
2. 小样本数据的正态性检验
(1) 用途夏皮罗-威尔克检验方法(Shapiro-Wilk)用于检验参数提供的一组小样本数据线是否符合正态分布。统计量越大,数据越符合正态分布,但大W值往往出现在非正态分布的小样本数据中。需要查表来估计其概率。由于原假设是符合正态分布,因此当P值小于指定的显着性水平时,就意味着不符合正态分布。
正态性检验是数据分析的第一步。数据是否符合正态性决定了后续使用不同的分析和预测方法。当数据不符合正态分布时,我们可以使用不同的变换方法,将非正态状态转化为正态分布后,再使用相应的统计方法进行下一步。
(2) 示例来自scipy import stats
将numpy 导入为np
np.random.seed(12345678)
x=stats.norm.rvs(loc=5, scale=10, size=80) # loc 是均值,scale 是方差
打印(统计数据。夏皮罗(x))
# 运行结果: (0.9654011726379395, 0.029035290703177452)(3) 结果分析返回结果p-value=0.029035290703177452,小于指定的显着性水平(通常为5%),则拒绝假设:x不服从正态分布。
3. 检验样本是否服务某一分布
(1) 用途Kolmogorov-Smirnov 检验用于检验样本数据是否服从某种分布,仅适用于连续分布的检验。在以下示例中使用它来测试正态分布。
(2) 示例来自scipy import stats
将numpy 导入为np
np.random.seed(12345678)
x=stats.norm.rvs(loc=0,比例=1,大小=300)
print(stats.kstest(x,"norm"))
# 运行结果:KstestResult(statistic=0.0315638260778347, pvalue=0.9260909172362317)(3) 结果分析生成300个服从N(0,1)标准正态分布的随机数,用k-s测试数据是否服从正态分布,并提出假设:x来从正态分布。最终返回的结果p-value=0.9260909172362317大于指定的显着性水平(通常为5%),那么我们不能拒绝假设:x服从正态分布。这并不意味着x服从正态分布就一定是正确的,而是没有足够的证据证明x不服从正态分布。因此我们的假设是x 服从正态分布。如果p值小于我们指定的显着性水平,那么我们肯定可以拒绝所提出的假设,并认为x肯定不服从正态分布。这种拒绝是完全正确的。
4.方差齐性检验
(1) 用途方差反映一组数据与其平均值的偏差。方差齐性检验用于检验两组或多组数据与其均值的偏差是否存在差异。这也是许多测试和算法的先决条件。
(2) 示例来自scipy import stats
将numpy 导入为np
np.random.seed(12345678)
rvs1=stats.norm.rvs(loc=5,scale=10,size=500)
rvs2=stats.norm.rvs(loc=25,scale=9,size=500)
打印(统计数据.leven(rvs1,rvs2))
# 运行结果:LeveneResult(statistic=1.6939963163060798, pvalue=0.19337536323599344)(3) 结果分析返回结果p-value=0.19337536323599344,大于指定的显着性水平(假设为5%),则认为两组数据具有方差同质性。
5. 图形描述相关性
(1) 用途最常用的二变量相关性分析是用图形来描述相关性。图表的横轴是一个变量,纵轴是另一变量。画一个散点图,从图中可以直观的看出。从相关的方向和强度来看,线性正相关一般从左下到右上形成一个图形;负相关从左上到右下形成一个图,从图中还可以观察到一些非线性相关。
(2) 示例导入statsmodels.api 作为sm
将matplotlib.pyplot 导入为plt
数据=sm.datasets.ccard.load_pandas().data
plt.scatter(data["INCOMESQ"], data["INCOME"])(3) 结果分析从图中我们可以看到明显的正相关趋势。
6. 正态资料的相关分析
(1) 用途皮尔逊相关系数是反映两个变量之间线性相关程度的统计量。它用于分析两个正态分布连续变量之间的相关性。它通常用于分析自变量之间以及自变量与因变量之间的相关性。
(2) 示例来自scipy import stats
将numpy 导入为np
np.random.seed(12345678)
a=np.random.normal(0,1,100)
b=np.random.normal(2,2,100)
打印(统计数据.pearsonr(a,b))
#运行结果: (-0.034173596625908326, 0.73571128614545933)(3) 结果分析返回结果第一个值为相关系数,代表线性相关程度。其取值范围为[-1,1]。绝对值越接近1,表示有两个变量。相关性越强,绝对值越接近0,说明两个变量之间的相关性越差。当两个变量完全不相关时,相关系数为0。第二个值是p 值。统计上,当p值为0.05时,可以认为两个变量之间存在相关性。
7. 非正态资料的相关分析
(1) 用途排序数据的Spearman 相关系数,主要用于评估序贯变量之间的线性相关性。计算过程中,只考虑变量值的顺序(rank、rank或level),而不管变量值的大小。常用于计算类型变量的相关性。
(2) 示例来自scipy import stats
将numpy 导入为np
print(stats.spearmanr([1,2,3,4,5], [5,6,7,8,7]))
# 运行结果:SpearmanrResult(correlation=0.82078268166812329, pvalue=0.088587005313543812)(3) 结果分析返回结果第一个值为相关系数,表示线性相关程度。在此示例中,相关性接近1 表示正相关。第二个值是p 值。 p 值越小,相关性越显着。
8. 单样本T检验
(1) 用途单样本T 检验用于检验数据是否来自均值一致的总体。 T检验主要是以均值为核心的检验。注意,以下T检验都是双边T检验。
(2) 示例来自scipy import stats
将numpy 导入为np
np.random.seed(12345678)
rvs=stats.norm.rvs(loc=5, 比例=10, 大小=(100,2))
打印(stats.ttest_1samp(rvs,[1, 5]))
# 运行结果:本例生成了ttest_1sampresult(Statistic=Array([5.12435977, 1.07927393]), PVALUE=Array([1.47820719e-06, 2.83088106e-01]),100行的数组,TTEST_1SAMP第二个参数为分别对两列估计的平均值。第一列1.47820719e-06 小于指定的显着性水平(通常为5%),则认为差异显着,并且拒绝假设;第二列2.83088106e-01 大于指定的显着性水平,并且不能拒绝假设:它服从正态分布。
9. 两独立样本T检验
(3) 结果分析用于比较两组数据是否来自同一正态分布总体。注意:如果要比较的两组数据不满足方差齐性,则需要在ttest_ind()函数中添加参数equal_var=False。
(1) 用途来自scipy import stats
将numpy 导入为np
np.random.seed(12345678)
rvs1=stats.norm.rvs(loc=5,scale=10,size=500)
rvs2=stats.norm.rvs(loc=6,scale=10,size=500)
打印(stats.ttest_ind(rvs1,rvs2))
# 运行结果:Ttest_indResult(statistic=-1.3022440006355476, pvalue=0.19313343989106416)(2) 示例返回结果第一个值为统计量,第二个值为p值,pvalue=0.19313343989106416,大于指定显着水平(一般为5%)较大,不能拒绝假设,两组数据来自同一个总结,两组数据之间没有差异。
10. 配对样本T检验
(3) 结果分析配对样本T检验可以看作是单样本T检验的延伸。测试对象从一组独立样本从正态分布变为两组配对样本观测值之差。常用于比较同一受试者治疗前后的差异,或者根据某种情况配对并给予不同治疗的受试者之间是否存在差异。
(1) 用途来自scipy import stats
将numpy 导入为np
np.random.seed(12345678)
rvs1=stats.norm.rvs(loc=5,scale=10,size=500)
rvs2=(stats.norm.rvs(loc=5,scale=10,size=500) + stats.norm.rvs(scale=0.2,size=500))
打印(stats.ttest_rel(rvs1,rvs2))
运行结果:TTEST_RELRESULT (Statistic=0.24101764965300979, PVALUE=0.80964045811551)(2) 示例返回结果第一个值为统计值,第二个值为P-Value=0.809644 043445811551,显着水平(一般为指定的5%) ) 是大且无法拒绝假设。
11. 单因素方差分析
(3) 结果分析方差分析(ANOVA),也称为F 检验,用于检验两个或多个样本均值之间差异的显着性。方差分析主要考虑组间均值差异。
单向方差分析(One-wayAnova)是检验某个因变量的均值在受单一因素影响的多组样本中是否存在显着差异。
当因变量Y是数值,自变量X是类别值时,通常的做法是根据类别将实例分为几组
(1) 用途来自scipy import stats
a=[47,56,46,56,48,48,57,56,45,57] # 第1 组
b=[87,85,99,85,79,81,82,78,85,91] # 第2 组
c=[29,31,36,27,29,30,29,36,36,33] # 第3 组
打印(stats.f_oneway(a,b,c))
# 运行结果:F_onewayResult(statistic=287.74898314933193, pvalue=6.2231520821576832e-19)(2) 示例返回结果的第一个值是统计量,是用组间差异除以组间差异得到的。在上面的例子中,各组之间的差异非常小。大,第二个返回值p-value=6.2231520821576832e-19小于边界值(通常为0.05),拒绝原假设,即认为以上三组数据之间存在统计差异,并且无法确定哪两组不同。当只有两组数据时,效果与stats.leven相同。
12. 多因素方差分析
(3) 结果分析当两个或两个以上自变量对因变量产生影响时,可采用多因素方差分析法进行分析。它不仅考虑各个因素的主效应,而且考虑因素之间的交互作用。
(1) 用途从statsmodels.formula.api 导入ols
从statsmodels.stats.anova 导入anova_lm
将pandas 导入为pd
X1=[1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,2,2,2,2 ,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2]
X2=[1,1,1,1,1,1,1,1,1,1,2,2,2,2,2,2,2,2,2,2,1,1,1,1 ,1,1,1,1,1,1,2,2,2,2,2,2,2,2,2,2]
Y=[76,78,76,76,76,74,74,76,76,55,65,90,65,90,65,90,90,79,70,90,88,76,76,76 ,56,76,76,98,88,78,65,67,67,87,78,56,54,56,54,56]
数据={"T":X1,"G":X2,"L":Y}
df=pd.DataFrame(数据)
公式="L~T+G+T:G" # 公式
模型=ols(公式,df).fit()
打印(anova_lm(模型))
"""
运行结果:
df sum_sq Mean_sq F PR(F)
T 1.0 265.225 265.225000 2.444407 0.126693
G 1.0 207.025 207.025000 1.908016 0.175698
T:G 1.0 1050.625 1050.625000 9.682932 0.003631
残差36.0 3906.100 108.502778 NaN NaN
"""(2) 示例上面的程序定义了一个公式。式中,“~”用于隔离因变量和自变量,“+”用于分隔各个自变量,“:”表示两个自变量的交互作用。从返回结果的P值可以看出,各组之间在X1和X1的值上差异不大
13. 卡方检验
(3) 结果分析上面介绍的T检验是一种参数检验方法,卡方检验是一种非参数检验方法。相对而言,非参数测试对数据分布的要求更宽松,不需要大量的数据。卡方检验是计数数据的一种假设检验方法,主要比较理论频率与实际频率的符合程度。它经常用于特征选择。例如,测试男性和女性是否患有高血压是否存在差异。如果有差异,则说明性别与是否患有高血压有关。在后续分析中,需要将性别这个分类变量放入模型训练中。
基础数据有R行C列,所以俗称RC列联表,简称RC表。它是观测数据按两个或多个属性(定性变量)分类时列出的频数表。
(1) 用途将numpy 导入为np
将pandas 导入为pd
从scipy.stats 导入chi2_contingency
np.random.seed(12345678)
data=np.random.randint(2, size=(40, 3)) # 2 个类别,50 个实例,3 个特征
数据=pd.DataFrame(数据, 列=["A", "B", "C"])
contingency=pd.crosstab(data["A"], data["B"]) # 创建列联表
print(chi2_contingency(contingency)) # 卡方检验
"""
运行结果:
(0.36556036556036503, 0.54543425102570975, 1,
数组([[ 10.45, 8.55],
[ 11.55, 9.45]]))"""(2) 示例卡方检验函数的参数是列联表中的频率。返回结果的第一个值是统计值,第二个结果是p-value值,p-value=0.54543425102570975,大于指定的显着性水平(通常为5%),不能拒绝原假设,即相关性不显着。第三个结果是自由度,第四个结果数组是列联表的期望值分布。
14. 单变量统计分析
(3) 结果分析单变量统计描述是最简单的数据分析形式,其中分析的数据仅包含一个变量,并且不处理原因或关系。单变量分析的主要目的是通过对数据的统计描述来了解当前数据的基本情况,找到数据的分布模型。
单变量数据的统计描述。从集中趋势的角度来看,指标包括:均值、中位数、分位数、众数;从离散度的角度来看,指标包括:极差、四分位数、方差、标准差、一致性。方差和变异系数,从分布的角度来看,有偏度、峰度等,还有最大值、最小值(数值变量)、频率、构成比(分类或层次变量)等需要予以考虑。
此外,还可以使用统计图表来直观地显示数据分布特征,例如条形图、方形图、箱线图、频数多边形和饼图等。
15. 多元线性回归
(1) 用途多元线性回归模型(多元线性回归模型),因变量Y(测量数据)往往受到多个变量X的影响。多元线性回归模型用于计算每个自变量对因变量。它可以被认为是多维空间中点的线性拟合。
(1) 用途导入statsmodels.api 作为sm
数据=sm.datasets.ccard.load_pandas().data
模型=sm.OLS(endog=data["AVGEXP"], exog=data[["AGE","INCOME","INCOMESQ","OWNRENT"]]).fit()
打印(模型.摘要())
"""
运行结果:
OLS 回归结果
==============================================================================
部门。变量: AVGEXP R 平方: 0.543
Model: OLS 可调R平方: 0.516
方法: 最小二乘F 统计量: 20.22
日期: 星期四,2019 年1 月31 日概率(F 统计): 5.24e-11
时间: 15:11:29 对数似然: -507.24
编号观察: 72 AIC: 1022。
Df 残差: 68 BIC: 1032。
Df型号: 4
协方差Type: 非鲁棒
==============================================================================
coef std err t P|t| [0.025 0.975]
-------------------------------------------------- ----------------------------
年龄-6.8112 4.551 -1.497 0.139 -15.892 2.270
收入175.8245 63.743 2.758 0.007 48.628 303.021
收入Q -9.7235 6.030 -1.613 0.111 -21.756 2.309
自有54.7496 80.044 0.684 0.496 -104.977 214.476
==============================================================================
综合: 76.325 杜宾-沃森: 1.692
概率(综合): 0.000 Jarque-Bera (JB): 649.447
偏斜: 3.194 概率(JB): 9.42e-142
峰度: 16.255 条件87.5 号
==============================================================================
"""(2) 示例直接将返回结果中各变量的P值与0.05进行比较,以确定对应解释变量的显着性。 P0.05被认为具有统计显着性。从上面的例子可以看出,收入INCOME是最显着的。
16. 逻辑回归
(3) 结果分析当因变量Y为2个分类变量(或多个分类变量)时,可以使用相应的逻辑回归来分析每个自变量对因变量的影响。
(1) 用途导入statsmodels.api 作为sm
数据=sm.datasets.ccard.load_pandas().data
数据["OWNRENT"]=数据["OWNRENT"].astype(int)
model=sm.Logit(endog=data["OWNRENT"], exog=data[["AVGEXP","AGE","INCOME","INCOMESQ"]]).fit()
打印(模型.摘要())
"""
运行结果:
优化成功终止。
当前函数值: 0.504920
迭代8
Logit 回归结果
==============================================================================
部门。变量: 拥有者数量观察结果: 72
型号: Logit Df 残差: 68
方法: MLE Df 模型: 3
日期: 2019 年2 月1 日星期五伪R-squ. 0.2368
时间: 17:05:47 对数似然: -36.354
聚合: 真LL-Null: -47.633
LLR p 值: 4.995e-05
==============================================================================
coef std err z P|z| [0.025 0.975]
-------------------------------------------------- ----------------------------
平均值0.0002 0.001 0.228 0.820 -0.002 0.002
年龄0.0853 0.042 2.021 0.043 0.003 0.168
收入-2.5798 0.822 -3.137 0.002 -4.191 -0.968
收入Q 0.4243 0.126 3.381 0.001 0.178 0.670
==============================================================================
"""(2) 示例
【深入解析:Python在数据统计分析中的应用技巧】相关文章:
2.米颠拜石
3.王羲之临池学书
8.郑板桥轶事十则
用户评论
Python真是太牛了,做数据统计分析简直就是教科书水平!
有13位网友表示赞同!
最近在学习Python,感觉统计分析的功能很实用,可以拿来做各种数据可视化和报表生成。
有7位网友表示赞同!
之前用的Excel都快要崩溃了,自从使用Python,数据处理效率大大提高!
有6位网友表示赞同!
想了解一下哪些Python库适合做数据统计分析?有什么推荐的吗?
有8位网友表示赞同!
学习Python数据统计分析可以让我更好地理解数据背后的规律吗?
有13位网友表示赞同!
我有个项目需要统计大量用户行为数据,Python看起来很适宜!
有6位网友表示赞同!
这个课程学完能直接上手做实际的数据分析吗?
有8位网友表示赞同!
感觉Python的数据分析特性确实厉害,很多复杂问题都可以用简洁的代码解决。
有5位网友表示赞同!
学习Python数据统计分析,有没有一些入门教程可以推荐呢?
有16位网友表示赞同!
想了解一下Python中常用的数据可视化工具有哪些?
有16位网友表示赞同!
现在做数据分析越来越重要了,学习Python是很有必要的!
有7位网友表示赞同!
以前只知道Python编程,没想到它还能这么强大!
有18位网友表示赞同!
感觉Python数据统计分析课程的学习难度适中吧?
有5位网友表示赞同!
希望能在网上找到一些Python数据统计分析的实战案例,自己跟着实践一下!
有14位网友表示赞同!
学习Python数据统计分析可以拓宽我的职业技能范围吗?
有8位网友表示赞同!
我对Python数据可视化技术很有兴趣,我想深入了解它的应用场景。
有8位网友表示赞同!
学习Python数据统计分析需要掌握哪些基础知识?
有6位网友表示赞同!
有没有一些Python数据统计分析的社区可以加入?互相学习交流下!
有12位网友表示赞同!
看来Python的数据分析能力确实非常强大,我一定要好好学习一下!
有9位网友表示赞同!