# NOT RUN {
#Linear model data, large n, small p
mydata <- unisimrel(n = 250, p = 20, q = 5, relpos = c(2, 4), gamma = 0.25, R2 = 0.75)
#Estimating model parameters using ordinary least squares
lmfit <- lm(mydata$Y ~ mydata$X)
summary(lmfit)
#Comparing true with estimated regression coefficients
plot(mydata$beta, lmfit$coef[-1], xlab = "True regression coefficients",
ylab = "Estimated regression coefficients")
abline(0,1)
#Linear model data, small n, large p
mydata <- unisimrel(n = 50, p = 200, q = 25, relpos = c(2, 4), gamma = 0.25, R2 = 0.8 )
#Simulating more samples with identical distribution as previous simulation
mydata2 <- unisimrel(n = 2500, sim = mydata)
#Estimating model parameters using partial least squares regression with
#cross-validation to determine the number of relevant components.
if (requireNamespace("pls", quietly = TRUE)) {
require(pls)
plsfit <- plsr(mydata$Y ~ mydata$X, 15, validation = "CV")
#Validation plot and finding the number of relevant components.
plot(0:15, c(plsfit$validation$PRESS0, plsfit$validation$PRESS),
type = "b", xlab = "Components", ylab = "PRESS")
mincomp <- which(plsfit$validation$PRESS == min(plsfit$validation$PRESS))
#Comparing true with estimated regression coefficients
plot(mydata$beta, plsfit$coef[, 1, mincomp], xlab = "True regression coefficients",
ylab = "Estimated regression coefficients")
abline(0, 1)
}
# }
Run the code above in your browser using DataLab