昨天介绍了两连续变量的相关分析,今天来说说连续变量与分类变量(二分)之间的检验。

通俗的来讲,就是去发现变量间的关系。

连续变量数量为一个,分类变量数量为两个。

总体:包含所有研究个体的集合。

样本:经过抽样总体中的部分个体。

均值:变量的数值之和除以变量的个数。

极差:变量的最大值与最小值之差。

方差,标准差反映数据的离散程度,其值越大,数据波动越大。

/ 01 / 正态分布

在实际情况里,总体的信息往往难以获取,所以需要抽样,通过样本来估计总体。

点估计和区间估计是通过样本来估计总体的两种方法。

那么样本是否能够代表总体就是关键点,样本需要具有代表性。

点估计:用样本统计量去估计总体参数。

区间估计:不同于点估计,能够提供待估计参数的置信区间和置信度。

区间估计用到了中心极限定理,表现为如果抽样多次,每次抽样都有一个均值,产生的多个均值服从正态分布。

就可以利用正态分布的性质,推断出样本均值出现在某区间范围的概率。

正态分布:关于均值左右对称的,呈钟形。且均值和标准差具有代表性。均值=中位数=众数。

在现实生活中,男女身高(性别有影响需区分开)、体重、考试成绩都是属于正态分布。

影响它们的变量都是独立互不影响的。

接下来对豆瓣电影TOP250里的电影评分进行分析。

首先读取数据。

import matplotlib.pyplot as plt

from scipy import stats

import seaborn as sns

import pandas as pd

# 读取文件

df = pd.read_csv('douban.csv', header=0, names=["quote", "score", "info", "title", "people"])

dom1 = []

# 清洗数据,获取国家列,1为中国,2为外国

for i in df['info']:

country = i.split('/')[1].split(' ')[0].strip()

if country in ['中国大陆', '台湾', '香港']:

dom1.append(1)

else:

dom1.append(0)

df['country'] = dom1

生成电影评分直方图,观察其是否符合正态分布。

# distplot:集合功能,kde:显示核密度估计图,fit:控制拟合的参数分布图形,本次为拟合正态分布

sns.distplot(df.score, kde=True, fit=stats.norm)

plt.show()

运行代码后得到下图,发现电影评分分布近似正态分布。

生成电影评分QQ图,观察电影评分与正态分布的接近程度。

# qqplot检验数据是否服从正态分布

sm.qqplot(df.score, fit=True, line='45')

plt.show()

运行代码后得到下图,其中样本点越靠近红色线说明变量越趋近正态分布,结论显而易见。

区间估计,计算95%保证程度下的区间估计范围。

# 标准差

se = df.score.std() / len(df) ** 0.5

# 均值下限

LB = df.score.mean() - 1.98 * se

# 均值上限

UB = df.score.mean() + 1.98 * se

print(LB, UB)

# 得到的结果

8.782710866637895 8.849289133362106

即在95%的置信度下,电影评分的总体均值位于区间「8.7827-8.8492」内。

定义函数,计算不同置信度下的置信区间。

def confint(x, alpha=0.05):

"""计算不同置信度下的置信区间"""

n = len(x)

xb = x.mean()

df = n - 1

tmp = (x.std() / n ** 0.5) * stats.t.ppf(1-alpha/2, df)

return {'Mean': xb, 'Degree of Freedom': df, 'LB': xb-tmp, 'UB': xb+tmp}

result = confint(df.score, 0.05)

print(result)

# 得到的结果

{'LB': 8.782886780076549, 'UB': 8.849113219923453, 'Degree of Freedom': 249, 'Mean': 8.816}

即在99%的置信度下,电影评分的总体均值位于区间「8.7828-8.8491」内。

/ 02 / t检验

01 假设检验

在研究变量时,对分布的性质进行一定的假设,然后通过抽样来检验假设是否成立。

这似乎与我们中学时代的反证法有点类似,假设需要证明的东西成立,然后去反推。

其中实际抽样结果与假设的差异程度可以用概率值表示,为「p-value」。

