欢迎访问北单实体店微信:200833335

足球赛事

您现在的位置是: 主页 > 北单体育资讯 > 篮球资讯

篮球资讯

统计学简介:从基础到应用,轻松掌握统计学不再难

发布时间:2025-03-01 09:27 篮球资讯 作者:北单实体店微信:200833335
听说你已经被统计学劝退,被Python唬住……先别着急划走,看完这篇再说!先说结论,大多数情况下的学不会都不是知识本身难,而是被知识的传播者劝退的。...

统计学的两大方向

统计学主要分为描述性和推理性两大分支。描述性统计主要处理现有数据的统计量计算,目的是总体反映数据的特性。简单来说,就是对数据进行汇总和总结。比如,统计一个班级学生的成绩,通过计算平均分、最高分、最低分等,来了解学生的成绩情况。推断统计学通过抽样来了解全局特征,就像我们要研究一个城市的居民消费模式,便随机挑选部分居民作为样本,然后分析这些样本,从而推知整个城市居民的消费状况。

## 使用 numpy 库里的 mean 函数
import numpy as np
data =  [2,23,4,17,12,12,13,16]
print(np.mean(data))
# 12.375

# 使用 scipy 库里的 gmean 函数求几何平均数
from scipy import stats as sts
data = [2,23,4,17,12,12,13,16]
print(sts.gmean(data))
# 9.918855683110795

# 使用 scipy 库里的 hmean 函数求调和平均数
from scipy import stats as sts
data = [2,23,4,17,12,12,13,16]
print(sts.hmean(data))
# 6.906127821278071

# 使用 numpy 库里的 median 函数求中位数
import numpy as np
data =  [2,23,4,17,12,12,13,16]
print(np.median(data))
# 12.5

在实际应用场景中,描述统计学能让我们快速把握数据的整体情况。就像查看一家公司的员工月薪表格,通过计算平均值和中位数等指标,我们就能快速了解月薪的大致情况。在市场调研等众多领域,推断统计学发挥着至关重要的作用。企业通过调查小部分样本,就能推测出消费者对新产品的好恶,进而指导生产和营销策略。

# 使用 scipy 库里的 mode 函数求众数
from scipy import stats as sts
data =  [2,23,4,17,12,12,13,16]
print(sts.mode(data))
# ModeResult(mode=array([12]), count=array([2]))

from scipy import stats as sts  
data =  [2,23,4,17,12,12,13,16]
print(sts.scoreatpercentile(data,25)) #25分位数
print(sts.scoreatpercentile(data,75)) #75分位数
10.0
16.25

import seaborn as sns
data = [2,23,4,17,12,12,13,16]
# 使用sns.boxplot()函数绘制箱线图
sns.boxplot(data=data)

离散程度的比较

当比较不同变量或数组的离散性时,如果它们的均值和度量单位相同,我们便可以采用常规的评估方法。例如,若两组学生的数学成绩均值相等,并且都用百分制来评分,我们就可以直接观察这两组成绩的波动。但若均值或计量单位不同,我们就需要使用变异系数来评估它们的离散性。

import numpy as np
data =  [2,23,4,17,12,12,13,16]
print(np.ptp(data))
# 21

from scipy import stats as sts
data =  [2,23,4,17,12,12,13,16]
print(sts.scoreatpercentile(data,75)-sts.scoreatpercentile(data,25))
# 6.25

from scipy import stats as sts
data =  [2,23,4,17,12,12,13,16]
print(sts.tvar(data,ddof = 1))# ddof=1时,分母为n-1;ddof=0时,分母为n
#46.55357142857143

金融圈内,股票的价位和涨幅各有差异,平均水平和波动范围也不尽相同。这时,变异系数能公正地反映出价格的分散程度,帮助投资者判断风险。所以,在处理复杂数据时,变异系数的作用极为关键。

from scipy import stats as sts
data = [2,23,4,17,12,12,13,16]
print(sts.tstd(data,ddof = 1))# ddof=1时,分母为n-1;ddof=0时,分母为n
# 6.823017765517794

变异系数

from scipy import stats as sts
data = [2,23,4,17,12,12,13,16]
print(sts.tstd(data)/sts.tmean(data))
# 0.5513549709509329

from scipy import stats as sts
data = [2,23,4,17,12,12,13,16]
print(sts.skew(data,bias=False)) # bias=False 代表计算的是总体偏度,bias=True 代表计算的是样本偏度
# -0.21470003988916822

变异系数,又称离散系数,它是通过比较数据的极差、四分位差或标准差等离散指标与算术平均数得出的比值。这一指标全面展示了数据的波动情况和平均状况。比如在体育赛事中,若只用标准差来衡量运动员成绩的稳定性,可能会因为运动员平均成绩的不同而出现错误判断。然而,变异系数却能同时兼顾平均成绩和成绩的波动性。

from scipy import stats as sts
data = [2,23,4,17,12,12,13,16]
print(sts.kurtosis(data,bias=False)) # bias=False 代表计算的是总体峰度,bias=True 代表计算的是样本峰度
# -0.17282884047242897

import numpy as np
import seaborn as sns

mean = 3  # 均值
std = 4  # 标准差
size = 1000  # 生成1000个随机数

data = np.random.normal(mean, std, size=size)
sns.histplot(data, kde=True)

库里传值得买吗_那本库里传比较好_库里传书

