SAS统计初学1

Wesley13
• 阅读 540
  • 卡方检验;

卡方检验是一种用途很广的计数资料的假设检验方法。
它属于非参数检验的范畴,主要是比较两个及两个以上样本率( 构成比)以及两个分类变量的关联性分析。
其根本思想就是在于比较理论频数和实际频数的吻合程度或拟合优度问题。
它在分类资料统计推断中的应用,包括:两个率或两个构成比比较的卡方检验;
多个率或多个构成比比较的卡方检验以及分类资料的相关分析等。

  • 卡方检验的核心思想:

**卡方检验是以χ2分布为基础的一种常用假设检验方法,
它的无效假设H0是:观察频数与期望频数没有差别。
**

**该检验的基本思想是:首先假设H0成立,基于此前提计算出χ2值,它表示观察值与理论值之间的偏离程度。
根据χ2分布及自由度可以确定在H0假设成立的情况下获得当前统计量及更极端情况的概率P。
如果P值很小,说明观察值与理论值偏离程度太大,应当拒绝无效假设,表示比较资料之间有显著差异;
否则就不能拒绝无效假设,尚不能认为样本所代表的实际情况和理论假设有差别。

**

  • 卡方值的计算与意义:

  χ2值表示观察值与理论值之问的偏离程度。计算这种偏离程度的基本思路如下。

  (1)设A代表某个类别的观察频数,E代表基于H0计算出的期望频数,A与E之差称为残差。

  (2)显然,残差可以表示某一个类别观察值和理论值的偏离程度,但如果将残差简单相加以表示各类别观察频数与期望频数的差别,则有一定的不足之处。因为残差有正有负,相加后会彼此抵消,总和仍然为0,为此可以将残差平方后求和。

  (3)另一方面,残差大小是一个相对的概念,相对于期望频数为10时,期望频数为20的残差非常大,但相对于期望频数为1 000时20的残差就很小了。考虑到这一点,人们又将残差平方除以期望频数再求和,以估计观察频数与期望频数的差别。

  进行上述操作之后,就得到了常用的χ2统计量,由于它最初是由英国统计学家Karl Pearson在1900年首次提出的,因此也称之为Pearson χ2,其计算公式为

\[\chi^{2}=\sum \frac{(A-E)^{2}}{E}=\sum_{i=1}^{K} \frac{\left(A_{i}-E_{i}\right)^{2}}{E_{i}}=\sum_{i=1}^{K} \frac{\left(A_{i}-n p_{i}\right)^{2}}{n p_{i}} \quad(i=1,2,3, \ldots, k) \]

  其中,Ai为i水平的观察频数,Ei为i水平的期望频数,n为总频数,pi为i水平的期望频率。i水平的期望频数Ei等于总频数n×i水平的期望概率pi,k为单元格数。当n比较大时,χ2统计量近似服从k-1(计算Ei时用到的参数个数)个自由度的卡方分布。

由卡方的计算公式可知,当观察频数与期望频数完全一致时,χ2值为0;观察频数与期望频数越接近,两者之间的差异越小,χ2值越小;反之,观察频数与期望频数差别越大,两者之间的差异越大,χ2值越大。换言之,大的χ2值表明观察频数远离期望频数,即表明远离假设。小的χ2值表明观察频数接近期望频数,接近假设。因此,χ2是观察频数与期望频数之间距离的一种度量指标,也是假设成立与否的

  • 卡方检验的样本量要求

  卡方分布本身是连续型分布,但是在分类资料的统计分析中,显然频数只能以整数形式出现,因此计算出的统计量是非连续的。只有当样本量比较充足时,才可以忽略两者间的差异,否则将可能导致较大的偏差具体而言,一般认为对于卡方检验中的每一个单元格,要求其最小期望频数均大于1,且至少有4/5的单元格期望频数大于5,此时使用卡方分布计算出的概率值才是准确的。如果数据不符合要求,可以采用确切概率法进行概率的计算。

  • 适用于四格表应用条件:

  1. 随机样本数据。两个独立样本比较可以分以下3种情况:

