R语言学习笔记6_非参数的假设检验

目录

  • 六、非参数的假设检验
    • 6.1 单总体位置参数的检验
      • 6.1.1 中位数的符号检验
      • 6.1.2 Wilcoxon 符号秩检验(更有效)
    • 6.2 分布的一致性检验:卡方检验
    • 6.3 两总体的比较与检验
      • 6.3.1 卡方独立性检验
      • 6.3.2 Fisher 精确检验
      • 6.3.3 Wilcoxon秩和检验法和Mann-Whitney U检验
      • 6.3.4 Mood 检验
    • 6.4 多总体的比较与检验
      • 6.4.1 位置参数的 Kruskal-Wallis 秩和检验
      • 6.4.2 尺度参数的Ansari-Bradley检验
      • 6.4.3 尺度参数的Fligner-Killeen检验

六、非参数的假设检验

实际生活中,在假定总体分布已知的情况下进行推断的做法(参数的假设检验)可能产生错误甚至得出灾难性的结论(假定的总体分布可能并不准确;数据不是来自一个总体;数据被污染…)。
非参数统计推断的宗旨——在不对总体分布做出假定的情况下,尽量从数据本身来获得所需要的信息

6.1 单总体位置参数的检验

样本观测值所代表的总体”中心“在哪里?

6.1.1 中位数的符号检验

使用总体X的中位数M作为分布中心,即M满足 P(XM)=1/2

> sign.test<- function(x,m0,alpha=0.05,alter="two.sided"){
+   p<-list( )
+   n<- length(x)
+   sign<-as.numeric(x>m0)
+   s<-sum(sign)
+   result<- binom.test(s,n,p=0.5,alternative = alter,conf.level = 1-alpha)
+   p$p.value=result$p.value
+   p
+ }

例:在某保险种类中,一次关于2006年的索赔额(单位:元)的随机抽样为:
4632,4728,5052,5064,5484,6972,7696,9048,14760,15013,18730,21240,22836,52788,67200
已知2005年的索赔数额的中位数为6064元。问2006年索赔的中位数与前一年是否有所变化?(α=0.05)

> insure<-c(4632,4728,5052,5064,5484,6972,7696,9048,14760,15013,18730,21240,22836,52788,67200)
> sign.test(insure,6064)
$p.value
[1] 0.3018

由于p=0.3018>0.05,故接受原假设,认为没有变化。

6.1.2 Wilcoxon 符号秩检验(更有效)

使用总体X的对称中心M作为分布中心,即总体X的分布F(x)关于M对称,M满足 F(M-x)=1-F(x-M),x是连续型的。

wilcox.test(x, y = NULL, alternative = c("two.sided", "less", "greater"),
            mu = 0, paired = FALSE, exact = NULL, correct = TRUE,
            conf.int = FALSE, conf.level = 0.95, ...)

exact表示是否算出准确的p值,correct表示大样本时是否做连续型修正。
对上节例子进行 Wilcoxon检验:

> wilcox.test(insure,mu=6064,conf.int = T)

	Wilcoxon signed rank test

data:  insure
V = 101, p-value = 0.02
alternative hypothesis: true location is not equal to 6064
95 percent confidence interval:
  6840 28926
sample estimates:
(pseudo)median 
         13065 

由于p=0.02<0.05,故拒绝原假设,认为有所变化,并给出了(伪)中位数13065。

6.2 分布的一致性检验:卡方检验

样本观测值代表的总体分布是否与我们所希望的分布一样?

chisq.test(x, y = NULL, correct = TRUE, p = rep(1/length(x), length(x)), 
			rescale.p = FALSE, simulate.p.value = FALSE, B = 2000)

x为向量或矩阵,若x是一维的且y=NULL,则函数用于分布的拟合优度检验——检验总体概率是否与给定的p相同,p默认进行等可能性检验;若x,y同时给出,则进行6.3.1介绍的列联表检验。

