参数检验与【非参数检验】及Python/SPSS/R/Stata实现

统计学 专栏收录该内容
45 篇文章 59 订阅

1 参数检验与非参数检验

在统计学中,统计推断指的是在对总体分布作出假定的情况下,从样本信息中对总体的某些特征作出一些推理(如参数,分布)。

而统计推断可以归为三大类:

  • 抽样分布(精确的与近似的)
  • 参数估计(点估计与区间估计)
  • 假设检验(参数检验与非参数检验)

这其中假设检验时统计学中最具特色的部分,统计味道甚浓。从建立假设,寻找检验统计量,构造拒绝域(或者计算P值),到最后作出判断等各个步骤都体现出了统计思想的亮点。

关于假设检验中,参数检验与非参数检验对比如下:

参数检验非参数检验
已知分布为假设条件,对总体参数进行区间估计或假设检验不需要严格的前提假设,即不依赖总体分布的具体形式和检验分布(如位置)是否相同
适用场景在数据分布已知(正态分布)或数据量大的情况下,利用样本数据推断总体参数(均值和方差)在数据分布末知或偏态,且样本量小的情况下,推断总体数据分布和参数。
检验对象总体参数 (如 μ , σ , λ , ⋯ \mu \text{,}\sigma \text{,}\lambda \text{,}\cdots μσλ )总体分布或参数
总体分布已知(如:正态分布、二项分布、泊松分布)未知(任意分布)
数据类型连续数据连续数据、离散数据、分类数据
对比指标 或 集中趋势指标平均数中位数
检验灵敏度和精确度
优点针对性较强,每种方法都有其特定的使用环境,并且利用数据信息充分,一旦符合使用条件,得出的结论会非常准确。应用范围广,简便,易掌握,对总体分布没有严格要求,对样本数据类型也没有过多要求,非正态、方差不齐等都能做,对数据要求不严 ,很适用于小样本
缺点对总体的分布要求较高,实际中通常无法满足使用条件。(如:正态性,总体方差齐性,相互独立)效能低,不能处理交互作用 ,对数据信息利用不充分

关于两者部分理论知识:参数检验与非参数检验

参数检验

假设样本所来自的总体分布已知(例如:总体服从正态分布),对总体分布中一些未知的参数进行统计推断,称为参数检验。

当我们在进行统计分析时,首先应该对数据进行一些探索性分析(如:绘制密度曲线,箱型图等),检验数据是否符合某类型的分布,总体分布是否已知(如:进行方差分析时,其基本假定是①各总体应服从正态分布②各总体满足方差齐性③各总体相互独立),只有在明确总体分布的前提下才可进行下一步的统计建模。

当然,如果数据资料不符合参数检验条件,可进行适当地变换,如属于大样本时,根据中心极限定理,也可以使用参数检验。

非参数检验

推荐文章:如何理解非参数检验?

如何用非参数检验,分析多个相关样本数据?

非参数检验思路总结,清晰理解就靠它了!

非参数检验的推断方法不涉及样本所属总体的分布形式,也不会使用均值、方差等统计量(总体参数),完全依靠样本数据的顺序、秩等信息进行分析。非参数检验用作参数检验的替代方法,通常在不符合参数检验的条件下使用。如果数据大致呈现"钟型"分布,则可以使用参数检验。

与参数检验相比,非参数检验对总体分布不做严格假定,又称为任意分布检验,特别适用于计量信息较弱的资料。

适用范围

  • 不满足参数检验的条件,且无适当的变换方法进行变换
  • 总体分布形式未知或分布类型不明的小样本数据(n<30,小样本);
  • 偏态分布的资料(非正态分布的资料):
  • 不满足参数检验条件的资料:各组方差明显不齐。
  • 个别数据偏大或数据一端或两端存在不确定值,如>1000
  • 有序分类变量求各等级之间的强度差别

使用场景:

在这里插入图片描述

如果直接符合或者经过变化后符合参数检验的条件,应该首先使用参数检验,因为参数检验的检验效能要高于非参数检验。尤其是在样本数较大的情况下,参数检验结果较为稳健,所以即使不服从正态分布,也会选择参数检验。

由于检验的功效是我们选择分析方法的首要因素,因此在实际工作中,我们还是优先使用参数检验,只有在数据特征不符合参数检验要求时,才考虑使用非参数检验。

注:对符合用参数检验的资料,如用非参数检验,会丢失信息,导致检验效率下降,犯第Ⅱ类错误的可能性比参数检验大。

参数检验方法

在这里插入图片描述
总结
1、参数检验是针对参数做的假设,非参数检验是针对总体分布情况做的假设。
2、二者的根本区别在于参数检验要利用到总体的信息,以总体分布和样本信息对总体参数作出推断;非参数检验不需要利用总体的信息。

2 非参数检验方法

在这里插入图片描述
图片来自:https://zhuanlan.zhihu.com/p/49472487

在这里插入图片描述

2.1 单样本总体分布检验

2.1.1 卡方检验

问题类型:检测实际观测频数与理论频数之间是否存在差异

原假设:观测频数与理论频数无差异

公式:

在这里插入图片描述

