精华内容
下载资源
问答
  • Spring后端参数检验

    万次阅读 2020-09-10 15:29:14
    一:在Controller方法参数前加@Valid注解——校验不通过时直接抛异常 /** * 校验不通过时直接抛异常 * @param user * @return */ @PostMapping("/test1") public Object test1(@RequestBody @Valid User user) ...

    VO:

    package com.supcon.oms.controller.vo;
    
    import lombok.Data;
    import org.hibernate.validator.constraints.Length;
    
    import java.io.Serializable;
    
    /**
     * @author: zhaoxu
     * @date: 2020/9/9 9:42
     */
    @Data
    public class TTankVo implements Serializable {
        private static final long serialVersionUID = 4969052226883357109L;
        private Integer tankId;
    
        private String tankNo;
    
        private String equipmentType;
    
        private String tankName;
        
        @Length(min=0,max =1,message = "长度不能超过1")
        private String tankDescription;
    
        private String equipmentStatus;
    
        private String tankKeepwarm;
    
        private String tankStatus;
    
        private String tankFarmid;
    
        private String tankType;
    
        private Double tankDiameter;
    
        private Double tankHeight;
    
        private Double tankCapacityStandard;
    
        private Double liquidLevelTemperature;
    
        private Double tankCapacitySafe;
        private Integer omsSourceTarget;
    
        private Integer omsShare;
    
        private Integer omsShareDepth;
    
        private Integer omsOccupy;
    }
    

    一:在Controller方法参数前加@Valid注解——校验不通过时直接抛异常

        /**
     * 校验不通过时直接抛异常
     * @param user
     * @return
     */
    @PostMapping("/test1")
    public Object test1(@RequestBody @Valid User user) {
    	return "操作成功!";
    }
    

    调用时会抛出一个org.springframework.web.bind.MethodArgumentNotValidException异常:

    2019-04-21 11:35:28.600 WARN 10852 — [nio-8080-exec-4] .w.s.m.s.DefaultHandlerExceptionResolver : Resolved [org.springframework.web.bind.MethodArgumentNotValidException: Validation failed for argument [0] in public java.lang.Object com.example.validation.UserController.test1(com.example.validation.User) with 3 errors: [Field error in object 'user' on field 'createTime': rejected value [Mon Dec 31 08:00:00 CST 2018]; codes [Future.user.createTime,Future.createTime,Future.java.util.Date,Future]; arguments [org.springframework.context.support.DefaultMessageSourceResolvable: codes [user.createTime,createTime]; arguments []; default message [createTime]]; default message [需要是一个将来的时间]] [Field error in object 'user' on field 'age': rejected value [0]; codes [Min.user.age,Min.age,Min.java.lang.Integer,Min]; arguments [org.springframework.context.support.DefaultMessageSourceResolvable: codes [user.age,age]; arguments []; default message [age],1]; default message [年龄不能小于1岁]] [Field error in object 'user' on field 'name': rejected value []; codes [NotBlank.user.name,NotBlank.name,NotBlank.java.lang.String,NotBlank]; arguments [org.springframework.context.support.DefaultMessageSourceResolvable: codes [user.name,name]; arguments []; default message [name]]; default message [姓名不能为空]] ]

    ★使用这种的话一般结合统一异常处理器(或者Aspect、拦截器等)处理★
    在这里插入图片描述

    二:在Controller方法参数前加@Valid注解,参数后面定义一个BindingResult类型参数——执行时会将校验结果放进bindingResult里面,用户自行判断并处理

        /**
     * 将校验结果放进BindingResult里面,用户自行判断并处理
     * @param user
     * @param bindingResult
     * @return
     */
    @PostMapping("/test2")
    public Object test2(@RequestBody @Valid User user, BindingResult bindingResult) {
    	// 参数校验
    	if (bindingResult.hasErrors()) {
    		String messages = bindingResult.getAllErrors()
    			.stream()
    			.map(ObjectError::getDefaultMessage)
    			.reduce((m1, m2) -> m1 + ";" + m2)
    			.orElse("参数输入有误!");
    		throw new IllegalArgumentException(messages);
    	}
    	
    	return "操作成功!";
    }
    
    @Null	限制只能为null
    @NotNull	限制必须不为null
    @AssertFalse	限制必须为false
    @AssertTrue	限制必须为true
    @DecimalMax(value)	限制必须为一个不大于指定值的数字
    @DecimalMin(value)	限制必须为一个不小于指定值的数字
    @Digits(integer,fraction)	限制必须为一个小数,且整数部分的位数不能超过integer,小数部分的位数不能超过fraction
    @Future	限制必须是一个将来的日期
    @Max(value)	限制必须为一个不大于指定值的数字
    @Min(value)	限制必须为一个不小于指定值的数字
    @Past	限制必须是一个过去的日期
    @Pattern(value)	限制必须符合指定的正则表达式
    @Size(max,min)	限制字符长度必须在min到max之间
    @Past	验证注解的元素值(日期类型)比当前时间早
    @NotEmpty	验证注解的元素值不为null且不为空(字符串长度不为0、集合大小不为0)
    @NotBlank	验证注解的元素值不为空(不为null、去除首位空格后长度为0),不同于@NotEmpty,@NotBlank只应用于字符串且在比较时会去除字符串的空格
    @Email	验证注解的元素值是Email,也可以通过正则表达式和flag指定自定义的email格式
    Hiberate Validator还支持以下注解
    
    @Email	被注解的元素必须是电子邮箱地址
    @Length	被注释的字符串大小必须在指定的范围内
    @NotEmpty	注释的字符串必须非空
    @Range	注释的元素必须在合适的范围内
    
    展开全文
  • SPSS之“参数检验

    千次阅读 2020-07-06 18:14:33
    SPSS之“参数检验” 目录 简介 单样本t检验 两独立样本t检验 两配对样本t检验 <!-写这篇主要是作为个人的笔记,和操作步骤的查询-->

    简介

    	<!-主要作为个人的笔记,和操作步骤的查询-->
    	参数检验(比价均值)是根据样本数据推断总体特征的方法。
    	这种推断通常在以下两种情况下进行:
    	   参数检验:总体分布(多为正态分布)已知
    	   非参数检验:总体不是正态分布,甚至总体分布未知
    	 (注意拒绝小概率事件)
    

    检验前提:①正态分布;②两者间的比较

    检验步骤:
    提出零假设
    构造检验统计量
    计算检验统计量观测值的发生概率
    给定显著性水平,并作出统计决策

    参数检验主要有一下三种:
    单样本t检验(与理论值的比较)
    两独立样本t检验(样本来源不同的总体,样本来源互不相容)
    两配对样本t检验(样本同源,处于两种状态)

    单样本t检验

    案例:某年级的数学期末成绩平均分为70分,从某班抽取30份答卷。问该班平均分数与年级是否有显著差异?
    图1
    图2
    图3--输出
    结论:经单样本,该校语文测验成绩和全区平均分无显著此差异,(t=0.651,p=0.520>0.05)。
    注:这里的P即为sig。表中的置信区间默认95%,图2选项中可改(P值比较的0.05就是1-95%得来的,所以也要相应改动)。

    两独立样本t检验

    案例:分别从两个不同学校中抽取10位同学的英语成绩,问两校英语成绩有无显著差异?
    图4
    图5
    图6---输出
    结论:经过两独立样本T检验(t=-2.542,sig=0.02<0.05).所以A校与B校两校之间的英语成绩有显著差异。

    两配对样本t检验

    案例:有甲乙两种饲料,先给10只小白鼠喂甲饲料,测得钙留量;第二天再给同一批小白鼠喂乙饲料,测得钙留量。问不同饲料是否使白鼠体内的钙留量有显著差异?
    图7
    图8

    图9---输出
    结论:在显著水平0.05下,配对样本t检验统计量的概率sig=0.781>0.05,接受零假设,即认为饲料1与饲料2在老鼠体内的钙存留量无显著性差异。

    展开全文
  • 1、参数检验对比非参数检验 1.1、参数检验的定义: 在总体分布类型已知(如正态分布)的条件下,对其未知参数检验。 如 检验和方差分析,都是基于总体分布为正态分布、总体方差相等的前提下对总体均数进行的检验...

    一、配对资料的符号秩和检验

    1、参数检验对比非参数检验

    1.1、参数检验的定义:

    在总体分布类型已知(如正态分布)的条件下,对其未知参数检验。

    \large t检验和方差分析,都是基于总体分布为正态分布、总体方差相等的前提下对总体均数进行的检验。

    1.2、非参数检验的定义:

    若总体分布未知或已知总体分布与检验所要求的条件不符,经数据转换也不能使其满足参数检验的条件,这时需要采用一种不依赖于总体分布形式的检验方法。这种方法不是对参数进行检验,而是检验总体分布位置是否相同,因而称为非参数检验(nonparametric test)。

    1.3、非参数检验的适用条件:

    1. 总体分布类型不明

    2. 总体分布呈偏态分布

    3. 数据一端或两端有不确定值的资料

    4. 总体方差不齐

    5. 有序分类变量资料

    注意点:

    1.非参数检验是不依赖总体分布类型,也不对总体参数进行推断的一类统计方法。

    2.非参数检验不受总体分布的限制,适用范围广,但对服从参数检验条件的资料采用非参数检验进行分析时,会降低检验效能,增加犯II类错误的概率。

    3.有序分类变量资料选用非参数检验,可推断各等级强度的差别,而用R×C列联表\chi ^{2}检验,只能比较频数分布之间的差别(卡方检验能够证明两个群组之间存在差异,但是不能揭示这个差异是什么)。

    2、基于秩次的非参数检验

    秩和检验(rank sum test),是一类常用的非参数检验。

    秩和检验是首先将数据按从小到大,或等级从弱到强转换成秩后,再求秩和,计算检验统计量——秩和统计量,做出统计推断。

    2.1、配对资料的符号秩和检验

    例  对11份工业污水测定氟离子浓度(mg/L),每份水样同时采用电极法及分光光度法测定,结果见表。问就总体而言,这两种方法的测定结果有无差别?

    注意:首先需要进行正态性检验(对差值d_{i}进行正态性检验),这边我们运用到的是Shapiro–Wilk W检验,详细介绍可见《统计推断——正态性检验》。得到W=0.4561,P=0.0001,则差值d_{i}不符合正态分布,则不能使用配对t检验进行分析。

    Wilcoxon符号秩和检验

    1. 建立检验假设,确定检验水准

    \large H_{0}:差值的总体中位数等于0

    \large H_{1}:差值的总体中位数不等于0

    \large \alpha =0.05

    2. 计算检验统计量\large T

    (1) 求差值d

    (2) 编秩:依差值的绝对值由小到大编秩 ; 差值为0,不编秩,且总的对子数相应减少;差值的绝对值相等,称为相持(tie),取平均秩。

    样本号 氟离子浓度(mg/L) 差值di 差值di的绝对值 秩次-排序号 秩次-平均秩次 秩次-最终(加正负) T+ T-
    电极法 分光光度法
    1 10.5 8.8 1.7 1.7 4 4.5 4.5 43.5 -11.5
    2 21.6 18.8 2.8 2.8 9 9 9    
    3 14.9 13.5 1.4 1.4 3 3 3    
    4 30.2 27.6 2.6 2.6 8 8 8    
    5 8.4 9.1 -0.7 0.7 1 1.5 -1.5    
    6 7.7 7 0.7 0.7 2 1.5 1.5    
    7 16.4 14.7 1.7 1.7 5 4.5 4.5    
    8 19.5 17.2 2.3 2.3 6 6 6    
    9 127 155 -28 28 10 10 -10    
    10 18.7 16.3 2.4 2.4 7 7 7    
    11 9.5 9.5 0 0 - - -    
    编秩步骤
    1、先求差值di,并且di的绝对值,再升序排序。
    2、排除差值di等于0,不参与编秩,总体的对子数也应该相应减少。
    3、对差值相等的样本取平均秩次,如样本5和样本6,di的绝对值均为0.7,所以取平均秩次:(1+2)/2=1.5。
    4、根据差值di的正负号,赋予秩次正负号。
    5、正负秩分别相加求和:T+=43.5,T-=11.5。
       

    (3) 分别求正、负秩和:\large T_{+}=43.5,\large T_{-}=11.5

    (4) 确定统计量\large T\large T=43.5或\large T=11.5(统计量取这两个数中的任意一个数均可)

    3. 确定P值,做出推断

    (1) 查表法(\large n≤50)

    根据\large n(非零对子数)\large T值,查\large T界值

    \large n=10(第11份样本d_{i}=0,不参与统计),\large T=11.5或\large T=43.5,查表,得双侧\large P>0.10。按照\large \alpha=0.05水准不拒绝\large H_{0},故据此资料尚不能认为两法测定结果有差别。

    Wilcoxon配对符号秩和检验的基本思想

    在配对样本中,由于随机误差的存在,各对差值的产生不可避免,假定两种处理的效应相同,则差值的总体分布为对称分布,并且差值的总体中位数为0。若此假设成立,样本差值的正秩和与负秩和应相差不大,均接近n(n+1)/4 (总秩和的一半),即T-n(n+1)/4仅为抽样误差所致;当正负秩和相差悬殊,超出抽样误差可解释的范围时,则有理由怀疑该假设,从而拒绝\large H_{0}

    以下是总秩和的计算公式,其中n表示非零对子数(即d_{i}不为0),注意:此处的总秩和表示T_{+}T_{-}绝对值之和。

    (2) 正态近似法(\large n>50):作正态近似检验

    \large n>50时,T统计量服从均数为T-n(n+1)/4,标准差为\sqrt{n(n+1)(2n+1)/24}的正态分布。这个时候我们可以用以下公式做正态近似检验,其中,T表示计算出来的当前统计量,n表示非零对子数,0.5表示连续性校正系数。当相持的情况较多的时候,则计算出来的Z​​​​​​统计量会偏小,需要校正,t_{j}表示第j次相持的个数,如上面,第一次相持为0.7,相持的个数为2,第二次相持为1.7,相持的个数也为2。

    二、两组独立样本比较的秩和检验

    推断连续型变量资料或有序分类变量资料的两个独立样本代表的两个总体分布是否有差别

    1、两组连续型变量资料的秩和检验

    例 用两种药物杀灭钉螺,采集了14批活钉螺,随机分为两组分别用甲、乙药物,用药后清点钉螺的死亡数,并计算每批钉螺的死亡率(%),结果见表。问两种药物杀死钉螺的效果有无差别?

    Wilcoxon秩和检验

    注意:在以上两个独立样本当中,由于样本的例数太小,数据分布的类型难以判断,这边我们使用非参数检验的wilcoxon秩和检验进行分析。

    1. 建立检验假设,确定检验水准

    \large H_{0}:两种药物杀灭钉螺死亡率的总体中位数相等

    \large H_{1}:两种药物杀灭钉螺死亡率的总体中位数不相等

    \large \alpha =0.05

    2. 计算检验统计量\large T

    (1) 编秩:将两组数据混合,由小到大统一编秩;不同组遇到相同数据取平均秩次

    (2) 求各组秩和:以样本例数较小者为\large n_{1},其秩和为\large T_{1}

    (3) 确定统计量\large T:若n_{1}< n_{2},则T=T_{1},若n_{1}>n_{2},则T=T_{2},若n_{1}=n_{2},则T=T_{1}或者T=T_{2}

    3. 确定P值,做出推断

    (1) 查表法

    \large n_{1}≤10,且\large n_{2}-n_{1}≤10时,查T界值表。

    双侧0.01<\large P<0.02 (查表口诀:内大外小,如果当前统计量T值位于查表的T界值之内,则\large P值大于相应的概率值\large \alpha,如果当前统计量T值位于查表的T界值之外,则\large P值小于相应的概率值\large \alpha),界值表可看文末附表。

    按照\large \alpha=0.05水准,拒绝\large H_{0},可以认为两种药物杀灭钉螺的效果有差别。

    Wilcoxon秩和检验的基本思想

    假设含量为\large n_{1}\large n_{2}的两个样本(\large n_{1}\leq n_{2}​​​​​​),来自同一总体或分布相同的两个总体,则\large n_{1}样本的秩和\large T_{1}与其理论秩和
    \large n_{1}(N+1)/2(当n_{1}=n_{2},则为(N(N+1)/2)/2)相差不大,即\large [T_{1}-n_{1}(N+1)/2]仅为抽样误差所致。当二者相差悬殊,超出抽样误差可解释的范围时,则有理由怀疑该假设,从而拒绝\large H_{0}

    (2)正态近似法

    以下公式,T表示计算出来的当前统计量,0.5表示连续性校正系数,t_{j}表示第j次相持的个数,如上面,第一次相持为32.5,相持的个数为2,第二次相持为40.5,相持的个数也为3

    2、两组有序分类变量资料的秩和检验

    例 某医科大学营养教研室为了解居民体内核黄素营养状况,于某年夏冬两个季节收集成年居民口服5mg核黄素后4小时的负荷尿,测定体内核黄素含量,结果见表,试比较该地居民夏冬两个季节体内核黄素含量有无差别?

    1. 建立检验假设,确定检验水准

    \large H_{0}:夏冬两个季节居民体内核黄素含量的,总体分布位置相同

    \large H_{1}:夏冬两个季节居民体内核黄素含量的,总体分布位置不同

    \large \alpha =0.05

    2. 计算检验统计量\large T

    (1) 编秩:将两组数据合并,按等级由小到大统一编秩。先计算各等级合计数,并确定各等级秩次范围,求出各等级的平均秩次。

     例如:“缺乏”平均秩次为(1+32)/2=16.5。

    (2) 求各组秩和:各等级的平均秩次分别乘以各组在各等级的例数,再求和,即得到各组秩和。

    \large n_{1}=40\large n_{2}=44\large N=n_{1}+n_{2}=84

    \large T _{1} =16.5\times 10+48.5\times 14+74.5\times 16=2036

    \large T_{2} =16.5\times 22+48.5\times 18+74.5\times 4=1534

    (3) 确定统计量\large T值:若n_{1}< n_{2},则T=T_{1},若n_{1}>n_{2},则T=T_{2},若n_{1}=n_{2},则T=T_{1}或者T=T_{2}

    \large T=T_{1}=2036

    3. 确定P值,做出推断

    \large n_{1}=40,超出\large T界值表的使用范围,用正态近似法。其中,t_{j}表示第j次相持的个数,三次次相持个数分别为32,32,20,Z_{c}表示校正后的Z值。

    查标准正态分布表可知,\large P<0.001。按照\large \alpha=0.05水准,拒绝\large H_{0},接受\large H_{1},故可认为夏冬两个季节居民体内核黄素含量有差别。

    三、多组独立样本比较的秩和检验

    1、定量变量多组独立样本的秩和检验(Kruskal-Wallis H检验)

    例4 某医院用3种不同方法治疗15例胰腺癌患者,每种方法各治疗5例。治疗后生存月数见表,问这3种方法对胰腺癌患者的疗效有无差别?

    根据日常经验:生存时间是不符合正态分布的。 

    1. 建立检验假设,确定检验水准

    \large H_{0}:3种方法治疗后患者生存月数的总体中位数相等

    \large H_{1}:3种方法治疗后患者生存月数的总体中位数不全相等

    \large \alpha =0.05

    2. 计算检验统计量\large H

    (1) 编秩 将三组数据合并,其余步骤同两组定量变量资料

    (2) 求各组秩和\large R_{i}\large R_{1}=34\large R_{2}=60\large R_{3}=26

    (3) 确定检验统计量\large H值 :

    算出H_{c}\approx 6.39 。

    3. 确定\large P值,做出推断

    (1) 查\large H界值表

    当组数\large k=3,且各组例数\large n_{i}\leq 5时,可查\large H界值表得到\large P值。

    H_{c}\approx 6.39\large P<0.05。按照\large \alpha=0.05水准,拒绝\large H_{0},接受\large H_{1},故可认为3种方法治疗后胰腺癌患者的生存月数有差别。

    (2) 查\large \chi ^{2}界值表

    当组数或各组例数超出\large H界值表时,由于\large H_{0}成立时\large H值近似地服从\large \nu =k-1\large \chi ^{2}分布(k表示组数),此时可由\large \chi ^{2}界值表得到\large P值。

    2、有序变量多组独立样本的秩和检验

    例 某医院用3种方法治疗慢性喉炎,结果见表,问这3种方法的疗效是否有差别?

    1. 建立检验假设,确定检验水准

    \large H_{0}:3种治疗方法治疗效果的总体分布位置相同

    \large H_{1}:3种治疗方法治疗效果的总体分布位置不全相同

    \large \alpha =0.05

    2. 计算检验统计量\large H

    (1) 编秩 同两组有序分类变量资料

    (2) 求各组秩和:各组各等级的频数与平均秩次的乘积之和。

    \large R _{1}=32.5\times 24+96.5\times 26+183.5\times 72+358.5\times 186=83182

    \large R_{2}=32.5\times 20+96.5\times 16+183.5\times 24+358.5\times 32=18070

    \large R_{3}=32.5\times 20+96.5\times 22+183.5\times 14+358.5\times 22=13229

    (3) 确定检验统计量\large H值 :

    3. 确定\large P值,做出推断

    \large k=3,各组例数均大于5,可由\large \nu =3-1=2\large \chi ^{2} 界值表,得\large P<0.005。按照\large \alpha=0.05水准,拒绝\large H_{0},接受\large H_{1} ,故可认为3种方法治疗慢性喉炎的效果有差别。

    3、多个独立样本间的多重比较

     \overline{R_{i}}\overline{R_{j}}分别表示两对比组各自的平均秩次,n_{i}n_{j}分别表示两对比组的样本量,

    HK分别表示为总体处理的H值和组数,注意,K不是2。

    例 对例5资料做三个样本间的两两比较。

    1. 建立检验假设,确定检验水准

    \large H_{0}:第\large i种与第\large j种方法疗效的总体分布位置相同

    \large H_{1}:第\large i种与第\large j种方法疗效的总体分布位置不同

    \large \alpha =0.05

    2. 计算检验统计量\large t

    (1) 求各组平均秩次\large \overline{R_{i}},注意,此处和上面各疗效的平均秩次是不一样的。

    (2)列出两两比较计算表,求得\large t

     基于以上的值,我们可以计算出甲组和乙组的t值。

    同理可以算出其余对比组的t值。

    3. 确定\large P值,做出推断

    \large \nu =478-3=475(三组自由度相同)查\large t界值表,得\large P值。按照\large \alpha=0.05水准,甲组与乙组、甲组与丙组比较,均拒绝\large H_{0};而乙组与丙组比较不拒绝\large H_{0},故可认为3种方法治疗慢性喉炎疗效的差别主要存在于甲法与其他两法之间,而乙法与丙法间的疗效尚不能认为有差别。

    【附表】

     

     

     

     

    展开全文
  • 常用非参数检验 在用样本数据对总体信息做出统计推断时,通常要求抽样应满足随机性和独立性,因为几乎所有的抽样定理都是建立在数据独立的基础之上的。而在用样本数据对正态总体参数做出统计推断(例如参数估计和...

     常用非参数检验

    更多MATLAB数据分析视频请点击,或者在网易云课堂上搜索《MATLAB数据分析与统计》 http://study.163.com/course/courseMain.htm?courseId=1003615016

    在用样本数据对总体信息做出统计推断时,通常要求抽样应满足随机性和独立性,因为几乎所有的抽样定理都是建立在数据独立的基础之上的。而在用样本数据对正态总体参数做出统计推断(例如参数估计和假设检验)时,还要附加一个要求:样本数据应服从正态分布,这种数据分布类型已知的总体参数的假设称为参数假设检验。与参数假设检验相对应的还有非参数假设检验,例如分布的正态性检验,样本的随机性检验等,这类检验通常只假定分布是连续的或对称的,并不要求数据服从正态分布。

     1 游程检验

        在实际应用中,需要对样本数据的随机性和独立性作出检验,这要用到游程检验,它是一种非参数检验,用来检验样本数据的随机性,通常人们认为满足随机性的样本数据也满足独立性。

     在以一定顺序(如时间)排列的有序数列中,具有相同属性(如符号)的连续部分被称为一个游程,一个游程中所包含数据的个数称为游程的长度,通常用R表示一个数列中的游程总数。

    例:

    设某样本n=12人的标志表现为男、女,有以下三种排列。

      (i) 男\男,女\女\女,男,女\女,男\男\男\男 (ii) 男\男\男\男\男\男\男,女\女\女\女\女 (iii)男,女,男,女,男,女,男,女,男,女,男\男

        连续出现男或女的区段称为游程。

     每个游程包含的个数为游程长度。以r表示序列中游程的个数:

      (i)r=5, (ii)r=2, (iii)r=11

      可以看出,(i)是随机性序列;(ii)(iii)是非随机性序列,所以,可以用游程的个数来检验样本的随机性,或总体的分布特征。

     在游程检验中,数据序列的游程总数偏少或偏多都是数据不满足随机性的变现,因此,游程的一般都是W={R>r1或R<r2}。


    例2:

    一个包含12个数的有序序列如下:

    6  13  9  16  6  8  4  8  11  10  5  1

    -  +     +   +    -   -    -   -   +    +    -   -

    这是一个数值序列,可以采用以下两种方式计算游程总数。

    (1)以某一值(例如数据的均值)为界,将大于该值标记为“+”,小于该值标记为“-”,等于的去除,然后确定游程总数,可得游程总数为5

     (2)根据数列中出现的连续增和连续减的子序列数确定游程总数,这种方式下确定的游程总数为8.

    MATLAB统计工具箱中提供了runstest函数,用来做游程检验,调用格式如下:

     <1>h = runstest(x)

          对样本数据序列x进行游程检验,原假设为H0:数据出现是随机的,备择假设为H1:数据出现顺序不随机。此时已x的均值为界计算游程。输出参数h等于0或1,若为0,则在显著性水平0.05下接受原假设,认为样本数据满足随机性;若为1,则拒绝原假设,认为样本数据不满足随机性。runstest函数会把x中的NaN作为缺失数据而忽略。

     <2> h = runstest(x,v)

        以数值v为界进行游程检验,v的默认值为数据序列x的均值。

     <3>h=runstest(x,‘ud’)

          根据数列中出现的连续增和连续减的子序列数确定游程总数,从而进行游程检验,此时,数列x中与前一元素相同的数将会被去除

     <4> h = runstest(...,param1,val1,param2,val2,.....)

            用可选的成对出现的参数名和参数值控制计算结果,可用的参数与参数值如下表

     <5>[h,p]=runstest(......)

       返回检验的p值,当p值小于或等于显著性水平a时,拒绝原假设,否则接受原假设

     参数名                         参数值及说明

    ‘alpha’                    检验的显著性水平,取值介于

                                   0--1之间,默认值为0.05


    ‘method’             指定计算p值的方法,可能的取值情况如下

                               ‘exact’:利用精确方法计算p值,适用于小样本(样本容量<50)情形

                               ‘approximate’:利用正态近似计算p值,适用于大样本情形


    ‘tail’                   尾部类型变量,用来指定备择假设的形式,可能的取值如下:

                              ‘both’:双侧检验

                               ‘right’右尾检验

                              ‘ left’ 作为检验


    <6>[h,p,stats]=runstest(......)

       返回一个结构体变量stats,它包含以下字段

      nurns:游程总数

     n1:数据序列中大于v的数据个数

     n0:数据序列中小于v的数据个数

     z:检验统计量的值


    例:

    研究中国福利彩票“双色球”开奖号码中的蓝色球号码的出现是否随机


    %读取”双色球开奖数据.xls“第1个工作表中的I2:I98中的数据,即蓝色球号码
    x=xlsread('C:\Users\Administrator\Desktop\MATLAB\MATLAB数据分析与统计\chapter5\双色球开奖数据.xls',1,'I2:I98');
    %调用runstest函数,对蓝色球号码进行游程检验
    %因为样本较大,所以指定,‘method’为‘aproximate’:利用正态近似计算p值
    %v值为默认
    [h,p,stats]=runstest(x,[],'method','approximate')


    h =

         0


    p =

        0.4192


    stats =

        nruns: 45
           n1: 50
           n0: 47
            z: -0.8079

    runstest函数返回的检验的p值p=0.4192>0.05,所以在显著性水平=0.05下接受原假设H0:蓝色球号码出现顺序是随机的。


    .2 符号检验

      (1)符号检验的原理

         设X为连续总体,其中位数记为Me,考虑假设检验问题

      H0:Me=M0,                   H1:Me/=M0(Me不等于M0)

     记p+=P(X>M0),p-=P(X<M0),由于Me是总体X的中位数,可知当H0成立时,p+=p-=0.5,因此可以把上述假设等价于

     H0:p+=p-=0.5,            H1:p+/=p-(p+不等于p-)

    把Xi>M0的个数记为n+,Xi<M0的个数记为n-,另m=n+  +  n-

    如果H0成立,当m固定时,min(n+,n-)不应太小,否则应认为H0不成立。选取检验统计量

        S=min(n+,n-)

    对于固定的m和给定的显著性水平a,根据S的分布计算临界值Sa,当S<=Sa时,拒绝原假设H0,即认为总体中位数Me与M0有显著差异;当S>Sa时,接受H0,,即认为总体中位数Me与M0为显著性差异。

      符号检验还可用于配对样本的比较检验,符号检验法是通过两个相关样本的每对数据之差的符号进行检验,从而比较两个样本的显著性。具体地讲,若两个样本差异不显著,正差值与负差值的个数应大致各占一半。

    (2)符号检验的MATLAB实现

     MATLAB统计工具箱中提供了signtest函数,用来符号检验,其调用格式如下:

      <1>  [p,h,stats] = signtest(x)

         根据样本观测量x做双侧符号检验,原假设是x来自于中位数为0的连续分布,备择假设是x来自中位数不为0的连续分布。输出参数分别为检验的p值,变量h,和包含检验统计量信息的结构体变量stats,当p>a(显著性水平)或h=0时,接受原假设;当p<=a或h=1时,拒绝原假设。

     <2>[p,h,stats]=signtest(x,m,param1,val1,.....)

      双侧符号检验,原假设是x来自于中位数为m的连续分布,备择假设是x来自于中位数不为m的连续分布,此时用可选的成对出现的参数名和参数值来控制计算结果,可用的参数名与参数值如下表

    参数名                  参数值及说明

    'alpha'                检验的显著性水平,其取值介于0--1

                                默认值为0.05


    ‘method’         指定计算p值的方法,可能的取值情况如下

                               ‘exact’:利用精确方法计算p值,适用于小样本(样本容量<100)情形

                               ‘approximate’:利用正态近似计算p值,适用于大样本情形

    <3> [p,h,stats]=signtest(x,y,param1,val1,.......)

         配对样本x和y的双侧符号检验,原假设是x-y来自于中位数为0的连续分布,备择假设是x-y来自于中位数不为0的连续分布,x,y是等长的向量。


    例:在一次选举的民意调查中,随机询问了200名选民,结果显示,69人支持甲,108人支持乙,23人弃权。分析甲乙两人的支持率是否有显著差异。取显著性水平a=0.05;

    分析:  用p1和p2分别表示甲乙两位候选人的支持率,根据题目要求可写出如下假设:

     H0:p1=p2=0.5,  H1:p1/=p2(p1不等于p2)

    调用signtest函数求解

    %定义样本观测值向量,-1表示支持甲,0表示弃权,1表示支持乙
    x=[-ones(69,1);zeros(23,1);ones(108,1)];
    p=signtest(x)     %符号检验,检验x的中位数是否为0

    p =

        0.0043

    由于signtest函数返回的检验值p=0.0043<0.01,所以在显著性水平=0.01下拒绝原假设H0,认为甲乙两位候选人的支持率有非常显著的差异。


    例:

    两组(各10名)有资质的评酒员分别对12种不同的酒进行品评,每个评酒员在品尝后进行评分,然后对每组的每个样品计算其平均分,评分结果如下

                    样品1      样本2      样品3    样品4     样品5      样品6      样品7      样品8      样品9      样品10    样品11     样品12   

    第一组     80.3      68.6          72.2     71.5      72.3          70.1         74.6        73.0        58.7        78.6         85.6           78.0

    第二组     74.0       71.2        66.3      65.3     66.0           61.6        68.8          72.6        65.7        72.6         77.1           71.5

    利用符号检验方法比较两组评酒员的评分是否有显著差异,取显著性水平a=0.05

    %样本1
    x=[80.3,68.6,72.2,71.5,72.3,70.1,74.6,73.0,58.7,78.6,85.6,78.0];
    %样本2
    y=[74.0,71.2,66.3,65.3,66.0,61.6,68.8,72.6,65.7,72.6,77.1,71.5];
    p=signtest(x,y)  %配对样本的符号检验


    p =

        0.0386

    由于signtest函数返回p=0.0386<0.05,所以在显著性水平=0.05下认为两组评分有显著差异。


    3 Wilcoxon(威尔科克森)符号秩检验

       符号检验只考虑的分布在中位数两侧的样本数据的个数,并没有考虑中位数两侧数据分布的疏密程度,这就使得符号检验的结果比较粗糙,检验功率较低。统计学家维尔科克森在1945年,提出了一种更为精细的“符号秩检验法”,该方法是在配对样本的符号检验基础上发展起来的,比传统的单独用正负号的检验更加有效。它适用于单个样本中位数的检验,也适用于配对样本的比较检验,但并不要求样本之差服从正态分布,只要求对称分布即可。

      (1)Wilcoxon(威尔科克森)符号秩检验的原理

          设连续总体X服从对称分布,其中位数记为Me,考虑假设检验问题:

              H0:Me=M0,               H1:Me/=M0(Me不等于m0)

       从总体X中抽取容量为n的样本X1,X2,......,Xn,将 |Xi-M0| ,i=0,1,2,....n,从小到大排序,并计算它们的秩(即序号,取值相同时求平均秩),根据 Xi-M0 的符号将|Xi-M0|分为正好组和负号组,用W+和W-分别表示正号组和负号组的秩和,则W+  +  W-  =n(n+1)/2。

       如果H0成立,则W+和W-取值相差不大,即min(W+,W-)不应太小,否则认为H0不成立。选取统计量

        W=min(W+,W-)

        对于给定的显著性水平a,根据W的分布计算出临界值Wa,当W<=Wa时,拒绝原假设H0,即认为总体中位数Me与M0有显著性差异;当W>Wa时,接受H0,即认为总体中位数Me与M0无显著差异。

      对于配对样本的符号秩检验,只需将两样本对应数据做差,即可将其化为单样本符号秩检验

     讲解下面这个例子

     http://wiki.mbalib.com/wiki/%E5%A8%81%E5%B0%94%E7%A7%91%E5%85%8B%E6%A3%AE%E7%AC%A6%E5%8F%B7%E7%A7%A9%E6%A3%80%E9%AA%8C

       (2)Wilcoxon(威尔科克森)符号秩检验的MATLAB实现

        MATLAB统计工具箱中提供了signrank函数,用来做Wilcoxon(威尔科克森)符号秩检验,其调用格式如下:

         <1>[p,h,stats]=signrank(x)

        根据样本观测值向量x做双侧符号秩检验,原假设是x来自于中位为0的分布,备择假设是x来自于中位数不为0的分布。该检验假定x的分布是连续的,并且关于其中位数对称。输出参数分别为检验的p值、变量h和包含检验统计量信息的结构体变量stats,当p>a(显著性水平)或h=0时,接受原假设;当p<=a(显著性水平)或h=1时,拒绝原假设。

      <2> [p,h,stats]=signrank(x,m,param1,val1,......)

          双侧符号秩检验,检验样本观测值向量x是否来自于中位数为m的分布,此时用可选的成对出现的参数名和参数值来控制计算结果,参数名和参数值如下表

      

    参数名                  参数值及说明

    'alpha'                检验的显著性水平,其取值介于0--1

                                默认值为0.05


    ‘method’         指定计算p值的方法,可能的取值情况如下

                               ‘exact’:利用精确方法计算p值,适用于小样本(样本容量<15)情形

                               ‘approximate’:利用正态近似计算p值,适用于大样本情形

    <3> [p,h,stats]=signrank(x,y,param1,val1,.....)

         配对样本x和y的双侧符号检验,原假设是x-y来自于中位数为0的分布,备择假设是x-y来自于中位数不为0的分布,此时,x和y是等长的向量,其他参数说明同上。


    例:

    抽样某品牌面粉的重量,抽查了16包,其观测值如下:

    20.21,19.95,20.15,20.07,19.91,19.99,20.08,20.16,19.99,20.16,20.09,19.97,20.05,20.27,19.96,20.06

    试检验中位数与原来设定的20是否有显著性差别,去显著性水平为0.05

     根据题目要求可写出如下假设:

      H0:Me=20,                H1:Me/=20(Me不等于20)

    调用signrank函数求解

    %输入样本观测向量
    %换行时要加入...,不然就会说一个2x8的矩阵
    x=[20.21,19.95,20.15,20.07,19.91,19.99,20.08,20.16,...
        19.99,20.16,20.09,19.97,20.05,20.27,19.96,20.06];

    %调用signrank检验
    [p,h,stats]=signrank(x,20)


    p =

        0.0298


    h =

         1


    stats =

              zval: 2.1732                 %近似正态统计量
        signedrank: 110                %符号秩统计量

    由于返回的p=0.0298<0.05,所以在显著性水平=0.05下拒绝原假设,不能认为此组面粉数据的中位数为20.


    .4 曼-惠特尼秩和检验

     曼-惠特尼U检验又称“曼-惠特尼秩和检验”,是由H.B.Mann和D.R.Whitney于1947年提出的。它假设两个样本分别来自除了总体均值以外完全相同的两个总体,目的是检验这两个总体的均值是否有显著的差别。

     (1)曼-惠特尼秩和检验的原理

       设X和Y是两个连续型总体,其分布函数分别为F(x-u1)和F(x-u2)均未知,即两总体分布形状相同,位置参数(例如中位数)可能不同,从两总体分布中分布抽取容量为n1和n2的样本X1,X2,......,Xn1 和 Y1,Y2,.....,Yn2,并且两样本独立,考虑假设性检验问题

     H0:u1=u2,                H1:u1/=u2(u1不等于u2)

     将样本观测数据X1,X2,....,Xn1和Y1,Y2,....,Yn2混合在一起,从小到大排序,并计算它们的秩(即序号,取值相同时求平均秩)。记X1,X2,...,Xn1的秩和为Wx,Y1,Y2,....,Yn2的秩和为Wy,则

        Wx+Wy =(n1+n1)(n1+n2+1)/2

    选取检验统计量         

                       Wx ,        n1<=n2

    W=          

                       Wy,             n1>n2

    如果H0成立,W的取值不应过于偏小或偏大,否则拒绝H0,对于给定显著性水平a, 根据W的分布计算下临界值W1和上临界值W2,当W<=W1或W>=W2时,拒绝原假设H0,;当W1<W<W2时,接受H0。通常样本容量之一超过10时,可认为W近似服从正态分布,从而可用近似正态检验法。

     (2)曼-惠特尼秩和检验的MATLAB实现

      MATLAB统计工具箱中提供了ranksum函数,用来做秩和检验,其调用格式如下:

     [p,h,stats]=ranksum(x,y,param1,val1,........)

      根据样本观测值向量x和y做双侧秩和检验,原假设两独立样本x和y来自于具有相同中位数的连续分布,备择假设是x和y具有不同的中位数。此时可选成对出现的参数和参数值来控制计算结果。可选的参数名与参数值如下表:

     

    参数名                  参数值及说明

    'alpha'                检验的显著性水平,其取值介于0--1

                                默认值为0.05


    ‘method’         指定计算p值的方法,可能的取值情况如下

                               ‘exact’:利用精确方法计算p值,适用于小样本(样本容量<10)情形

                               ‘approximate’:利用正态近似计算p值,适用于大样本情形

    输出参数分别为检验的p值、变量h和包含检验统计量信息的结构体变量stats,当p>a(显著性水平)或h=0时,接受原假设;当p<=a或h=1时,拒绝原假设。

    例:

    某科研团队要研究两种饲料(高蛋白饲料和低蛋白饲料)对小白鼠体重的影响,先用高蛋白饲料喂养12只小白鼠,低蛋白饲料喂养7只小白鼠,记录在一段时间内体重的增加量,得到如下观测数据

    饲料                                  各鼠增加的体重

    高蛋白       133  112  102  129  121  161  142  88  115  127  96  125

    低蛋白        71    119  101  83  107     134  92

    试检验两种不同饲料喂养的小白鼠的体重增加是否有显著差异,去显著性水平=0.05;

    根据题目要求可做如下假设:

     H0:u1=u2,                 H1:u1/=u2(u1不等于u2)

    调用ranksum函数进行求解


    %第一组体重增加量
    x=[133,112,102,129,121,161,142,88,115,127,96,125];
    %第二组体重增加量
    y=[71,119,101,83,107,134,92];

    %调用ranksum进行检验
    [p,h,stats]=ranksum(x,y,'method','approximate')


    p =

        0.0832


    h =

         0


    stats =

           zval: 1.7326
        ranksum: 141

    函数返回p=0.0832>0.05,在显著性水平=0.05下接受原假设,认为两种饲料喂养的小白鼠体重的增加量没有显著性差异。

    更多MATLAB数据分析视频请点击,或者在网易云课堂上搜索《MATLAB数据分析与统计》 http://study.163.com/course/courseMain.htm?courseId=1003615016

    展开全文
  • 学习笔记 学习书目:《统计学:从数据到结论》–吴喜之; 比较两总体中位数的Wilcoxon秩和检验 ...我们在这里,介绍一种常用的Wilcoxon秩和检验,该检验唯一需要的假定就是两个总体的分布类似的形状。Wilcoxon...
  • 分布的拟合与检验  在某些统计推断中, 通常假定总体服从一定的分布(例如正态分布),然后在这个分布的基础上,构造相应的统计量,根据统计量的分布做出一些统计推断,而统计量的分布通常依赖于总体的分布假设,也...
  • SPSS学习笔记(四)非参数检验

    千次阅读 2020-11-19 11:51:09
    一、配对:Wilcoxon符号-秩检验 分析 操作 结果及分析 二、独立样本:Mann-Whitney U检验 分析 操作 结果及分析 三、单因素ANOVA:Kruskal-Wallis检验 分析 操作 结果及分析 一、配对:Wilcoxon符号-秩...
  • 今天跟大家讨论和分享一下:spss-Friedman 秩和检验-非参数检验-K个(多个)相关样本检验,下面以“数学,物理,生物”样本数据为例, 假设:H0: 数学,物理,生物三门课程的总体分布是相同的 H1:数学,物理,...
  • 方差分析是假设数据满足正态分布和方差齐性的前提...类似于方差分析中的独立样本的方差分析和区组设计的方差分析,多个样本的非参数检验分为多个独立样本的非参数检验和多个相关样本的非参数检验。此次笔记是关于多个独
  • 参数检验之--------BindingResult总结

    千次阅读 2019-11-18 17:52:48
    记一个简单哟好用的API...作用:用于对前端穿进来的参数进行校验,省去了大量的逻辑判断操作!!!!!!!!!!! 相关的校验API: 空检查 @NotEmpty:用在集合类上面;不能为null,而且长度必须大于0 @NotBlank:...
  • 推断统计:参数估计和假设检验

    千次阅读 多人点赞 2020-03-03 00:35:24
    目录 ...  3、参数估计(点估计和区间估计)    1)参数估计、点估计和区间统计的概念    2)点估计说明    3)区间估计说明   4、中心极限定理    1)中心极限定理的概念    2...
  • 1980年代末,汉斯拉伊大学(Hansraj College)经济学荣誉毕业生的平均薪酬约为每年100万印度卢比。这一数字大大高于80年代初或90年代初毕业的人们。... 它是一个很好的数据中心的指示器,因为一半数据位于中间值以下
  • &#13; &#13; &#13; &#13; &#13; &#13; &#13; 作者简介糖甜甜甜 公众号:经管人学数据分析往期回顾:词云一分钟了解周董的歌词非参数检验是指总体不服从...
  • Pearson 卡方检验要求二维列联表只允许 20% 以下格子的期望数小于5,对于 2×2 列联表,应当用 Fisher 精确检验法。 实例 & 代码 以下是 A 和 B 两种药物的二维列联表数据,问 A 和 B 两种药物的治疗效果是否...
  • 统计学——卡方检验和卡方分布

    万次阅读 多人点赞 2017-12-11 13:02:37
    属于参数检验的范畴,主要是比较两个及两个以上样本率( 构成比)以及两个分类变量的关联性分析。其根本思想就是在于比较理论频数和实际频数的吻合程度或拟合优度问题。 它在分类资料统计推断中的应用,包括:两...
  • 由于R中在进行参数估计时,并不会直接给出各参数的显著性检验,所以这就要用手动计算下。 以下图片来自于,王燕《时间序列分析基于R》P90 还有一张图片我觉得也不错,所以也贴在这了。 ...
  • 卡方检验

    千次阅读 2018-10-06 20:48:57
    属于参数检验的范畴,主要是比较两个及两个以上样本率( 构成比)以及两个分类变量的关联性分析。其根本思想就是在于比较理论频数和实际频数的吻合程度或拟合优度问题。 它在分类资料统计推断中的应用,包括:两...
  • 似然比检验 LRT

    万次阅读 2018-12-06 22:12:05
    似然比检验(likelihood ratio test,LRT)是一种检验参数...也就是说似然比检验的实质是在比较约束条件下的似然函数最大值与无约束条件下似然函数最大值。” 可以看出,似然比检验是一种通用的检验方法(比 检验、...
  • t检验

    千次阅读 2018-07-13 12:12:32
    t检验是一种假设检验,运用反证法的思想,证明原假设不成立,从而接受备择假设。原假设和备择假设选择的条件:1 原假设应该受到...但是,只要小概率事件的概率不为0,那么就是可能发生的,我们直接拒绝原假设可能...
  • 假设检验

    千次阅读 2020-03-29 20:01:24
    参数估计一样,假设检验也是数理统计的主要内容之一。
  • 假设检验-U检验、T检验、卡方检验、F检验

    万次阅读 多人点赞 2019-06-20 16:47:41
    假设检验的基本思想是小概率反证法思想,小概率思想认为小概率事件在一次试验中基本上不可能发生,在这个方法下,我们首先对总体作出一个假设,这个假设大概率会成立,如果在一次试验中,试验结果和原假设相背离,也...
  • 卡方检验和卡方分布

    千次阅读 2018-06-18 13:40:15
    属于参数检验的范畴,主要是比较两个及两个以上样本率( 构成比)以及两个分类变量的关联性分析。其根本思想就是在于比较理论频数和实际频数的吻合程度或拟合优度问题。它在分类资料统计推断中的应用包括:两个率...
  • 之前上学时计量经济学的模型实现总是用Eviews等...多元线性回归和显著性检验参数估计、T检验、F检验、拟合优度) 多重共线性(导致结果、检验——方差膨胀因子、补救措施——岭回归) 异方差(导致结果、检验——W...
  • 卡方检验概述

    千次阅读 2017-10-13 14:24:39
    属于参数检验的范畴,主要是比较两个及两个以上样本率( 构成比)以及两个分类变量的关联性分析。其根本思想就是在于比较理论频数和实际频数的吻合程度或拟合优度问题。 它在分类资料统计推断中的应用,包括:两...
  • Python ADF检验

    千次阅读 2019-07-20 21:03:57
    转自:...Abstract 在ARMA/ARIMA这样的自回归模型中,模型对时间序列数据的平稳是要求的,因此,需要对数据或者数据的n阶差分进行平稳检验,而一种常见的方法就是ADF检验,即单位根检验。 平稳随...
  • Matlab正态分布检验

    万次阅读 2018-08-14 01:00:08
    虽然在许多情况下这个假定是合理的,但是当要以此为前提进行重要的参数估计或假设检验,或者人们对它较大怀疑的时候,就确有必要对这个假设进行检验,进行总体正态性检验的方法很多种,以下针对MATLAB统计工具箱...
  • KS检验

    万次阅读 2016-10-12 10:24:38
    KS-检验(Kolmogorov-Smirnov test) -- 检验数据是否符合某种分布 Kolmogorov-Smirnov是比较一个频率分布f(x)与理论分布g(x)或者两个观测值分布的检验方法。其原假设H0:两个数据分布一致或者数据符合理论分布。D...
  • T检验与Z检验

    千次阅读 2020-07-22 14:59:48
    五.T检验和Z检验 文章目录五.T检验和Z检验0. 检验学习先知知识离散变量与连续...[4]:统计学离散型变量和连续型变量什么区别? [5]:经典比较篇之一:为什么要做比较分析? [6]:假设检验之z-检验,t-检验,卡方检验 0.

空空如也

空空如也

1 2 3 4 5 ... 20
收藏数 89,421
精华内容 35,768
关键字:

以下属于参数检验的有