用R语言实现卡方检验

xiaoxiao2021-02-28  3

卡方检验

在数据统计中,卡方检验是一种很重要的方法。

通常卡方检验的应用主要为:

1、 卡方拟合优度检验
2、卡方独立性检验

本文主要通过使用自己编程的方法实现相关检验。


卡方拟合优度检验

理论:

1、我们先做出0假设:H0:总体服从假定的理论分布
2、我们再构造一个统计量:

χ2=i=1k(ninp0i)2np0i

3、当n充分大时

χ2=χ2(k1)

4、我们得到该拒绝域

R={χ2>c} c=χ21α(k1),0<α<1

代码

#Chi_square Goodness Of Fit Test #函数说明: #n为所得样本数据;p为理论概率 #alpha为置信水平,df为自由度 cgoft <- function(n,p){ N <- length(n)#N为样本总容量 sumn <- sum(n) XX <- 0 for (i in 1:N) { XX <- XX +(n[i]-sumn*p[i])^2/(sumn*p[i]) print(XX) } return(XX) } c <- qchisq(1-aplha,df)

卡方独立性检验

理论:

1、我们先做出0假设:H0:二者没有相关关系
2、我们再构造一个统计量:

p^i=nin,p^j=njn, χ2=i=1kj=1m(nijn×p^i×p^j)2n×p^i×p^j

3、当n充分大时

χ2=χ2(kl1)

4、我们得到该拒绝域

R={χ2>c} c=χ21α(kl1),0<α<1

代码

#Chi_square Independence Test #函数说明: #n为样本数据,表格按行排列,写成向量形式;row为表格行数 #alpha为置信水平,df为自由度 cit <- function(n,row){ N <- length(n) sumn <- sum(n) n1 <- matrix(n,nrow=row,byrow = TRUE) column <- N/row pi <- c() for (i in 1:row) { pi[i] <- sum(n1[i,])/sumn } pj <- c() for (j in 1:column) { pj[j] <- sum(n1[,j])/sumn } XX <- 0 print(pj) for (i in 1:row) { for (j in 1:column) { XX <- XX + (n1[i,j]-sumn*pi[i]*pj[j])^2/(sumn*pi[i]*pj[j]) } } return(XX) } c <- qchisq(1-aplha,df)
转载请注明原文地址: https://www.6miu.com/read-1400159.html

最新回复(0)