概率值越大意味着越无差异,越接近。

人为设定一个「p-value」的阈值将差异程度判断为「有差异」或「无差异」,这个阈值就是「显著性水平」。

目前接触的原假设都是设置为等值假设,本次假设电影评分均值为8.8。

显著性水平的设置根据样本容量,本次取显著性水平为0.05。

最后的结论就是「p-value」值小于显著性水平时,差异明显,有理由拒绝原假设。

「p-value」值大于显著性水平时,差异较小,那么就不能拒绝原假设。

这里书本没有对「p-value」如何查表取值详细解说,需要百度查询。

02 单样本t检验

单样本t检验是最基础的假设检验,其利用来自总体的样本数据,推断总体均值是否与假设的检验值之间存在显著差异。

P值大于显著性水平,则无法拒绝原假设。

P值小于显著性水平,则拒绝原假设。

下面在Python中进行单样本t检验,使用电影评分数据,假设均值为8.8分。

# stas:列联表

d1 = sm.stats.DescrStatsW(df.score)

print('t-statistic=%6.4f, p-value=%6.4f, df=%s' %d1.ttest_mean(8.8))

# 得到的结果

t-statistic=-2.0223, p-value=0.3422, df=249.0

P值为0.3422,如果规定显著性水平为0.05,那么就无法拒绝原假设。

即电影评分均值为8.8分的原假设成立。

03 双样本t检验

双样本t检验是检验两个样本均值的差异是否显著。

常用于检验某二分类变量区分下的某连续变量是否有显著差异。

本次使用豆瓣电影TOP250中中外国家电影评分数据。

研究电影评分受国家的影响是否显著(之前分析的结论是没什么影响)。

# 对数据分组汇总

print(df['score'].groupby(df['country']).describe())

得到结果如下,发现均值还是有一点点差异的。

接下来用双样本t检验来看这种差异是否显著。

在进行双样本t检验前,有三个基本条件需要考虑。

①观测之间独立(本次满足)

②两组均服从正态分布(本次满足)

①两组样本的方差是否相同(需检验)

上面的结果已经包含了样本评分均值的方差了,可是书里却说还需要进行方差齐性分析。

这一点不是很理解,就当多学点东西吧。

方差齐性检验的原假设为两组数据方差相同。

# levene:方差齐性检验

country0 = df[df['country'] == 0]['score']

country1 = df[df['country'] == 1]['score']

leveneTestRes = stats.levene(country0, country1, center='median')

print('w-value=%6.4f, p-value=%6.4f' %leveneTestRes)

# 得到的结果

w-value=0.5855, p-value=0.4449

P值为0.4449,若以0.05为显著性水平,则无法拒绝原假设。

即中国电影评分和外国电影评分的方差是相同的。

因此进行方差齐性的双样本t检验。

# equal_var=True:两组数据方差齐性

print(stats.stats.ttest_ind(country0, country1, equal_var=True))

# 得到的结果

Ttest_indResult(statistic=0.9331710237657628, pvalue=0.3516393015610625)

P值为0.35,若以0.05为显著性水平,则无法拒绝原假设。

说明中国电影评分和外国电影评分无显著差异。

/ 03 / 总结

学习这一部分内容,最大的困惑就是「p-value」的取值。

书上没讲明白如何用公式确定其值,只是通过Pyhton直接结算得出结果。

网上查取的资料也是零零散散,解释的不够全面。

文末点个赞,比心!!!

···  END  ···