例:某箱子中有10种球,现从中有返回的随机抽取200个,其中第 i 种球共取得 vi 个,如下表所示。问箱子中这10种球的比例是否一样?(α=0.05)

种别 1 2 3 4 5 6 7 8 9 10
vi 35 16 15 17 17 19 11 16 30 24
> v<-c(35,16,15,17,17,19,11,16,30,24)
> chisq.test(v)

	Chi-squared test for given probabilities

data:  v
X-squared = 25, df = 9, p-value = 0.003

由于p=0.003<0.05,故拒绝原假设,认为箱子中的10种球比例不一样。
R中没有直接算带参数的拟合检验函数,需要根据问题自己编程。

6.3 两总体的比较与检验

6.3.1 卡方独立性检验

要求2维列联表中只允许20%一下的格子的期望频数小于5,否则R会给出警告。

下表是对63个肺癌患者和由43人组成的的对照组的调查结果,问总体中患肺癌是否与吸烟有关系?(α=0.05)

吸烟 不吸烟
肺癌患者 60 3
对照组 32 11
> compare<-matrix(c(60,32,3,11),nr=2,dimnames=list(c('cancer','normal'),c('smoke','Not smoke')))
> chisq.test(compare,correct = T)

	Pearson's Chi-squared test with Yates' continuity correction

data:  compare
X-squared = 7.9, df = 1, p-value = 0.005

由于p=0.005<0.05,故拒绝原假设,认为患肺癌与吸烟有关系。

6.3.2 Fisher 精确检验

适用于2维列联表中有许20%以上的格子的期望频数小于5的情况。

fisher.test(x, y = NULL, workspace = 200000, hybrid = FALSE,
            hybridPars = c(expect = 5, percent = 80, Emin = 1),
            control = list(), or = 1, alternative = "two.sided",
            conf.int = TRUE, conf.level = 0.95,
            simulate.p.value = FALSE, B = 2000)

只在维数>2x2的列联表中使用——workspace为整数,指定工作空间的数量;hybrid指定是否计算精确的概率。
只在维数=2x2的列联表中使用——or指定假设的概率比率。

数据同上例,问总体中肺癌患者吸烟比例是否比对照组中吸烟比例要大?(α=0.05)

> fisher.test(compare,alternative = "less")

	Fisher's Exact Test for Count Data

data:  compare
p-value = 1
alternative hypothesis: true odds ratio is less than 1
95 percent confidence interval:
  0.00 30.18
sample estimates:
odds ratio 
     6.747 

由于p=1>0.05,故接受原假设,认为总体中肺癌患者吸烟比例比对照组中吸烟比例要大。

6.3.3 Wilcoxon秩和检验法和Mann-Whitney U检验

例:有糖尿病的和正常的老鼠体重为(单位:g)
糖尿病鼠:42,44,38,52,48,46,34,44,38;
正常老鼠:34,43,35,33,34,26,30,31,31,27,28,27,30,37,32;
检验这两组的体重是否有显著不同?(α=0.05)

> x<-c(42,44,38,52,48,46,34,44,38)
> y<-c(34,43,35,33,34,26,30,31,31,27,28,27,30,37,32)
> wilcox.test(x,y,exact = F,correct = F)

	Wilcoxon rank sum test

data:  x and y
W = 128, p-value = 3e-04
alternative hypothesis: true location shift is not equal to 0

由于p=0.0003<0.05,故拒绝原假设,认为这两组的体重显著不同。

6.3.4 Mood 检验

要求两样本的中位数相同
尺度参数:描述总体概率分布离散程度的参数

mood.test(x, y, alternative = c("two.sided", "less", "greater"), ...)

例:两个村农民的月收入分别为:(单位:元)
A村:321,266,256,388,330,329,303,334,299,221,365,250,258,342,343,298,238,317,354;
B村:488,598,507,428,807,342,512,350,672,589,665,549,451,481,514,391,366,468.
问两个村农民的月收入的内部差异是否相同?(α=0.05)

