【Rで多変量解析#10】数量化3類

記事の目的

数量化3類をRを使用して実装していきます。データの作成から実装するので、コピペで再現することが可能です。

 

目次

  1. ライブラリ
  2. データの作成
  3. データの消去
  4. 数量化3類
  5. 結果の可視化

 

1 ライブラリ

library(dplyr)
library(ggplot2)
library(MASS)
library(ggrepel)
library(gridExtra)

 

2 データの作成

set.seed(1)
英語 <- rnorm(15, 50, 10) %>% round()
数学 <- rnorm(15, 50, 10) %>% round()
国語 <- rnorm(15, 英語, 5) %>% round()
理科 <- rnorm(15, 数学, 5) %>% round()
社会 <- rnorm(15, 国語, 3) %>% round()
data <- data.frame(英語, 数学, 国語, 理科, 社会) %>%
mutate(英語=ifelse(英語>50, 1, 0)) %>%
mutate(数学=ifelse(数学>50, 1, 0)) %>%
mutate(国語=ifelse(国語>50, 1, 0)) %>%
mutate(理科=ifelse(理科>50, 1, 0)) %>%
mutate(社会=ifelse(社会>50, 1, 0))
data %>% head()

 

3 データの消去

data <- data[data %>% apply(1,sum) != 0,]
rownames(data) <- 1:nrow(data)
data %>% head()

 

4 数量化3類

model <- corresp(as.matrix(data), nf=2)
model

 

5 結果の可視化

p1 <- ggplot() +
  geom_text_repel(aes(model$rscore[,1],model$rscore[,2],label=1:nrow(data)), size=10) + 
  theme_classic(base_family = "HiraKakuPro-W3")+
  theme(text=element_text(size=30)) +
  labs(title="データプロット", x=expression(x[1]), y=expression(x[2]))

p2 <- ggplot() +
  geom_text_repel(aes(model$cscore[,1],model$cscore[,2],label=colnames(data)), size=10, family="HiraKakuPro-W3") + 
  theme_classic(base_family = "HiraKakuPro-W3")+
  theme(text=element_text(size=30)) +
  labs(title="データプロット", x=expression(y[1]), y=expression(y[2]))

grid.arrange(p1, p2)