(1)所有的理论数T≥5并且总样本量n≥40,用Pearson卡方进行检验。(正常的Pearson检验)

(2)如果理论数T<5但T≥1,并且n≥40,用连续性校正的卡方进行检验。(校正的Pearson)

(3)如果有理论数T<1或n<40,则用Fisher’s检验。(如果判断的理论数的数量不符合Pearson卡方的条件,可以查看SAS给出的结果中的Fisher's检验)

  2. 卡方检验的理论频数不能太小。

  • R×C表卡方检验应用条件:

  (1)R×C表中理论数小于5的格子不能超过1/5;

  (2)不能有小于1的理论数。如果实验中有不符合R×C表的卡方检验,可以通过增加样本数、列合并来实现。

  • 卡方检验最常见的用途就是考察某无序分类变量各水平在两组或多组间的分布是否一致实际上,除了这个用途之外.卡方检验还有更广泛的应用。具体而言,其用途主要包括以下几个方面:

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

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

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

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

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

  • 步骤:

    (1) 原假设H0: 观察频数与期望频数无差别,;  备择假设H1: 2观察频数与期望频数有差别;

    (2)根据数据计算卡方值、P值(右尾面积); 若P值≤α,则拒绝H0; 若P值>α,则接受H0.

    2、 下面对type 和origin 两个变量进行卡方检验;

    • 解释一下产地不同的汽车类型是否有差异先假设没有差异;

    proc freq data=sashelp.cars; tables type*origin /chisq; run;

    • 得到的结果概率值小于0.001 ,说明两者有显著性差异应该拒绝原假设。;
    • 最终的结论:产地不同的汽车类型是有差异的。;

    SAS Connection established. Subprocess id is 24590

SAS Output

The SAS System

The FREQ Procedure

Frequency

Percent

Row Pct

Col Pct

Table of Type by Origin

Type

Origin

Asia

Europe

USA

Total

Hybrid

3

0.70

100.00

1.90

0

0.00

0.00

0.00

0

0.00

0.00

0.00

3

0.70

SUV

25

5.84

41.67

15.82

10

2.34

16.67

8.13

25

5.84

41.67

17.01

60

14.02

Sedan

94

21.96

35.88

59.49

78

18.22

29.77

63.41

90

21.03

34.35

61.22

262

61.21

Sports

17

3.97

34.69

10.76

23

5.37

46.94

18.70

9

2.10

18.37

6.12

49

11.45

Truck

8

1.87

33.33

5.06

0

0.00

0.00

0.00

16

3.74

66.67

10.88

24

5.61

Wagon

11

2.57

36.67

6.96

12

2.80

40.00

9.76

7

1.64

23.33

4.76

30

7.01

Total

158

36.92

123

28.74

147

34.35

428

100.00

Statistics for Table of Type by Origin

Statistic

DF

Value

Prob

Chi-Square

10

35.6659

<.0001

Likelihood Ratio Chi-Square

10

42.1254

<.0001

Mantel-Haenszel Chi-Square

1

0.0808

0.7762

Phi Coefficient

 

0.2887

 

Contingency Coefficient

 

0.2773

 

Cramer's V

 

0.2041

 

Sample Size = 428

我们使用sas软件中预置的数据集cars,针对其中的两个变量Type和Origin进行卡方检验,原假设来自不同产地的汽车的类型相同,根据卡方检验给出的结果进行分析,样本的数量以及理论数的大小限制条件,满足卡方检验,自由度为10=(6-1)*(3-1), 得到的卡方值为35.6659,概率Porb为小于0.001,拒绝原假设H0,接受H1 来自不同产地的汽车的类型在95%的置信度下来源不一致。

点赞
收藏
评论区
推荐文章
blmius blmius
2年前
MySQL:[Err] 1292 - Incorrect datetime value: ‘0000-00-00 00:00:00‘ for column ‘CREATE_TIME‘ at row 1
文章目录问题用navicat导入数据时,报错:原因这是因为当前的MySQL不支持datetime为0的情况。解决修改sql\mode:sql\mode:SQLMode定义了MySQL应支持的SQL语法、数据校验等,这样可以更容易地在不同的环境中使用MySQL。全局s
Jacquelyn38 Jacquelyn38
2年前
2020年前端实用代码段,为你的工作保驾护航
有空的时候,自己总结了几个代码段,在开发中也经常使用,谢谢。1、使用解构获取json数据let jsonData  id: 1,status: "OK",data: 'a', 'b';let  id, status, data: number   jsonData;console.log(id, status, number )
皕杰报表之UUID
​在我们用皕杰报表工具设计填报报表时,如何在新增行里自动增加id呢?能新增整数排序id吗?目前可以在新增行里自动增加id,但只能用uuid函数增加UUID编码,不能新增整数排序id。uuid函数说明:获取一个UUID,可以在填报表中用来创建数据ID语法:uuid()或uuid(sep)参数说明:sep布尔值,生成的uuid中是否包含分隔符'',缺省为
Stella981 Stella981
2年前
Python之time模块的时间戳、时间字符串格式化与转换
Python处理时间和时间戳的内置模块就有time,和datetime两个,本文先说time模块。关于时间戳的几个概念时间戳,根据1970年1月1日00:00:00开始按秒计算的偏移量。时间元组(struct_time),包含9个元素。 time.struct_time(tm_y
Easter79 Easter79
2年前
Twitter的分布式自增ID算法snowflake (Java版)
概述分布式系统中,有一些需要使用全局唯一ID的场景,这种时候为了防止ID冲突可以使用36位的UUID,但是UUID有一些缺点,首先他相对比较长,另外UUID一般是无序的。有些时候我们希望能使用一种简单一些的ID,并且希望ID能够按照时间有序生成。而twitter的snowflake解决了这种需求,最初Twitter把存储系统从MySQL迁移
Wesley13 Wesley13
2年前
mysql设置时区
mysql设置时区mysql\_query("SETtime\_zone'8:00'")ordie('时区设置失败,请联系管理员!');中国在东8区所以加8方法二:selectcount(user\_id)asdevice,CONVERT\_TZ(FROM\_UNIXTIME(reg\_time),'08:00','0
Stella981 Stella981
2年前
Golang之如何(优雅的)比较两个未知结构的json
这是之前遇到的一道面试题,后来也确实在工作中实际遇到了。于是记录一下,如何(优雅的)比较两个未知结构的json。假设,现在有两个简单的json文件。{"id":1,"name":"testjson01","isadmin":true}{"isadmi
Wesley13 Wesley13
2年前
00:Java简单了解
浅谈Java之概述Java是SUN(StanfordUniversityNetwork),斯坦福大学网络公司)1995年推出的一门高级编程语言。Java是一种面向Internet的编程语言。随着Java技术在web方面的不断成熟,已经成为Web应用程序的首选开发语言。Java是简单易学,完全面向对象,安全可靠,与平台无关的编程语言。
Wesley13 Wesley13
2年前
Oracle一张表中实现对一个字段不同值和总值的统计(多个count)
需求:统计WAIT\_ORDER表中的工单总数、未处理工单总数、已完成工单总数、未完成工单总数。表结构:为了举例子方便,WAIT\_ORDER表只有两个字段,分别是ID、STATUS,其中STATUS为工单的状态。1表示未处理,2表示已完成,3表示未完成总数。 SQL:  1.SELECT   2
Python进阶者 Python进阶者
3个月前
Excel中这日期老是出来00:00:00,怎么用Pandas把这个去除
大家好,我是皮皮。一、前言前几天在Python白银交流群【上海新年人】问了一个Pandas数据筛选的问题。问题如下:这日期老是出来00:00:00,怎么把这个去除。二、实现过程后来【论草莓如何成为冻干莓】给了一个思路和代码如下:pd.toexcel之前把这