Path: blob/main/Trabajo_grupal/WG1/Solution/r_script.R
4596 views
1#######################################23" Homework 1 - solution "4" @author: Roberto Mendoza "5" @date: 12/09/2020 "67#######################################89"1. IF statement and Loop"1011vector <- sample( seq(500) , 20) # seq(500) valores entre 0 y 500, 20 observaciones1213length(vector)1415for (i in seq(20)){1617x <- vector[i]1819if (x<=100) { y = x^(0.5)20} else if (x>100 & x <=300) { y = x - 521} else if (x>300) { y = 50 }2223vector[i] <- y2425}262728"2. IF statement and Loop, escalar function"293031## Escalar a vector3233vector2 <- sample( seq(500) , 100) # seq(500) valores entre 0 y 500, 100 observaciones3435length(vector2)3637for (i in seq(100)){3839x <- vector2[i]40max <- max(vector2)41min <- min(vector2)4243y <- (x - min)/(max-min)4445vector2[i] <- y4647}4849vector25051## Escalar Matrix5253set.seed(756)5455total <- 100*50 # total elements5657elements <- sample(total) # random number5859M <- matrix(elements , nrow = 100, ncol = 50) # reshape matrix6061dim(M)6263for (i in seq(dim(M)[2] )){6465max <- max(M[,i])66min <- min(M[,i])676869for (j in seq(dim(M)[1] )){7071x <- M[j,i]7273y <- (x - min)/(max-min)7475M[j,i] <- y76}77}7879print(M)8081"3. OLS and Loop"82838485set.seed(756)8687x1 <- runif(10000)88x2 <- runif(10000)89x3 <- runif(10000)90x4 <- runif(10000)91x4 <- runif(10000)92x5 <- rnorm(10000)93e <- rnorm(1000)9495# Poblacional regression (Data Generating Process GDP)9697Y <- 1 + 0.8*x1 + 1.2*x2 + 0.5*x3 + 1.5*x4 + 0.5*x5 + e9899100#M1 <- matrix(0,8,2)101102X <- cbind(matrix(1,10000), x1,x2,x3,x5) # omitiendo la cuarta variable103104105size <- c(10,50,80,120,200,500,800,1000,5000)106107beta <- matrix(0,length(size),5)108sd <- matrix(0,length(size),5)109110Reg <- function(X,Y){111112beta <- solve(t(X) %*% X) %*% (t(X) %*% Y)113y_est <- X %*% beta ## Y estimado114n <- dim(X)[1] # filas115k <- dim(X)[2] - 1 # varaibles sin contar el intercepto}116df <- n- k ## grados de libertad117sigma <- sum(sapply(Y - y_est , function(x) x ^ 2))/ df118119Var <- sigma*solve(t(X) %*% X)120sd <- sapply(diag(Var) , sqrt) #121122123return(list(beta,sd))124125}126127j <- 0128129for (i in size) {130j <- j + 1131filter <- sample( seq(10000) , i)132X1 <- X[filter,] # filter filas de todas las columnas133Y1 <- Y[filter] # filter oservaciones del vector Y134135beta[j,] <- matrix ( unlist( Reg(X1,Y1)[1]), 1, 5)136sd[j,] <- matrix ( unlist( Reg(X1,Y1)[2] ), 1, 5)137}138139table <- data.frame(sample_size= size,140beta_inter = beta[,1], sd_inter = sd[,1],141beta_x1 = beta[,2], sd_x1= sd[,2],142beta_x2 = beta[,3], sd_x2 = sd[,3],143beta_x3 = beta[,4], sd_x3 = sd[,4],144beta_x5= beta[,5], sd_x5 = sd[,5]145)146147table148149150151"4. Fucntion OLS"152153x1 <- rnorm(800)154x2 <- rnorm(800)155x3 <- rnorm(800)156x4 <- rnorm(800)157x5 <- rnorm(800)158x6 <- rnorm(800)159x7 <- rnorm(800)160161e <- rnorm(800)162163164Y <- 1 + 0.8*x1 + 1.2*x2 + 0.5*x3 + 1.5*x4 + 0.2*x5+0.5*x6+2*x7+e165X <- cbind(matrix(1,800), x1,x2,x3,x4,x5,x6,x7)166167168ols <- function(M, Y , intercepto = TRUE, Robust.sd = FALSE){169170171if (intercepto){172173beta <- solve(t(M) %*% M) %*% (t(M) %*% Y)174175y_est <- M %*% beta ## Y estimado176n <- dim(M)[1] # filas177k <- dim(M)[2] - 1 # varaibles sin contar el intercepto}178df <- n- k ## grados de libertad179180if (Robust.sd==F){181182sigma <- sum(sapply(Y - y_est , function(x) x ^ 2))/ df183Var <- sigma*solve(t(M) %*% M)184sd <- sapply(diag(Var) , sqrt) ## raíz cuadrado a los datos de la diagonal principal de Var185186t.est <- abs(beta/sd)187pvalue <-2*pt(t.est, df = df, lower.tail = FALSE) ## pt : t - student densidad188189lower_bound <- beta-1.96*sd190upper_bound <- beta+1.96*sd191192SCR <- sum(sapply(Y - y_est , function(x) x ^ 2))193SCT <- sum(sapply(Y - mean(y_est) , function(x) x ^ 2))194195R2 <- 1-SCR/SCT196197rmse <- sqrt(SCR/n)198199table <- data.frame(OLS = beta,200standar.error = sd, P.value = pvalue, Lower.bound=lower_bound ,201Upper.bound = upper_bound)202203fit_var <- c(R2,rmse)204}else{205206207Matrix_robust <- diag(sapply(Y - y_est , function(x) x ^ 2),n)208209210211212Var <- solve(t(M) %*% M) %*% t(M) %*% Matrix_robust %*% t(M) %*% solve(t(M) %*% M)213sd <- sapply(diag(Var) , sqrt) ## raíz cuadrado a los datos de la diagonal principal de Var214215t.est <- abs(beta/sd)216pvalue <-2*pt(t.est, df = df, lower.tail = FALSE) ## pt : t - student densidad217218lower_bound <- beta-1.96*sd219upper_bound <- beta+1.96*sd220221SCR <- sum(sapply(Y - y_est , function(x) x ^ 2))222SCT <- sum(sapply(Y - mean(y_est) , function(x) x ^ 2))223224R2 <- 1-SCR/SCT225226rmse <- sqrt(SCR/n)227228table <- data.frame(OLS = beta,229standar.error = sd, P.value = pvalue, Lower.bound=lower_bound ,230Upper.bound = upper_bound)231232fit_var <- c(R2,rmse)233234}235236237}else {238239M <- M[,2:ncol(M)]240241beta <- solve(t(M) %*% M) %*% (t(M) %*% Y)242243y_est <- M %*% beta ## Y estimado244n <- dim(M)[1] # filas245k <- dim(M)[2] - 1 # varaibles sin contar el intercepto}246df <- n- k ## grados de libertad247248if (Robust.sd==F){249250sigma <- sum(sapply(Y - y_est , function(x) x ^ 2))/ df251Var <- sigma*solve(t(M) %*% M)252sd <- sapply(diag(Var) , sqrt) ## raíz cuadrado a los datos de la diagonal principal de Var253254t.est <- abs(beta/sd)255pvalue <-2*pt(t.est, df = df, lower.tail = FALSE) ## pt : t - student densidad256257lower_bound <- beta-1.96*sd258upper_bound <- beta+1.96*sd259260SCR <- sum(sapply(Y - y_est , function(x) x ^ 2))261SCT <- sum(sapply(Y - mean(y_est) , function(x) x ^ 2))262263R2 <- 1-SCR/SCT264265rmse <- sqrt(SCR/n)266267table <- data.frame(OLS = beta,268standar.error = sd, P.value = pvalue, Lower.bound=lower_bound ,269Upper.bound = upper_bound)270271fit_var <- c(R2,rmse)272}else{273274275Matrix_robust <- diag(sapply(Y - y_est , function(x) x ^ 2),n)276277278Var <- solve(t(M) %*% M) %*% t(M) %*% Matrix_robust %*% M %*% solve(t(M) %*% M)279sd <- sapply(diag(Var) , sqrt) ## raíz cuadrado a los datos de la diagonal principal de Var280281t.est <- abs(beta/sd)282pvalue <-2*pt(t.est, df = df, lower.tail = FALSE) ## pt : t - student densidad283284lower_bound <- beta-1.96*sd285upper_bound <- beta+1.96*sd286287SCR <- sum(sapply(Y - y_est , function(x) x ^ 2))288SCT <- sum(sapply(Y - mean(y_est) , function(x) x ^ 2))289290R2 <- 1-SCR/SCT291292rmse <- sqrt(SCR/n)293294table <- data.frame(OLS = beta,295standar.error = sd, P.value = pvalue, Lower.bound=lower_bound ,296Upper.bound = upper_bound)297298fit_var <- c(R2,rmse)299300}301302}303304return(list(table,fit_var))305306}307308ols(X,Y)309310ols(X,Y, intercepto = F, Robust.sd = T)311312313314315316317318319320321322323324325326327