主要用途:

卡方检验最常见的用途就是考察某无序分类变量各水平在两组或多组间的分布是否一致

引自:(卡方检验-MBA智库百科

(1)检验某个连续变量的分布是否与某种理论分布相一致。如是否符合正态分布是否服从均匀分布是否服从Poisson分布等。

(2)检验某个分类变量各类的出现概率是否等于指定概率。如在36选7的彩票抽奖中,每个数字出现的概率是否各为1/36;掷硬币时,正反两面出现的概率是否均为0.5。

(3)检验某两个分类变量是否相互独立。如吸烟(二分类变量:是、否)是否与呼吸道疾病(二分类变量:是、否)有关;产品原料种类(多分类变量)是否与产品合格(二分类变量)有关。

(4)检验控制某种或某几种分类因素的作用以后,另两个分类变量是否相互独立。如在上例中,控制性别、年龄因素影响以后,吸烟是否和呼吸道疾病有关;控制产品加工工艺的影响后,产品原料类别是否与产品合格有关。

(5)检验某两种方法的结果是否一致。如采用两种诊断方法对同一批人进行诊断,其诊断结果是否一致;采用两种方法对客户进行价值类别预测,预测结果是否一致。

列联表独立性检验 Python实现

例子:
在这里插入图片描述

或者

在这里插入图片描述
分析读者的阅读习惯是否与文化程度有关

原假设 H 0 H_0 H0:读者的阅读习惯是否与文化程度无关

如果是按照公式算,是这样

在这里插入图片描述
在这里插入图片描述

在这里插入图片描述

代码实现

在这里插入图片描述

from scipy.stats import chi2_contingency
from scipy.stats import chi2
import pandas as pd
import os

os.chdir(r'C:\Users\Administrator\Desktop')

# 列联表
df = pd.read_excel('info.xlsx',index_col='阅读习惯')

# 卡方独立性检验
stat, p, dof, expected = chi2_contingency(df)
print('卡方统计量:',stat)
print('P值:',p)
print('自由度:' ,dof)
print('期望频数')
print(expected)


# 根据P值进行显著性判断
alpha = 0.05
print('significance=%.3f, p=%.3f' % (alpha, p))
if p>alpha:
    print('目前没有足够的证据拒绝原假设,即读者的阅读习惯与文化程度无关')
else:
    print('拒绝原假设,即读者的阅读习惯与文化程度有关')


# 根据卡方统计量进行显著性判断
alpha = 0.05
# 临界值
critical = chi2.ppf(1-alpha, dof)
# 拒绝域
if abs(stat) >= critical:
    print('拒绝原假设,即读者的阅读习惯与文化程度有关')
else:
    print('目前没有足够的证据拒绝原假设,即读者的阅读习惯与文化程度无关')

    
# 利用公式    
from collections import Counter
def ChiSquared(observed, expected):
    total = 0.0
    for x, obs in observed.items():
        if isinstance(expected, Counter):
            exp = expected[x]
        else:
            exp = expected
        #print(obs, exp)
        total += (obs - exp)**2 / exp
    return total

在这里插入图片描述

library(readxl)
df <- read_excel("info.xlsx")
df = data.frame(df)
rownames(df)=df[,1]  #取出第一列
df=df[,-1]          #将第一列删除
df
print(chisq.test(df))

R语言实现

在这里插入图片描述

在这里插入图片描述

检验某个分类变量各类的出现概率是否等于指定概率——SPSS实现

例子:

在这里插入图片描述

在这里插入图片描述

原假设:

在这里插入图片描述

准备数据

在这里插入图片描述

数据--加权个案

在这里插入图片描述
在这里插入图片描述

4类豌豆个数之比为9:3:3:1
在这里插入图片描述

在这里插入图片描述

结果
在这里插入图片描述

2.1.2 二项分布检验

在生活中有很多数据的取值是二值的,例如,男性和女性,产品可以分成合格和不合格,投掷硬币分成出现正面和出现反面等。

二项分布定义:

在任意一次实验中,事件A只有发生与不发生两种情况,记事件A发生的概率为 P ,那么不发生的概率为 1-P。

如果在相同条件下,进行N次独立重复试验,用X表示这N次试验中事件A发生的次数,那么服从二项分布,记为

X ∼ B ( N , P ) X\sim B\left( N,P \right) XB(N,P)

也称为Bernolli伯努利分布

P ( X = k ) = C N k P k ( 1 − P ) N − k P\left( X=k \right) =C_{N}^{k}P^k\left( 1-P \right) ^{N-k} P(X=k)=CNkPk(1P)Nk

二项分布检验就是根据收集到的样本数据,推断总体分布是否服从某个指定的二项分布。其零假设是H0:样本来自的总体与所指定的某个二项分布不存在显著的差异。

问题类型:通过样本数据检验样本来自的总体是否服从指定的概率为P的二项分布

二项分布检验的过程:
(1)建立零假设和备择假设

  • H 0 H_0 H0:样本来自的总体服从指定P值的二项分布
  • H 1 H_1 H1:样本来自的总体不服从指定P值的二项分布

(2)构造统计量
当n>20时,可以构造统计量(德莫弗-拉普拉斯定理)

样本小于或等于30时,按照计算二项分布概率的公式进行计算;
样本数大于30时,计算的是Z统计量,认为在零假设下,Z统计量服从正态分布。

Z统计量的计算公式如下:

Z = k ± 0.5 − n p n p ( 1 − p ) Z=\frac{k\pm 0.5-np}{\sqrt{np\left( 1-p \right)}} Z=np(1p) k±0.5np
(3)设定显著水平和确定否定域
(4)计算统计量和做出统计决策

例子1:
某机器生产一种产品,当次品率不超过0.05时,认为机器工作正常,否则对机器检修。某天抽出15件产品,发现3件次品,问该天机器工作是否正常?

设该天生产的产品次品率为p,

检验问题:
H 0 : p ≤ 0.05 ↔ H 1 : p > 0.05 H_0:p\le 0.05\leftrightarrow H_1:p>0.05 H0:p0.05H1:p>0.05
例子2:

公司预计新出的产品合格率的比例为0.6,为了验证上述推断,公司从新产品中随机抽取32个进行检验,其中属于合格的有28个(用1表示),属于不合格的有4个(用2表示)。分析产品合格率是否同预期一致。

解答过程:
该问题是检验产品合格率是否同预期概率0.6一致,因此该问题转化为检验产品合格比例是否服从P值为0.6的二项分布。求解过程如下。

(1)建立检验问题

  • H 0 H_0 H0:产品合格率服从P值为0.6的二项分布
  • H 1 H_1 H1:产品合格率不服从P值为0.6的二项分布

python实现
在这里插入图片描述

from scipy.stats import binom_test

p = binom_test(x=28,n=32,p=0.6,alternative='two-sided')
# 根据P值进行显著性判断
alpha = 0.05
print('significance=%.3f, p=%.3f' % (alpha, p))
if p>alpha:
    print('目前没有足够的证据拒绝原假设,即产品合格率服从P值为0.6的二项分布')
else:
    print('拒绝原假设,即产品合格率不服从P值为0.6的二项分布')

结果

significance=0.050, p=0.001
拒绝原假设,即产品合格率不服从P值为0.6的二项分布

SPSS实现

输入数据,

在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

R语言实现

参考来自:https://zhuanlan.zhihu.com/p/159252184

在R语言中可以用 binom.test() 或 prop.test() 进行二项分布检验和估计

  • binom.test():计算精确的二项式检验。样本量较小时推荐使用
  • prop.test():当样本量较大(N> 30)时可以使用。它使用二项式的分布在较大样本中与正态分布近似的原理。

这两个函数的语法基本相同。

  binom.test(x, n, p = 0.5,
             alternative = c("two.sided", "less", "greater"),
             conf.level = 0.95)



  prop.test(x, n, p = NULL,
             alternative = c("two.sided", "less", "greater"),
             conf.level = 0.95,correct = TRUE))

