Created
July 21, 2019 18:53
-
-
Save statcompute/24a6c8bfcc19c5c64bdaa5fd5835e4d3 to your computer and use it in GitHub Desktop.
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
data(Boston, package = "MASS") | |
### CONSTRUCT THE UNWEIGHTED DATA.FRAME WITH DUPLICATES | |
df1 <- rbind(Boston[rep(seq(100), 5), ], Boston) | |
nrow(df1) | |
# 1006 | |
X1 <- scale(df1[, 1:13]) | |
Y1 <- df1[, 14] | |
N1 <- grnn.fit(X1, Y1) | |
### CONSTRUCT THE WEIGHTED DATA.FRAME WITHOUT DUPLICATES | |
XY <- data.frame(X1, Y1) | |
df2 <- Reduce(rbind, lapply(split(XY, XY[, colnames(XY)], drop = T), | |
function(x_) data.frame(x_[1, ], cnt = nrow(x_)))) | |
nrow(df2) | |
# 506 | |
sum(df2$cnt) | |
# 1006 | |
X2 <- as.matrix(df2[, 1:13]) | |
Y2 <- df2[, 14] | |
W2 <- df2[, 15] | |
N2 <- grnn.fit(X2, Y2, W2) | |
### IDENTICAL PREDICTED VALUES WITH UNWEIGHTED AND WEIGHTED DATA.FRAMES | |
grnn.predone(N1, X1[1, ]) | |
# 24.69219 | |
grnn.predone(N2, X1[1, ]) | |
# 24.69219 | |
all.equal(grnn.predict(N1, X1[1:100, ]), grnn.predict(N2, X1[1:100, ])) | |
# TRUE | |
### COMPUTING TIME ROUGHLY LINEAR WITH RESPECT TO SIZE OF UNIQUE TRAINING SAMPLE | |
rbenchmark::benchmark(replications = 10, order = "elapsed", relative = "elapsed", | |
columns = c("test", "replications", "elapsed", "relative"), | |
" NO WEIGHT" = grnn.predict(N1, X1[1:100, ]), | |
"USE WEIGHT" = grnn.predict(N2, X1[1:100, ]) | |
) | |
# test replications elapsed relative | |
# 2 USE WEIGHT 10 2.157 1.000 | |
# 1 NO WEIGHT 10 5.506 2.553 |
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment