열렬히.뛰기

판별분석 : 코드

수학 & 통계 > 다변량분석 > 다변량분석 : 코드 > 판별분석 : 코드

판별분석의 사전작업

  • 반드시 정규성 검사를 해줘야 한다.

선형 판별분석

r
## 선형판별분석
library(MASS)
finance.lda <- lda(y~x1+x2+x3+x4,data=finance)
print(finance.lda)

## 선형판별점수
pred1 = predict(finance.lda,finance)
pred1

판별 점수의 응용

r
## 판별 점수 계산 
tmp = finance.lda$means
tmp4 = as.matrix(finance[,2:5]) %*% matrix(finance.lda[[4]], ncol=1)
## 판별 점수의 요약
tapply(tmp4,finance$y,function(xxx) round(c(mean(xxx),sd(xxx)),2))

## 판별 점수의 시각화
par(mfcol=c(1,2))
boxplot(pred1$x~finance$y);abline(h=0,col='grey')
boxplot(tmp4~finance$y);abline(h=0,col='grey')

## 판별 점수의 비교
cbind(finance$y,pred1$x,tmp4,pred1$x-tmp4)

예측 결과 저장 및 출력

r
finance.pred1 = cbind(finance, pred1$x, pred1$posterior, pred1$class)
print(finance.pred1,digits=3)
table(finance$y,pred1$class)

정오분류표

실제 클래스와 예측된 클래스의 교차표

r
finance.ctbl1 = table(finance$y,pred1$class)
library(DescTools)
Desc(finance.ctbl1,digits=2)

Box’s M-test

모공분산행렬의 동일성 검정

r
## box's M-test
## h0 : 모든 그룹의 공분산 행렬이 동일하다
library(biotools)
finance.boxM = boxM(finance[,2:5],finance$y)
finance.boxM

이차 판별분석

r
finance.qda = qda(y ~ x1 + x2 + x3 + x4, data = finance)
pred2 = predict(finance.qda,finance)
finance.ctbl2 = table(finance$y,pred2$class)
library(DescTools)
Desc(finance.ctbl2,digits=2)