R中的卡方检验
独立性卡方检验评估两个变量的类别之间是否存在关联。基本上有两种类型的随机变量,它们产生两种类型的数据:数值型和分类型。卡方统计用于调查分类变量的分布是否彼此不同。卡方检验在比较两个(或更多)独立组之间的分类响应的计数或计数时也很有用。
在 R 中,用于执行卡方检验的函数是chisq.test()
。
Syntax:
chisq.test(data)
Parameters:
data: data is a table containing count values of the variables in the table.
例子
我们将在MASS
库中获取调查数据,该数据代表对学生进行的调查数据。
# load the MASS package
library(MASS)
print(str(survey))
输出:
'data.frame': 237 obs. of 12 variables:
$ Sex : Factor w/ 2 levels "Female","Male": 1 2 2 2 2 1 2 1 2 2 ...
$ Wr.Hnd: num 18.5 19.5 18 18.8 20 18 17.7 17 20 18.5 ...
$ NW.Hnd: num 18 20.5 13.3 18.9 20 17.7 17.7 17.3 19.5 18.5 ...
$ W.Hnd : Factor w/ 2 levels "Left","Right": 2 1 2 2 2 2 2 2 2 2 ...
$ Fold : Factor w/ 3 levels "L on R","Neither",..: 3 3 1 3 2 1 1 3 3 3 ...
$ Pulse : int 92 104 87 NA 35 64 83 74 72 90 ...
$ Clap : Factor w/ 3 levels "Left","Neither",..: 1 1 2 2 3 3 3 3 3 3 ...
$ Exer : Factor w/ 3 levels "Freq","None",..: 3 2 2 2 3 3 1 1 3 3 ...
$ Smoke : Factor w/ 4 levels "Heavy","Never",..: 2 4 3 2 2 2 2 2 2 2 ...
$ Height: num 173 178 NA 160 165 ...
$ M.I : Factor w/ 2 levels "Imperial","Metric": 2 1 NA 2 2 1 1 2 2 2 ...
$ Age : num 18.2 17.6 16.9 20.3 23.7 ...
NULL
上述结果表明数据集有许多可以被视为分类变量的因子变量。对于我们的模型,我们将考虑变量“ Exer ”和“ Smoke ”。Smoke 列记录学生的吸烟习惯,而 Exer 列记录他们的锻炼水平。我们的目的是在 0.05 显着性水平上检验学生吸烟习惯是否独立于他们的运动水平的假设。
# Create a data frame from the main data set.
stu_data = data.frame(survey$Smoke,survey$Exer)
# Create a contingency table with the needed variables.
stu_data = table(survey$Smoke,survey$Exer)
print(stu_data)
输出:
Freq None Some
Heavy 7 1 3
Never 87 18 84
Occas 12 3 4
Regul 9 1 7
最后,我们将chisq.test()
函数应用于列联表 stu_data。
# applying chisq.test() function
print(chisq.test(stu_data))
输出:
Pearson's Chi-squared test
data: stu_data
X-squared = 5.4885, df = 6, p-value = 0.4828
由于 p 值 0.4828 大于 0.05,我们得出结论,吸烟习惯与学生的运动水平无关,因此这两个变量之间的相关性很弱或没有相关性。
完整的 R 代码如下所示。
# R program to illustrate
# Chi-Square Test in R
library(MASS)
print(str(survey))
stu_data = data.frame(survey$Smoke,survey$Exer)
stu_data = table(survey$Smoke,survey$Exer)
print(stu_data)
print(chisq.test(stu_data))
因此,总而言之,可以说使用 R 执行卡方检验非常容易。可以使用 R 中的chisq.test()
函数执行此任务。