python 方差齐性检验_Python数据科学:正态分布与t检验相关推荐

  1. python 方差齐性检验_Python数据科学:方差分析

    之前已经介绍的变量分析: ①相关分析:一个连续变量与一个连续变量间的关系. ②双样本t检验:一个二分分类变量与一个连续变量间的关系. 本次介绍: 方差分析:一个多分类分类变量与一个连续变量间的关系. ...

  2. python 桌面备忘录_Python数据科学备忘单

    python 桌面备忘录 The printable version of this cheat sheet 该备忘单的可打印版本 It's common when first learning Py ...

  3. 用python画统计图表_Python数据科学(九)- 使用Pandas绘制统计图表

    作者:许胜利 Python爱好者社区专栏作者 博客专栏:许胜利的博客专栏 1.信息可视化 因为人对图像信息的解析效率比文字更高,所以可视化可以使数据更为直观,便于理解,使决策变得高效,所以信息可视化就 ...

  4. python 数据挖掘图书_Python数据科学熊猫图书馆终极指南

    python 数据挖掘图书 Pandas (which is a portmanteau of "panel data") is one of the most important ...

  5. 支持向量机python人脸识别_Python 数据科学手册 5.7 支持向量机

    5.7 支持向量机 支持向量机(SVM)是一种特别强大且灵活的监督算法,用于分类和回归. 在本节中,我们将探索支持向量机背后的直觉,及其在分类问题中的应用. 我们以标准导入开始: %matplotli ...

  6. python数据科学实践 常象宇_python数据科学

    Python语言拥有大量可用于存储.操作和洞察数据的程序库,已然成为深受数据科学研究人员推崇的工具.本书以IPython.NumPy.Pandas.Matplotlib和Scikit-Learn这5个 ...

  7. 基于MaxCompute分布式Python能力的大规模数据科学分析

    简介: 如何利用云上分布式 Python 加速数据科学. 如果你熟悉 numpy.pandas 或者 sklearn 这样的数据科学技术栈,同时又受限于平台的计算性能无法处理,本文介绍的 MaxCom ...

  8. python方差齐性检验_【Python】统计科学之方差齐性检验

    首页 专栏 python 文章详情 0 统计科学之方差齐性检验 张俊红发布于 今天 10:38 1.前言 我们在方差分析里面有讲过,方差分析有一个很重要的前提就是叫方差齐性.这一篇来讲讲如何来检验方差 ...

  9. python做数据可视化的代码_Python数据可视化正态分布简单分析及实现代码

    Python说来简单也简单,但是也不简单,尤其是再跟高数结合起来的时候... 正态分布(Normaldistribution),也称"常态分布",又名高斯分布(Gaussiandi ...

最新文章

  1. 用计算机画曲线教案,小学信息技术曲线工具教案
  2. 非交互模式修改Ubuntu密码的命令
  3. python列表索引 end start_python学习--list列表操作
  4. Redis在Windows上编译
  5. 20211119 Latex中参考文献中的人名怪字母如何输入
  6. sql server 修改表结构语法大全
  7. mac win10 mysql_Mac装双系统Win10,安装MySQL遇到的问题
  8. Android一些关于分辨率和布局的设置
  9. unity读取json文件以及反序列化Dic示例
  10. python制作的炫酷动画_【实战】这个炫酷的播放粒子效果,你也可以学会!使用Web动画API制作...
  11. 一分钟了解TCP/IP网络通信协议
  12. iris鸢尾花数据集java_鸢尾花数据集(Iris)
  13. 《亲密关系》读后感_设计的直觉和亲密感
  14. 今天给大家推荐一个Cleaner One for mac(系统清理优化工具)
  15. 一名IT民工开通博客
  16. [MOT学习笔记]JDE损失函数详解
  17. rails consol reload!
  18. 对郭天祥老师的一些知识点的解读
  19. 报错:在实体引用中, 实体名称必须紧跟在 后面。
  20. 转载于掘金的vue3学习笔记

热门文章

  1. 命令行修改mysql密码
  2. java.io.IOException Failed to replace a bad datanode
  3. 推荐算法(推广搜)——广告和推荐有什么不同?
  4. 【Python】数据分析——直方图、散点图、线性回归、多项式回归、拟合度
  5. 基于空间金字塔网络的光流估计
  6. Java--敲重点!JDK1.8 HashMap特性及底层数组+单链表+红黑树知识(建议收藏)
  7. 我的input /不可能这么可爱
  8. c语言函数指针的多种赋值方法
  9. Google 出的C++轻量级日志库_GLog_了解_使用
  10. sql注入登陆(菜鸟级)