R语言学习-基本统计分析--下

独立性检验

卡方独立性检验

使用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,可以保证两者失业率不同

猜你喜欢

转载自blog.csdn.net/weixin_34358365/article/details/87789725
今日推荐