## ----setup, include=FALSE-----------------------------------------------------
knitr::opts_chunk$set(echo = TRUE, message = FALSE)
library(NBtsVarSel)
library(ggplot2)
library(formatR)
set.seed(555)

## ----Y------------------------------------------------------------------------
data(Y)

## ----dimensions, echo=FALSE, eval=TRUE----------------------------------------
n = length(Y)
p = 30

## ----gamma_alpha, echo=FALSE, eval=TRUE---------------------------------------
gamma = c(0.5)
alpha = 2

## ----beta, echo=FALSE, eval=TRUE----------------------------------------------
active=c(1,3,17,21,23)
beta_t_pos=c(1.73,0.38,0.29,-0.64,-0.13)
beta = rep(0,(p+1))
beta[active] = beta_t_pos

## ----X, echo=FALSE, eval=TRUE-------------------------------------------------
X = matrix(NA,(p+1),n)
f = 1/0.7
for(t in 1:n){X[,t]<-c(1,cos(2*pi*(1:(p/2))*t*f/n),sin(2*pi*(1:(p/2))*t*f/n))}

## ----initialization-----------------------------------------------------------
gamma0 = c(0)

glm_nb = glm.nb(Y~t(X)[,2:(p+1)])
beta0<-as.numeric(glm_nb$coefficients)

alpha0 = glm_nb$theta

## ----gammaEst-----------------------------------------------------------------
gamma_est_nr = NR_gamma(Y, X, beta0, gamma0, alpha0, n.iter=100)
gamma_est_nr

## ----variableSelection, tidy=TRUE, tidy.opts=list(width.cutoff=60)------------
result = variable_selectionresult = variable_selection(Y, X, gamma.init=gamma0, alpha.init=NULL, k.max=1, method="cv", t=0.3, n.iter=100, n.rep=1000)
beta_est = result$beta_est
Estim_active = result$estim_active
gamma_est = result$gamma_est
alpha_est = result$alpha_est

## ----print, echo=FALSE, eval=TRUE---------------------------------------------
cat("Estimated active coefficients: ", Estim_active, "\n")
cat("Estimated gamma: ", gamma_est, "\n")
cat("Estimated alphaa: ", alpha_est, "\n")

## ----plot, fig.width=6, fig.height=4, tidy=TRUE, tidy.opts=list(width.cutoff=54)----
#First, we make a dataset of estimated betas
beta_data = data.frame(beta_est)
colnames(beta_data)[1] <- "beta"
beta_data$Variable = seq(1, (p+1), 1)
beta_data$y = 0
beta_data = beta_data[beta_data$beta!=0,]
#Next, we make a dataset of true betas
beta_t_data = data.frame(beta)
colnames(beta_t_data)[1] <- "beta"
beta_t_data$Variable = seq(1, (p+1), 1)
beta_t_data$y = 0
beta_t_data = beta_t_data[beta_t_data$beta!=0,]
#Finally, we plot the result
plot = ggplot()+
  geom_point(data = beta_data, aes(x=Variable, y=y, color=beta), pch=16, size=5, stroke = 2)+
  geom_point(data= beta_t_data, aes(x=Variable, y=y, color=beta), pch=4, size=6, stroke = 2)+
  scale_color_gradient2(name=expression(hat(beta)), midpoint=0, low="steelblue", mid = "white", high ="red")+
  scale_x_continuous(breaks=c(1, seq(10, (p+1), 10)), limits=c(0, (p+1)))+
  scale_y_continuous(breaks=c(), limits=c(-1, 1))+
  theme(legend.title = element_text(color = "black", size = 12, face="bold"), legend.text = element_text(color = "black", size = 10))+
  theme(axis.text.x = element_text(angle = 90), axis.text=element_text(size=10), axis.title=element_text(size=10,face="bold"), axis.title.y=element_blank())
plot