本周学习了判别分析法,包括距离分析法、Bayes分析法、Fisher分析法,根据今后使用的情况,作业均采用多元分析法的方式 作业1:习题实体书P420页 习题8.1
X1 <- c(-1.9, -6.9, 5.2, 5, 7.3, 6.8, 0.9, -12.5, 1.5, 3.8, 0.2, -0.1, 0.4,
2.7, 2.1, -4.6, -1.7, -2.6, 2.6, -2.8)
X2 <- c(3.2, 10.4, 2, 2.5, 0, 12.7, -15.4, -2.5, 1.3, 6.8, 0.2, 7.5, 14.6, 8.3,
0.8, 4.3, 10.9, 13.1, 12.8, 10)
RainDf <- data.frame(X1, X2)
RainFactor <- gl(2, 10)
RainTst <- matrix(c(8.1, 2), nrow = 1)
1.距离判别法:
source("distinguish.distance.R")
distinguish.distance(RainDf, RainFactor, var.equal = T)
## 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20
## belong 1 2 1 1 1 2 1 1 1 1 1 2 2 2 1 2 2 2 2 2
distinguish.distance(RainDf, RainFactor, var.equal = F)
## 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20
## belong 1 1 1 1 1 1 1 1 1 1 1 2 2 1 1 1 2 2 1 2
根据结果可知考虑方差不同时误判较高(75%),方差相同(正确率80%)进行预测.但是方差不同对下雨的预测比较准确
distinguish.distance(RainDf, RainFactor, RainTst, var.equal = T)
## 1
## belong 1
distinguish.distance(RainDf, RainFactor, RainTst, var.equal = F)
## 1
## belong 1
预测结果均为有雨
2.Bayes判别法
source("distinguish.bayes.R")
distinguish.bayes(RainDf, RainFactor, var.equal = T)
## 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20
## Belong 1 2 1 1 1 2 1 1 1 1 1 2 2 2 1 2 2 2 2 2
distinguish.bayes(RainDf, RainFactor, var.equal = F)
## 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20
## Belong 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1
Bayes在方差不同时,完全失效,下面使用方差相同的情况进行预测
distinguish.bayes(RainDf, RainFactor, TstX = RainTst, var.equal = T)
## 1
## Belong 1
结果预测有雨
3.Fisher判别法 这里不使用薛毅教材的程序,直接调用lda函数
library(MASS)
RainTst = data.frame(X1 = c(8.1), X2 = c(2))
rt <- lda(RainFactor ~ X1 + X2, data = RainDf)
predict(rt, RainTst)$class
## [1] 1
## Levels: 1 2
结果也是预测有雨
结论:根据上述3次判别的结论,明天应预报下雨