类别变量分析(R语言实现)

本文主要介绍基于R实现类别变量分析,主要包括:

(1)拟合优度检验用于检验 一个分类变量各类别的观察频数与期望频数是否有显著性差异, 或者说是检验一个分类变量各类别观察频数的分布是否符合某一理论分布。

(2)独立性检验主要是用于分析判断两个分类变量是否独立。它是在假设两分类变量独立的情况下计算出理论频数,从而再与观察频数作比较,看是否有显著性差异。

一个分类变量的拟合优度检验

期望频数相等时的拟合优度检验

1
load("Rdata\\example\\ch7\\example7_1.RData")
1
example7_1
A data.frame: 4 × 2
饮料类型人数
<fct><dbl>
1碳酸饮料525
2矿泉水 550
3果汁 470
4其他 455
1
chisq.test(example7_1$人数)
    Chi-squared test for given probabilities

data:  example7_1$人数
X-squared = 12.1, df = 3, p-value = 0.007048

期望频数不相等时的拟合优度检验

1
load("Rdata\\example\\ch7\\example7_2.RData")
1
example7_2
A data.frame: 5 × 3
受教育程度离婚家庭数期望比例
<fct><int><dbl>
小学及以下 300.20
初中 1100.35
高中 800.25
大学 250.12
研究生 150.08
1
chisq.test(example7_2$离婚家庭数, p = example7_2$期望比例)
    Chi-squared test for given probabilities

data:  example7_2$离婚家庭数
X-squared = 19.586, df = 4, p-value = 0.0006028

两个分类变量的独立性检验(列联分析)

1
2
3
4
5
# 数据已经是列联表了
x <- c(126,158,35,34,82,65)
M <- matrix(x, nr=2, nc=3, byrow=TRUE, dimnames=list(c("满意","不满意"),c("东部","中部","西部")))
M
chisq.test(M)
A matrix: 2 × 3 of type dbl
东部中部西部
满意12615835
不满意 34 8265
    Pearson's Chi-squared test

data:  M
X-squared = 51.827, df = 2, p-value = 5.572e-12
1
2
3
4
5
6
7
8
9
10
# 根据原始数据进行检验
load("Rdata\\example\\ch7\\example7_3.RData")
head(example7_3)

# 计算列联表
fre_table <- table(example7_3)
fre_table

# 独立性检验
chisq.test(fre_table)
A data.frame: 6 × 2
满意度地区
<fct><fct>
1满意东部
2满意东部
3满意东部
4满意东部
5满意东部
6满意东部
        地区
满意度   东部 西部 中部
  不满意   34   65   82
  满意    126   35  158


    Pearson's Chi-squared test

data:  fre_table
X-squared = 51.827, df = 2, p-value = 5.572e-12
1
2
3
4
5
6
7
8
9
10
11
12
13
# 是否满意与地区是否相互独立(独立性检验) 等价于 各地区的满意度是否符合均匀分布(拟合优度检验)
# 因此,当检验两个分类变量是否独立,且其中一个变量为二分类变量时,拟合优度检验可以同样适用
# 根据原始数据进行检验
load("Rdata\\example\\ch7\\example7_3.RData")
head(example7_3)


# 计算实际频数
fre_table <- table(example7_3[example7_3$满意度 == "满意", ]$地区)
fre_table

# 独立性检验
chisq.test(fre_table)
A data.frame: 6 × 2
满意度地区
<fct><fct>
1满意东部
2满意东部
3满意东部
4满意东部
5满意东部
6满意东部
东部 西部 中部 
 126   35  158 


    Chi-squared test for given probabilities

data:  fre_table
X-squared = 76.596, df = 2, p-value < 2.2e-16

两个分类变量的相关性度量

1
2
load("D:\\Rdata\\example\\ch7\\example7_3.RData")
head(example7_3)
满意度地区
满意东部
满意东部
满意东部
满意东部
满意东部
满意东部
1
2
3
# 计算列联表
fre_table <- table(example7_3)
fre_table
        地区
满意度   东部 西部 中部
  不满意   34   65   82
  满意    126   35  158
1
2
# install.packages('vcd')
library(vcd)
1
2
3
4
# Likelihood Ratio 似然比检验
# Pearson 皮尔逊检验(卡方检验)
# Phi相关系数、Contingency Coeff列联系数、Cramer's V 系数
assocstats(fre_table)
                    X^2 df   P(> X^2)
Likelihood Ratio 51.326  2 7.1559e-12
Pearson          51.827  2 5.5718e-12

Phi-Coefficient   : NA 
Contingency Coeff.: 0.306 
Cramer's V        : 0.322 
打赏
  • 版权声明: 本博客所有文章除特别声明外,著作权归作者所有。转载请注明出处!
  • Copyrights © 2022-2024 归一
  • 访问人数: | 浏览次数:

请我喝杯咖啡吧~

支付宝
微信