Achal Neupane
Achal Neupane

Reputation: 5719

Equivalent of validation plot in ggplot

I am trying to write the code to plot validationplot {pls}'s equivalent using ggplot.

I could make this using base R, but could'nt figure out how to plot this in ggplot. Can someone please help me?

library(pls)
library(ggplot2)
library(ISLR)
data("College")
clg=College

cat("Partitioning 50/50")
set.seed(702)
trainindex=sample(1:nrow(clg),size=ceiling(nrow(clg)/2))

ctrain=clg[trainindex,]
ctest=clg[-trainindex,]

dim(ctrain)
dim(ctest)

pcre = pcr(Apps ~ .,
           data = ctrain,
           scale = T,
           validation = "CV")
#Validation plot
vplote = validationplot(pcre, val.type = "MSEP", xaxt = "none")
axis(1, at = 0:17, labels = 0:17)
abline(
  h = c(1:30) / 3 * 1e6,
  v = c(0:17),
  col = "gray",
  lty = 3
)

Upvotes: 1

Views: 362

Answers (1)

rsrjohnson
rsrjohnson

Reputation: 120

You can simply find the MSEP using the MSEP function on your pcre variable and from there you can handle everything with ggplot (see the code and image below).

library(pls)
library(ggplot2)
library(ISLR)
data("College")
clg=College

cat("Partitioning 50/50")
set.seed(702)
trainindex=sample(1:nrow(clg),size=ceiling(nrow(clg)/2))

ctrain=clg[trainindex,]
ctest=clg[-trainindex,]

dim(ctrain)
dim(ctest)

pcre = pcr(Apps ~ .,
           data = ctrain,
           scale = T,
           validation = "CV")

#Validation ggplot

ggplot(data.frame(Components=0:17,MSEP=MSEP(pcre)$val[1, 1,]),
       aes(x=Components,y=MSEP))+geom_line()+geom_point()

enter image description here

Upvotes: 3

Related Questions