Advertisement
edo99_

Untitled

Apr 19th, 2023
102
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
R 1.66 KB | None | 0 0
  1. library(glmnet)
  2. library(mvtnorm)
  3.  
  4. # Data generating process
  5. nsim <- 1000 # numero simulazioni
  6. n <- 50 # numero osservazioni
  7. p <- 100 # numero varaibili indipendenti
  8. significative <- 20 # numero variabili indipendenti significative
  9. beta_value <- 8 # valore del coeff beta
  10. beta_vector <- c(rep(beta_value, significative), rep(0,p-significative)) # vettore dei beta
  11. sigma_X <- (1/n)^.5 # deviazione standard della distribuzione normale utilizzata per generare le variabili indipendenti
  12. sigma_epsilon <- 1 # deviazione standard della distribuzione normale utilizzata per generare l'errore
  13. Sigma <- clusterGeneration::rcorrmatrix(p, alphad=1) # matrice di varianza e covarianza che rappresenta appunto la correlazione tra le p variabili indipendenti
  14. mean_corr <- mean(Sigma[upper.tri(Sigma)]) # correlazione media delle variabili
  15.  
  16. epsilon <- rnorm(n,0,sigma_epsilon) # genero l'errore da una normale N(0,1)
  17. X <- mvtnorm::rmvnorm(n,sigma = Sigma) # genero la matrice di dati nxp, ogni riga rappresenta un'osservazione, ogni colonna una variabile indipendente
  18. Y <- X%*%beta_vector + epsilon # genero la variabile dipendente come combinazione lineare delle X e del vettore dei beta con l'aggiunta di un errore
  19.  
  20. # OLS Estimator
  21. fit.ols <- lm(Y ~ X)
  22. stime_ols <- fit.ols$coefficients
  23.  
  24. # Scelgo il lambda ottimale mediante CV
  25. cv.ridge <- cv.glmnet(x=X,y=Y,family="gaussian", alpha=0)
  26. optimal_lambda <- cv.ridge$lambda.min
  27. optimal_lambda
  28.  
  29. # Ridge Estimator
  30. fit.ridge <- glmnet(x=X,y=Y,family="gaussian", alpha=0, lambda = optimal_lambda)
  31. stime_ridge <- fit.ridge$beta
  32.  
  33. # MSE
  34. mse_ols <- mean((stime_ols - beta_vector)^2)
  35. mse_ridge <- mean((stime_ridge - beta_vector)^2)
  36.  
  37.  
  38. # Plots
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement