【Rで多変量解析#3】判別分析(線形判別分析)

記事の目的

判別分析をRを使用して実装していきます。データの作成から実装するので、コピペで再現することが可能です。

 

目次

  1. ライブラリ
  2. データの作成
  3. データの可視化
  4. 判別分析
  5. 結果の可視化

 

1 ライブラリ

library(dplyr)
library(ggplot2)
library(MASS)

 

2 データの作成

2.1 コード

set.seed(1)
売り上げ <- c(rnorm(50, 2000, 200), rnorm(50, 1700, 200)) %>% round(1)
利用回数 <- c(rpois(50, 30), rpois(50, 20))
顧客 <- c(rep("顧客", 50), rep("退会", 50))
data <- data.frame(売り上げ, 利用回数, 顧客)
data %>% head()

 

2.2 結果

 

3 データの可視化

3.1 コード

data %>%
ggplot()+
geom_point(aes(売り上げ, 利用回数, col=顧客))+
theme_classic(base_family = "HiraKakuPro-W3")+
theme(text=element_text(size=30)) +
labs(title="散布図")

 

3.2 結果

 

4 分析結果

4.1 コード

model <- lda(data=data, 顧客~売り上げ+利用回数)
model

 

4.2 結果

 

5 結果の可視化

5.1 コード

a0 <- - apply(model$means %*% model$scaling,2,mean)
x <- seq(1400, 2200,1)
y <- -model$scaling[1]/model$scaling[2]*x - a0/model$scaling[2]
mu <- apply(model$means, 2, mean)
ggplot()+
geom_point(aes(data$売り上げ, data$利用回数, col=顧客))+
geom_point(aes(mu[1], mu[2]), size=3) +
theme_classic(base_family = "HiraKakuPro-W3")+
theme(text=element_text(size=30)) +
labs(title="散布図", x="売り上げ", y="利用回数") +
geom_line(aes(x,y))

 

5.2 結果