卡方检验
在数据统计中,卡方检验是一种很重要的方法。
通常卡方检验的应用主要为:
1、 卡方拟合优度检验
2、卡方独立性检验
本文主要通过使用自己编程的方法实现相关检验。
卡方拟合优度检验
理论:
1、我们先做出0假设:H0:总体服从假定的理论分布
2、我们再构造一个统计量:
χ2=∑i=1k(ni−n∗p0i)2n∗p0i
3、当n充分大时
χ2=χ2(k−1)
4、我们得到该拒绝域
R={χ2>c}
c=χ21−α(k−1),0<α<1
代码
cgoft <- function(n,p){
N <-
length(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 <- qchis
q(1-aplha,df)
卡方独立性检验
理论:
1、我们先做出0假设:H0:二者没有相关关系
2、我们再构造一个统计量:
p^i∙=ni∙n,p^∙j=n∙jn,
χ2=∑i=1k∑j=1m(nij−n×p^i∙×p^∙j)2n×p^i∙×p^∙j
3、当n充分大时
χ2=χ2(k−l−1)
4、我们得到该拒绝域
R={χ2>c}
c=χ21−α(k−l−1),0<α<1
代码
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)