> A<-c(321,266,256,388,330,329,303,334,299,221,365,250,258,342,343,298,238,317,354)
> B<-c(488,598,507,428,807,342,512,350,672,589,665,549,451,481,514,391,366,468)
> diff<-median(B)-median(A) #消除两样本之间的中位数差异
> A<-A+diff
> A
 [1] 501.5 446.5 436.5 568.5 510.5 509.5 483.5 514.5 479.5 401.5 545.5 430.5 438.5 522.5 523.5 478.5
[17] 418.5 497.5 534.5
> mood.test(A,B)

	Mood two-sample test of scale

data:  A and B
Z = -2.5, p-value = 0.01
alternative hypothesis: two.sided

6.4 多总体的比较与检验

6.4.1 位置参数的 Kruskal-Wallis 秩和检验

kruskal.test(x, g, ...)

x为一向量或列表,g为对x分类的因子,当x为列表时g可省略。

例:下面的数据是游泳,打篮球,骑自行车这三种不同的运动在30分钟内消耗的热量,这些数据是否说明这三种运动消耗的热量全相等?(α=0.05)
游泳:306,385,300,319,320;
打篮球:311,364,315,338,298;
骑自行车:289,198,201,302,289.

> x<-list(siwm=c(306,385,300,319,320),basketball=c(311,364,315,338,298),bicycle=c(289,198,201,302,289))
> kruskal.test(x)

	Kruskal-Wallis rank sum test

data:  x
Kruskal-Wallis chi-squared = 8, df = 2, p-value = 0.02

由于p=0.02小于0.05,故拒绝原假设,认为这三种运动消耗的热量不全相等。

6.4.2 尺度参数的Ansari-Bradley检验

ansari.test(x, y, alternative = c("two.sided", "less", "greater"),
            exact = NULL, conf.int = FALSE, conf.level = 0.95, ...)

x为一向量或列表,g为对x分类的因子,当x为列表时g可省略。

例:两个工人加工的零件尺寸(各10个)为(单位:mm):
工人A:18,17.1,16.4,16.9,16.9,16.7,16.7,17.2,17.5,16.9;
工人B:17,16.9,17,16.9,17.2,17.1,16.8,17.1,17.1,17.2.
这个结果能否说明两个工人的水平一致?(α=0.05)

> A<-c(18,17.1,16.4,16.9,16.9,16.7,16.7,17.2,17.5,16.9)
> B<-c(17,16.9,17,16.9,17.2,17.1,16.8,17.1,17.1,17.2)
> ansari.test(A,B)

	Ansari-Bradley test

data:  A and B
AB = 42, p-value = 0.04
alternative hypothesis: true ratio of scales is not equal to 1

Warning message:
In ansari.test.default(A, B) : 无法精確計算带连结的p值

由于p=0.04<0.05,故拒绝原假设,认为这两个工人的水平不一样。

6.4.3 尺度参数的Fligner-Killeen检验

fligner.test(x, g, ...)

x为一向量或列表,g为对x分类的因子,当x为列表时g可省略。

例:三名不同的运动员A、B、C同时在同一条见下进行打靶比赛,各打10发子弹,他们打中的环数如下:
A:8,7,9,10,9,6,5,8,10,5;
B:8,7,9,6,8,9,10,7,8,9;
C:10,10,9,6,8,3,5,6,7,4.
问这三名运动员的稳定性是否一样?(α=0.05)

> A<-c(8,7,9,10,9,6,5,8,10,5);
> B<-c(8,7,9,6,8,9,10,7,8,9);
> C<-c(10,10,9,6,8,3,5,6,7,4)
> x<-list(A,B,C)
> fligner.test(x)

	Fligner-Killeen test of homogeneity of variances

data:  x
Fligner-Killeen:med chi-squared = 5.2, df = 2, p-value = 0.07

由于p=0.07>0.05,故接受原假设,认为这三名运动员的稳定性相同。

你可能感兴趣的:(R)