独立性检验
卡方独立性检验
使用chisq.test()函数对二维表的行变量和列变量进行卡方独立性检验,代码如下
> mytable<-xtabs(~Treatment+Improved,data = Arthritis)
> mytable
Improved
Treatment None Some Marked
Placebo 29 7 7
Treated 13 7 21
> chisq.test(mytable)
Pearson's Chi-squared test
data: mytable
X-squared = 13.055, df = 2, p-value = 0.001463
> mytable<-xtabs(~Improved+Sex,data = Arthritis)
> mytable
Sex
Improved Female Male
None 25 17
Some 12 2
Marked 22 6
> chisq.test(mytable)
Pearson's Chi-squared test
data: mytable
X-squared = 4.8407, df = 2, p-value = 0.08889
Warning message:
In chisq.test(mytable) : Chi-squared近似算法有可能不准
其中的P值表示从总体中抽取的样本行变量与列变量是相互独立的概率
在第一个二维表(治疗与改善程度)中p<0.01,说明两者不独立,即存在着某种关系,在第二个二维表(改善程度与性别)中,P>0.05,说明两者相互独立
Fisher精确检验
Fisher精确检验的原假设是:边界固定的列联表中行和列是相互独立的
其调用格式为fisher.test(mytable)
> mytable<-xtabs(~Treatment+Improved,data = Arthritis)
> mytable
Improved
Treatment None Some Marked
Placebo 29 7 7
Treated 13 7 21
> fisher.test(mytable)
Fisher's Exact Test for Count Data
data: mytable
p-value = 0.001393
alternative hypothesis: two.sided
可以看出P<0.01,即治疗方法与改善程度不独立
相关性检验
相关的类型
Pearson积差相关系数衡量了两个定量变量之间的线性相关程度
Spearman等级相关系数衡量分级定序变量之间的相关程度
Kendall's Tau相关系数也是一种非参数的等级相关度量
示例的数据来源于R内置数据集state.x77数据集,它提供了美国50个州在1997年的人口,收入,文盲率,预期寿命,谋杀率和高中毕业数据
cor()函数可以计算着三种相关系数,cov()函数可以用来计算协方差,调用格式如下
cor(x,use=,method=)
x 矩阵或数据框
use 指定处理缺失值的方式 可选的方式有 all.obs(假设不存在缺失数据,遇到缺失数据报错) everything(遇到缺失数据时,相关系数的计算结果将设为missing) compelet.obs(行删除)pairwise.complete.obs(成对删除)
> state<-state.x77[,1:6]
> cor(state)
Population Income Illiteracy Life Exp Murder HS Grad
Population 1.00000000 0.2082276 0.1076224 -0.06805195 0.3436428 -0.09848975
Income 0.20822756 1.0000000 -0.4370752 0.34025534 -0.2300776 0.61993232
Illiteracy 0.10762237 -0.4370752 1.0000000 -0.58847793 0.7029752 -0.65718861
Life Exp -0.06805195 0.3402553 -0.5884779 1.00000000 -0.7808458 0.58221620
Murder 0.34364275 -0.2300776 0.7029752 -0.78084575 1.0000000 -0.48797102
HS Grad -0.09848975 0.6199323 -0.6571886 0.58221620 -0.4879710 1.00000000
> cov(state)
Population Income Illiteracy Life Exp Murder HS Grad
Population 19931683.7588 571229.7796 292.8679592 -407.8424612 5663.523714 -3551.509551
Income 571229.7796 377573.3061 -163.7020408 280.6631837 -521.894286 3076.768980
Illiteracy 292.8680 -163.7020 0.3715306 -0.4815122 1.581776 -3.235469
Life Exp -407.8425 280.6632 -0.4815122 1.8020204 -3.869480 6.312685
Murder 5663.5237 -521.8943 1.5817755 -3.8694804 13.627465 -14.549616
HS Grad -3551.5096 3076.7690 -3.2354694 6.3126849 -14.549616 65.237894
> cor(state,method = "spearman")
Population Income Illiteracy Life Exp Murder HS Grad
Population 1.0000000 0.1246098 0.3130496 -0.1040171 0.3457401 -0.3833649
Income 0.1246098 1.0000000 -0.3145948 0.3241050 -0.2174623 0.5104809
Illiteracy 0.3130496 -0.3145948 1.0000000 -0.5553735 0.6723592 -0.6545396
Life Exp -0.1040171 0.3241050 -0.5553735 1.0000000 -0.7802406 0.5239410
Murder 0.3457401 -0.2174623 0.6723592 -0.7802406 1.0000000 -0.4367330
HS Grad -0.3833649 0.5104809 -0.6545396 0.5239410 -0.4367330 1.0000000
第一个语句计算了相关系数,第二个语句计算了Perason相关系数,第三个语句计算了Spearman相关系数,可以看到收入和高中毕业率存在很强的正相关,文盲率和预期寿命存在很强的负相关
相关性的显著检验(检验总体相关度是否为0)
在计算好相关系数后,就要对它们进行显著性检验
可以使用cor.test()函数进行检验,简化后的调用格式如下
cor.test(x,y,alternative=,method=)
x,y是要进行检验的相关性变量
alternative 用来指定进行单侧检验还是双侧检验
method 指定要计算的相关类型
> cor.test(state[,4],state[,5])
Pearson's product-moment correlation
data: state[, 4] and state[, 5]
t = -8.6596, df = 48, p-value = 2.26e-11
alternative hypothesis: true correlation is not equal to 0
95 percent confidence interval:
-0.8700837 -0.6420442
sample estimates:
cor
-0.7808458
这段代码对预期寿命和谋杀率的相关性进行检验,P值代表相关度为0的概率,其中P值很小,说明原假设几乎不可能发生,从而推翻原假设认为预期寿命和谋杀率的相关度不为0
t检验(检验总体均值是否相等)
上述的相关系数的检验主要是应用于类别型变量的检验
而t检验则主要应用于连续型变量的检验
示例用的数据集是MASS包中的UScrime数据集,它包含了1960年美国47个州的刑罚制度对犯罪影响的信息
我们感兴趣的变量为Prob(监禁的概率),U1(14-24岁年龄段男性失业率),U2(35-39岁年龄段男性失业率)。类别型变量So(指示该州是否位于南方)
独立样本的t检验
我们比较的对象是南方和非南方各州,应变量为监禁的概率,一个针对两组的独立样本y检验可以用于检验两个总体的均值是否相等
调用格式为
t.test(y~x,data)
y是一个数值型变量,x是类别型变量,data是数据框
> t.test(Prob~So,data = UScrime)
Welch Two Sample t-test
data: Prob by So
t = -3.8954, df = 24.925, p-value = 0.0006506
alternative hypothesis: true difference in means is not equal to 0
95 percent confidence interval:
-0.03852569 -0.01187439
sample estimates:
mean in group 0 mean in group 1
0.03851265 0.06371269
由于P<0.01,可以拒绝南方各州与非南方各州具有相同监禁率的假设
非独立样本的t检验
较年轻男性的失业率是否比年长的男性失业率高?在这种情况下,两中数据并不独立(比如同一个州),非独立样本的t检验调用格式如下
t.test(y1,y2,paired=TRUE)
y1,y2是两个非独立的数值向量
> t.test(UScrime$U1,UScrime$U2,paired = TRUE)
Paired t-test
data: UScrime$U1 and UScrime$U2
t = 32.407, df = 46, p-value < 2.2e-16
alternative hypothesis: true difference in means is not equal to 0
95 percent confidence interval:
57.67003 65.30870
sample estimates:
mean of the differences
61.48936
可以看出年轻的失业率交年长的失业率高(均值差值为61.5),切P<0.01,可以保证两者失业率不同