正态分布、单 (双) 样本 T 检验_数据不吹牛的博客-程序员信息网

技术标签: python  数据分析  机器学习  人工智能  大数据  

本次来说说连续变量与分类变量(二分)之间的检验。

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

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

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

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

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

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

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

/ 01 / 正态分布

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

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

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

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

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

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

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

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

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

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

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

7e69078ed6315deb23821eba652d5e59.png

首先读取数据。

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()

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

bbcfd7d15d727b7d7dd057a811ce7176.png

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

# qqplot检验数据是否服从正态分布
sm.qqplot(df.score, fit=True, line='45')
plt.show()

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

87c8819844c9982c93866b9296e52696.png

区间估计,计算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())

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

4b9834e30ec8a3728f3d7f1d0681f92a.png

接下来用双样本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直接结算得出结果。

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

f57a877e7a6c92aae6dcbb056953961c.gif

 
  
●10个面试必会的统计学问题!
●品牌知名度分析
版权声明:本文为博主原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接和本声明。
本文链接:https://blog.csdn.net/SeizeeveryDay/article/details/121368933

智能推荐

Radar-based Feature Design and Multiclass Classification for Road User Recognition_人都傻了的博客-程序员信息网

摘要对单个样本的分类是一项复杂的任务,尤其是对于同一场景下有多个类或恶劣天气条件的挑战性场景。相对于完善的摄像系统,雷达传感器提供了一种正交的方式来测量此类场景。为了获得准确的分类结果,从测量数据中提取了50种不同的特征并对其性能进行了测试。从这些特征中,选择合适的子集并将其传递给随机森林和长短期记忆(LSTM)分类器,以获得雷达输入的类别预测。而且,表明了当数据集不够大时,为什么数据不平衡是...

keras中自定义 loss损失函数和修改不同样本的loss权重(样本权重、类别权重)_a flying bird的博客-程序员信息网_动态更新损失函数

首先辨析一下概念:1. loss是整体网络进行优化的目标, 是需要参与到优化运算,更新权值W的过程的2. metric只是作为评价网络表现的一种“指标”, 比如accuracy,是为了直观地了解算法的效果,充当view的作用,并不参与到优化过程一、keras自定义损失函数在keras中实现自定义loss, 可以有两种方式,一种自定义 loss function, 例如:# 方式...

【连载】关系型数据库是如何工作的?(16) - 查询管理器之Merge Join_努努要要的博客-程序员信息网_数据库操作merge join

归并连接是唯一的生成排序结果的连接方式。其可以划分为两步:排序操作:对两个输入结果集按照连接字段排序;归并操作:归并经过排序的结果集到一起。排序之前我们已经介绍过归并排序,在这归并排序是一个好的算法但不是最好的,如果内存足够会有更好的算法。 有些场景下数据集已经经过了排序,例如:如果表示自然排序的,比如一张按照索引组织数据的表;如果连接条件中的关系是一个索引;如果连接一个查询过程中已经

conda install nb_conda出错_可基大萌萌哒的马鹿的博客-程序员信息网_conda install nb_conda

问题:conda install nb_conda 一直solving environment,或者显示http400 换成pip install notebook 依旧不行,换成其他源,亲测此时中科大源有效 清华:https://pypi.tuna.tsinghua.edu.cn/simple 阿里云:http://mirrors.aliyun.com/pypi/simple/ 中国科技大学 https://pypi.mirrors.ustc.edu.cn/simple/ 华中理工大

RGB image Histogram 均衡和可视化matlab代码_大别山伧父的博客-程序员信息网_rgbimages

读取学校的手机拍摄图像“lpf.jpg”可视化三个通道的Histogram% Program to read in all the RGB color images in a folder and display the histograms of each color channel.function RGB_Histogram_Demo()% Change the current folder to the folder of this m-file.if(~isdeployed) cd(

c标签split_youz1976的博客-程序员信息网_c标签分割

1、场景:比如数据库图片表中,某字段保存着个多个图片的地址并用@隔离,但是在到达前段页面时仍然没有分割处理,那么只能在前端页面做分割处理了,下面以jsp为例。

随便推点

next数组求解详解_iamyvette的博客-程序员信息网_next数组

next数组求解详解,以串'ababaaababaa'为例

工业机器人机械拆装及电气拆装平台_9#月芳的博客-程序员信息网_工业机器人机电一体化拆装

ZNL-CZ06工业机器人机械拆装及电气拆装平台一、概述ZNL-CZ06工业机器人机械拆装及电气拆装平台是按照机器人制造总装车间的标准及机器人职业鉴定标准设计,配置为工业机器人完整机器人本体和控制柜,1台微型电动葫芦,1台液压积车、机器人机械拆装和电气拆装所必须配备的工具工装等。ZNL-CZ06型 工业机器人机械拆装及电气拆装平台通过机械和电气实训拆装,能让学生全面认识机构人结构、机械装调。工业机器人是一门高度交叉的前沿学科,机器人技术是集力学、机械学、生物学、人类学、计算机科学与工程、控制论与控制工程

springboot 项目中,如何在jsp页面获取contextPath_生产队队长的博客-程序员信息网

参考:https://blog.csdn.net/Javaer_dog/article/details/83153613

php接口限制流量,php如何对Api接口限流_庄大卫的博客-程序员信息网

在开发高并发系统时有三把利器用来保护系统:缓存、降级和限流缓存: 缓存的目的是提升系统访问速度和增大系统吞吐量。降级: 降级是当服务出现问题或者影响到核心流程时,需要暂时屏蔽掉,待高峰或者问题解决后再打开。限流: 限流的目的是通过对并发访问/请求进行限速,或者对一个时间窗口内的请求进行限速来保护系统,一旦达到限制速率则可以拒绝服务、排队或等待、降级等处理。接口限流的常用算法:0x00 计数器法计数...

期权基础:期权的价格组成 , 什么是虚值期权平值期权实值期权_qiquan2021的博客-程序员信息网_虚值期权 csdn

前面简单介绍了50ETF期权和商品期权,期权的买方和期权的卖方有什么不同,如何交易本期介绍期权的一些基础术语打开一款交易软件,你会看到这样的一个T型报价左边是看涨期权的报价,右边是看跌期权的报价中间有多个价位,那么有什么不同呢?中间多个价位之前介绍了是行权价,也就是到期可以按照此价格买入或者卖出资产期权的价格分为两部分。不考虑交易费用和期权费的情况下,期权买方立即执行期权合约可获取的收益。如果收益大于0,则期权具有内在价值(内涵价值)。例如一个看涨期权,行权价是8元,而标的物现在价格是1.

python核心编程--第六章_weixin_33873846的博客-程序员信息网

为什么80%的码农都做不了架构师?>>> ...

推荐文章

热门文章

相关标签