在处理数据时,变异系数能帮助我们筛选出可靠的数据。比如,企业在衡量不同供应商产品质量是否稳定时,如果产品规格和平均质量有差距,通过计算变异系数,可以更准确地选出质量更稳定的供应商。

import numpy as np
import seaborn as sns

size = 1000  # 生成1000个随机数

data = np.random.standard_normal(size=size)
sns.histplot(data, kde=True)

常用概率分布

import numpy as np
import seaborn as sns

df = 10  # 自由度
size = 1000  # 生成1000个随机数

data = np.random.standard_t(df, size=size)
sns.histplot(data, kde=True)

t分布、F分布和卡方分布是统计学中常用的三大概率分布。t分布主要用于估计样本平均值,特别是在样本数量不多时,它能准确描述样本平均值的分布情况。例如,在进行小规模实验时,我们可以运用t分布来推断样本的平均效果。F分布特别适用于比较不同总体的方差差异,若要判断多个总体的方差是否存在显著的不同,F分布就能发挥其作用。而卡方分布则是用来检验数据的拟合程度,主要是为了确认实际观测到的数据是否与理论上的分布模式相符合。

在医学研究中,t分布常被用来估算小样本药物疗效的平均值,以此判断药物疗效是否显著。F分布则用于比较不同治疗方案的效果差异,以挑选出更稳定且有效的方案。至于卡方分布,它主要用于检验疾病实际发病率与理论模型是否一致。

import numpy as np
import seaborn as sns

dfn = 5  # 分子自由度
dfd = 10  # 分母自由度
size = 1000  # 生成1000个随机数

data = np.random.f(dfn, dfd, size=size)
sns.histplot(data, kde=True)

假设检验

import numpy as np
import seaborn as sns

df = 5  # 自由度
size = 1000  # 生成1000个随机数

data = np.random.chisquare(df, size)
sns.histplot(data, kde=True)

在假设检验中,我们依据对特定值与样本平均数差异是否知晓,将其分为两种情形。比如,若某厂商声称其产品平均数,那便需抽样核实。若抽样结果显示样本平均数与宣称的平均数不符,例如低于500克,那么我们便可以假设总体平均数低于500克,这便是一种单侧检验。相对的,如果备择假设使用不等号,则进行的是双侧检验。

注:本节作为延伸阅读,初学者简单了解即可

在食品生产中,规定产品重量需平均达到500克。不过,抽样检验显示平均数可能不准确。因此,我们需用假设检验来确认这种偏差是否超出了标准。操作时,需针对问题科学设定原假设和备择假设,并决定使用单侧或双侧检验,以保证结论的可靠性。

卡方检验

卡方检验依据卡方分布原理,主要用来研究定性数据的差异,其检验过程是通过频数分析来实现的。在假设检验领域,我们知道这种方法能够揭示特定方差和样本方差之间是否存在显著差异。除此之外,它还涵盖了卡方拟合度检验,该检验旨在评估一个分类变量的实际观测比例是否与预期比例相符。

进行市场调查时,我们运用卡方优度检验来衡量消费者偏好比例与预期值是否相符。在医学研究中,这一检验方法也常被用来验证不同年龄段患病率的实际分布是否与理论预测相吻合。总体来看,卡方检验在分析分类数据和比例关系时,具有很高的实用价值。

import numpy as np
import scipy.stats
from scipy import stats as sts


def mean_interval(mean=None, sigma=None,std=None,n=None,confidence_coef=0.95):
    """
    mean:样本均值
    sigma: 总体标准差
    std: 样本标准差
    n:   样本量
    confidence_coefficient:置信系数
    confidence_level:置信水平 置信度
    alpha:显著性水平
    功能:构建总体均值的置信区间
    """

    alpha = 1 - confidence_coef
    z_score = scipy.stats.norm.isf(alpha / 2)            # z分布临界值
    t_score = scipy.stats.t.isf(alpha / 2, df = (n-1) )  # t分布临界值
   
    if n >= 30
        if sigma != None:
            me = z_score * sigma / np.sqrt(n)
            print("大样本,总体 sigma 已知:z_score:",z_score)
        elif sigma == None:
            me = z_score * std / np.sqrt(n)
            print("大样本,总体 sigma 未知 z_score",z_score)
        lower_limit = mean - me
        upper_limit = mean + me
    if n < 30 :
        if sigma != None:
            me = z_score * sigma / np.sqrt(n)
            print("小样本,总体 sigma 已知 z_score * sigma / np.sqrt(n) \n z_score = ",z_score)
        elif sigma == None:
            me = t_score * std / np.sqrt(n)
            print("小样本,总体 sigma 未知 t_score * std / np.sqrt(n) \n t_score = ",t_score)
            
        print("t_score:",t_score)
        lower_limit = mean - me
        upper_limit = mean + me
    
    return (round(lower_limit, 1), round(upper_limit, 1))

import numpy as np
data = np.array([52,44,55,44,45,59,50,54,62,46,54,42,60,62,43,42,48,55,57,56])

在使用这些统计方法时,大家是否遇到了一些挑战?欢迎点赞、分享,并在评论区分享您的见解!

x_bar = data.mean()
x_bar
# 51.5

x_std = sts.tstd(data,ddof = 1) #  ddof=1时,分母为n-1;ddof=0时,分母为n
x_std
# 6.840283158189472

mean_interval(mean=x_bar, sigma=None,std= x_std,  n=n, confidence_coef=0.95)

广告位