SC19017-package: R package for 'Statistical Computing' course

Description Details Author(s) References Examples

Description

Some R or Rcpp functions for RKSIR

Details

With this R package, we can perform Regularized Kernel Sliced Inverse Regression.

Author(s)

Yue Zhao

Maintainer: Yue Zhao <zhy99@mail.ustc.edu.cn>

References

Wu, Qiang and Liang, Feng and Mukherjee, Sayan (2013) Kernel Sliced Inverse Regression: Regularization and Consistency Abstract and Applied Analysis

Examples

 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
  ## Not run: 
data(wine)
y <- wine[, 1]
X <- scale(wine[, -1], center = TRUE, scale = TRUE)
n <- nrow(X)
## split data into training set and testing set
ns <- c(17, 20, 13)
train <- SC19017::split(y, ns)
test <- (1:n)[-train]
Xtrain <- X[train, ]
Xtest <- X[test, ]
ytrain <- y[train]
ytest <- y[test]
# bandwidth select
distance <- matrix(NA, nrow = n, ncol = n-1)
for(i in 1:n) {
  distance[i, ] <- c(apply(X[-i, ], 1, function(o) {
    sqrt(sum((o - X[i, ])^2))
  }))
}
sigma <- median(distance)
# estimate e.d.r. directions
Kx <- KX(Xtrain, "AG", sigma, center = TRUE)
J <- Jy(ytrain, numeric = FALSE)
ei2 <- Ei(Kx, J, s = 0.01)
vtrain <- Vtr(Xtrain, Xtrain, 2, ei2, "AG", sigma)
vtest <- Vte(Xtest, Xtrain, Xtrain, 2, ei2, "AG", sigma)
# knn
library(class)
knn.pred <- knn(vtrain, vtest, ytrain, k = 5)
knn.result <- rep(NA, 3)
for(i in 1:3) {
  knn.result[i] <- sum(table(knn.pred, ytest)[-i, i])/sum(table(knn.pred, ytest)[, i])
}
mean(knn.result)
table(knn.pred, ytest)
#svm
library(e1071)
svm.model <- svm(vtrain, factor(ytrain))
svm.pred <- predict(svm.model, vtest)
svm.result <- rep(NA, 3)
for(i in 1:3) {
  svm.result[i] <- sum(table(svm.pred, ytest)[-i, i])/sum(table(svm.pred, ytest)[, i])
}
mean(svm.result)
table(svm.pred, ytest)
# plot figure
library(ggplot2)
Test <- data.frame(v1 = vtest[, 1], v2 = vtest[, 2], classes = as.factor(ytest))
ggplot(Test, aes(x = v1, y = v2, col = classes)) + 
  geom_point() + 
  xlab("first e.d.r. direction") + 
  ylab("second e.d.r. direction")
  
## End(Not run)

zhaolotelli/SC19017 documentation built on Jan. 3, 2020, 9:19 p.m.