classX1 <- data.frame(x1 = c(-1.9, -6.9, 5.2, 5, 7.3, 6.8, 0.9, -12.5, 1.5,
3.8), x2 = c(3.2, 10.4, 2, 2.5, 0, 12.7, -15.4, -2.5, 1.3, 6.8))
classX1
## x1 x2
## 1 -1.9 3.2
## 2 -6.9 10.4
## 3 5.2 2.0
## 4 5.0 2.5
## 5 7.3 0.0
## 6 6.8 12.7
## 7 0.9 -15.4
## 8 -12.5 -2.5
## 9 1.5 1.3
## 10 3.8 6.8
classX2 <- data.frame(x1 = c(0.2, -0.1, 0.4, 2.7, 2.1, -4.6, -1.7, -2.6, 2.6,
-2.8), x2 = c(0.2, 7.5, 14.6, 8.3, 0.8, 4.3, 10.9, 13.1, 12.8, 10))
classX2
## x1 x2
## 1 0.2 0.2
## 2 -0.1 7.5
## 3 0.4 14.6
## 4 2.7 8.3
## 5 2.1 0.8
## 6 -4.6 4.3
## 7 -1.7 10.9
## 8 -2.6 13.1
## 9 2.6 12.8
## 10 -2.8 10.0
test <- data.frame(X1 = c(8.1), X2 = c(2))
test
## X1 X2
## 1 8.1 2
source("../R-Book-Demo/ch8/discriminiant.distance.R")
blong.distance <- discriminiant.distance(classX1, classX2, test)
blong.distance
## 1
## blong 1
距离判别结果为1,表示待测样本属于classX1,判别明天为“雨天”。
source("../R-Book-Demo/ch8/discriminiant.bayes.R")
blong.bayes.true <- discriminiant.bayes(classX1, classX2, TstX = test, var.equal = TRUE)
blong.bayes.true
## 1
## blong 1
blong.bayes.false <- discriminiant.bayes(classX1, classX2, TstX = test, var.equal = FALSE)
blong.bayes.false
## 1
## blong 1
方差相同和不同时,bayes判别结果均为下雨。
source("../R-Book-Demo/ch8/discriminiant.fisher.R")
blong.fisher <- discriminiant.fisher(classX1, classX2, TstX = test)
blong.fisher
## 1
## blong 1
Fisher判别结果为:明天下雨
data8_2 <- read.table("data8_2.txt", header = TRUE)
data8_2
## 序号 类别 x1 x2 x3 x4
## 1 1 I 8.11 261.0 13.23 7.36
## 2 2 I 9.36 185.4 9.02 5.99
## 3 3 I 9.85 249.6 15.61 6.11
## 4 4 I 2.55 137.1 9.21 4.35
## 5 5 I 6.01 231.3 14.27 8.79
## 6 6 I 9.64 231.4 13.03 8.53
## 7 7 I 4.11 260.2 14.72 10.02
## 8 8 I 8.90 259.9 14.16 9.79
## 9 9 I 7.71 273.8 16.01 8.79
## 10 10 I 7.51 303.6 19.14 8.53
## 11 11 I 8.06 231.0 14.41 6.15
## 12 12 II 6.80 308.9 15.11 8.49
## 13 13 II 8.68 258.7 14.02 7.16
## 14 14 II 5.67 355.5 15.13 9.43
## 15 15 II 8.10 476.7 7.38 11.32
## 16 16 II 3.71 316.3 17.12 8.17
## 17 17 II 5.37 274.6 16.75 9.67
## 18 18 II 9.89 409.4 19.47 10.49
## 19 19 III 5.22 330.3 18.19 9.61
## 20 20 III 4.71 331.5 21.26 13.72
## 21 21 III 4.71 352.5 20.79 11.00
## 22 22 III 3.36 347.3 17.90 11.19
## 23 23 III 8.27 189.6 12.74 6.94
X <- data8_2[, 3:6]
X
## x1 x2 x3 x4
## 1 8.11 261.0 13.23 7.36
## 2 9.36 185.4 9.02 5.99
## 3 9.85 249.6 15.61 6.11
## 4 2.55 137.1 9.21 4.35
## 5 6.01 231.3 14.27 8.79
## 6 9.64 231.4 13.03 8.53
## 7 4.11 260.2 14.72 10.02
## 8 8.90 259.9 14.16 9.79
## 9 7.71 273.8 16.01 8.79
## 10 7.51 303.6 19.14 8.53
## 11 8.06 231.0 14.41 6.15
## 12 6.80 308.9 15.11 8.49
## 13 8.68 258.7 14.02 7.16
## 14 5.67 355.5 15.13 9.43
## 15 8.10 476.7 7.38 11.32
## 16 3.71 316.3 17.12 8.17
## 17 5.37 274.6 16.75 9.67
## 18 9.89 409.4 19.47 10.49
## 19 5.22 330.3 18.19 9.61
## 20 4.71 331.5 21.26 13.72
## 21 4.71 352.5 20.79 11.00
## 22 3.36 347.3 17.90 11.19
## 23 8.27 189.6 12.74 6.94
G <- factor(data8_2[, 2], labels = c(1:3))
G
## [1] 1 1 1 1 1 1 1 1 1 1 1 2 2 2 2 2 2 2 3 3 3 3 3
## Levels: 1 2 3
source("../R-Book-Demo/ch8/distinguish.distance.R")
Dist1 = distinguish.distance(X, G, var.equal = TRUE)
which(Dist1 != G)
## [1] 7 10 13 17 23
Dist2 = distinguish.distance(X, G, var.equal = FALSE)
which(Dist2 != G)
## [1] 1 10 13 17 19
无论方差相同与否,共有5个样本判错,回代的判别正确率为18/23=78.26%;其中1类错判2个,2类错判2个,3类错判1个。
source("../R-Book-Demo/ch8/distinguish.bayes.R")
p = c(11, 7, 5)/23
Bayes1 = distinguish.bayes(X, G, var.equal = TRUE, p)
which(Bayes1 != G)
## [1] 13 17 19 23
方差相同时,共有4个样本判错,回代的判别正确率为19/23=82.81%;其中1类错判0个,2类错判2个,3类错判2个。
Bayes2 = distinguish.bayes(X, G, var.equal = FALSE, p)
which(Bayes2 != G)
## [1] 1 10 13 17 19 21 22 23
方差不同时,共有8个样本判错,回代的判别正确率为15/23=65.22%;其中1类错判2个,2类错判2个,3类错判4个。