在这里插入图片描述

alternative 是备择假设,“two.sided” 表示双边检验, “less” 表示单边检验的小于某一个值,"greater"表示单边检验的大于某一个值, conf.level = 0.95是置信水平,即1-α

接着上面的例子:

在这里插入图片描述

【未完】

2.1.3 游程检验

问题类型:检测一组观测值是否有明显变化趋势

原假设:无明显趋势

2.1.4 Kolmogorov—Smirnov检验

这个检验也称为科尔莫戈罗夫一斯米尔诺夫检验

问题类型:检验变量取值是否为正态分布

原假设:服从正态分布

2.2 两独立样本差异性检验

2.2.1 Kolmogorov—Smirnov检验

2.2.2 Mann-Whitney U检验

用于检验两独立样本分布是否相同

2.2.3 Wilcoxon检验

2.2.4 Wald-Wolfowitz Runs检验

2.2.5 Moses Extreme Reactions检验

2.3 两配对样本差异性检验

2.3.1 Sign符号检验

用于检验两配对样本分布是否相同。

2.3.2 Wilcoxon符号秩检验

2.3.3 McNemar检验

2.3.4 Marginal Homogeneity检验(边际同质性检验)

2.4 多个独立样本差异性检验

2.4.1 Kruskal-Wallis H检验

用于检验两个及以上独立样本的分布是否相同。

2.4.2 中位数检验

2.4.3 Jonckheere-Terpstra检验

2.5 多个相关样本差异性检验

2.5.1 Friedman检验

2.5.2 Kendall协和系数检验

2.5.3 Cochran Q检验

  • 2
    点赞
  • 0
    评论
  • 20
    收藏
  • 打赏
    打赏
  • 扫一扫,分享海报

参与评论 您还未登录,请先 登录 后发表或查看评论
©️2022 CSDN 皮肤主题:程序猿惹谁了 设计师:我叫白小胖 返回首页

打赏作者

卖山楂啦prss

你的鼓励将是我创作的最大动力

¥2 ¥4 ¥6 ¥10 ¥20
输入1-500的整数
余额支付 (余额:-- )
扫码支付
扫码支付:¥2
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、C币套餐、付费专栏及课程。

余额充值