Path: blob/main/Trabajo_grupal/WG1/Grupo_8_R.R
2714 views
" Ejercicio 1"1# -------------------------------------------------------23#Creamos un vector cuyos datos est�n entre 0 y 500 y contenga 20 datos.45x <- runif(20,0,500) # runif( n: cantidad de elementos, inicio , final)6print(x)78# Elaboramos una estructura If statement para la siguiente funci�n9# y aplicamos condici�n a cada uno de los elemento1011calculator <- function(x){12x <- x1314if ( x>0 & x<=100) {15return( cat( "F(x)=" ,x ^ (1/2) ) )16} else if ( x>100 & x<=300 ) {1718return( cat( "F(X)=", x - 5 ) )1920} else if (x>300) {2122return(print("F(X)=50"))2324}2526}2728calculator( 64 )2930" Ejercicio 2"31# -------------------------------------------------------3233# creamos un vector "v" de 100 observaciones34v <- array(1:100)35print(v)3637min(v) #para ir observando el m�nimo de dicho vector38max(v)3940#creamos una matriz "M"41M <- matrix( c(1,2,3,4,5,6,7,8,9,10), nrow = 100, ncol=50) #indicamos que sea una matriz de 100x50.En este caso, tendr� valores del 1 al 1042print(M)4344dim(M) #comprobamos que M sea una matriz de 100x5045typeof(v)46typeof(M) #observamos el tipo4748#para reescalar los datos de las columnas de la matriz, queremos ver sus m�nimos y m�ximos por columna49X <- min(M, axis=0) #axis=0 pq queremos observar por columnas50Y <- max(M, axis=0)51print(X)52print(Y)5354#reescalamos vector y matriz55# No corre el c�digo si detecta un error56tryCatch((v-min(v)) / max(v)-min(v),5758error = function(e) {5960cat("El argumento deberia ser un vector")6162}63)6465tryCatch( (M-X) / Y-X,6667error = function(e) {6869cat("El argumento deberia ser una matriz")7071}72)7374#Pregunta 37576#sample(seq(),10000)77set.seed(10000) # permite que los numeros aleatorios no cambien al correr los c�digos7879x10 <- runif(10)80x210 <- runif(10)81x310 <- runif(10)82x410 <- runif(10)83e <- rnorm(10)8485#Isntrumento8687z <- rnorm(10)8889# Poblacional regression (Data Generating Process GDP)9091Y <- 1 + 0.8*x10 + 1.2*x210 + 0.5*x310 + 1.5*x410 + e92X <- cbind(matrix(1,10), x1,x2,x3,x4)9394ols <- function(M, Y , standar = T, Pvalue = T , instrumento = NULL, index = NULL){959697if (standar & Pvalue & is.null(instrumento) & is.null(index)){9899beta <- solve(t(M) %*% M) %*% (t(M) %*% Y)100101y_est <- M %*% beta ## Y estimado102n <- dim(M)[1] # filas103k <- dim(M)[2] - 1 # varaibles sin contar el intercepto}104df <- n- k ## grados de libertad105sigma <- sum(sapply(Y - y_est , function(x) x ^ 2))/ df106107Var <- sigma*solve(t(M) %*% M)108sd <- sapply(diag(Var) , sqrt) ## ra�z cuadrado a los datos de la diagonal principal de Var109110t.est <- abs(beta/sd)111pvalue <-2*pt(t.est, df = df, lower.tail = FALSE) ## pt : t - student densidad112113table <- data.frame(OLS = beta,114standar.error = sd, P.value = pvalue)115116117}118119120if ( !is.null(instrumento) & !is.null(index) ){121122beta <- solve(t(M) %*% M) %*% (t(M) %*% Y)123124index <- index + 1125126Z <- X127Z[,index] <- z ## reemplazamos la variable end�gena por el instrumento en la matrix de covariables128129beta_x <- solve(t(Z) %*% Z) %*% (t(Z) %*% X[,index])130131x_est <- Z %*% beta_x132X[,index] <- x_est ## se reemplaza la variable x end�gena por su estimado133134beta_iv <- solve(t(X) %*% X) %*% (t(X) %*% Y)135136table <- data.frame(OLS= beta,137OLS.IV = beta_iv)138139}140141return(table)142}143144145ols(X,Y)146147ols(X,Y,instrumento = z, index = 1)148149Uno<-rbind(ols(X,Y))150151x150 <- runif(50)152x250 <- runif(50)153x350 <- runif(50)154x450 <- runif(50)155e <- rnorm(50)156157#Isntrumento158159z <- rnorm(50)160161# Poblacional regression (Data Generating Process GDP)162163Y <- 1 + 0.8*x150 + 1.2*x250 + 0.5*x350 + 1.5*x450 + e164X <- cbind(matrix(1,50), x1,x2,x3,x4)165166ols <- function(M, Y , standar = T, Pvalue = T , instrumento = NULL, index = NULL){167168169if (standar & Pvalue & is.null(instrumento) & is.null(index)){170171beta <- solve(t(M) %*% M) %*% (t(M) %*% Y)172173y_est <- M %*% beta ## Y estimado174n <- dim(M)[1] # filas175k <- dim(M)[2] - 1 # varaibles sin contar el intercepto}176df <- n- k ## grados de libertad177sigma <- sum(sapply(Y - y_est , function(x) x ^ 2))/ df178179Var <- sigma*solve(t(M) %*% M)180sd <- sapply(diag(Var) , sqrt) ## ra�z cuadrado a los datos de la diagonal principal de Var181182t.est <- abs(beta/sd)183pvalue <-2*pt(t.est, df = df, lower.tail = FALSE) ## pt : t - student densidad184185table <- data.frame(OLS = beta,186standar.error = sd, P.value = pvalue)187188189}190191192if ( !is.null(instrumento) & !is.null(index) ){193194beta <- solve(t(M) %*% M) %*% (t(M) %*% Y)195196index <- index + 1197198Z <- X199Z[,index] <- z ## reemplazamos la variable end�gena por el instrumento en la matrix de covariables200201beta_x <- solve(t(Z) %*% Z) %*% (t(Z) %*% X[,index])202203x_est <- Z %*% beta_x204X[,index] <- x_est ## se reemplaza la variable x end�gena por su estimado205206beta_iv <- solve(t(X) %*% X) %*% (t(X) %*% Y)207208table <- data.frame(OLS= beta,209OLS.IV = beta_iv)210211}212213return(table)214}215216217ols(X,Y)218219ols(X,Y,instrumento = z, index = 1)220Dos <-rbind(ols(X,Y))221222x100 <- runif(100)223x2100 <- runif(100)224x3100 <- runif(100)225x4100 <- runif(100)226e <- rnorm(100)227228#Isntrumento229230z <- rnorm(100)231232# Poblacional regression (Data Generating Process GDP)233234Y <- 1 + 0.8*x100 + 1.2*x2100 + 0.5*x3100 + 1.5*x4100 + e235X <- cbind(matrix(1,100), x1,x2,x3,x4)236237ols <- function(M, Y , standar = T, Pvalue = T , instrumento = NULL, index = NULL){238239240if (standar & Pvalue & is.null(instrumento) & is.null(index)){241242beta <- solve(t(M) %*% M) %*% (t(M) %*% Y)243244y_est <- M %*% beta ## Y estimado245n <- dim(M)[1] # filas246k <- dim(M)[2] - 1 # varaibles sin contar el intercepto}247df <- n- k ## grados de libertad248sigma <- sum(sapply(Y - y_est , function(x) x ^ 2))/ df249250Var <- sigma*solve(t(M) %*% M)251sd <- sapply(diag(Var) , sqrt) ## ra�z cuadrado a los datos de la diagonal principal de Var252253t.est <- abs(beta/sd)254pvalue <-2*pt(t.est, df = df, lower.tail = FALSE) ## pt : t - student densidad255256table <- data.frame(OLS = beta,257standar.error = sd, P.value = pvalue)258259260}261262263if ( !is.null(instrumento) & !is.null(index) ){264265beta <- solve(t(M) %*% M) %*% (t(M) %*% Y)266267index <- index + 1268269Z <- X270Z[,index] <- z ## reemplazamos la variable end�gena por el instrumento en la matrix de covariables271272beta_x <- solve(t(Z) %*% Z) %*% (t(Z) %*% X[,index])273274x_est <- Z %*% beta_x275X[,index] <- x_est ## se reemplaza la variable x end�gena por su estimado276277beta_iv <- solve(t(X) %*% X) %*% (t(X) %*% Y)278279table <- data.frame(OLS= beta,280OLS.IV = beta_iv)281282}283284return(table)285}286287288ols(X,Y)289290ols(X,Y,instrumento = z, index = 1)291Tres <-rbind(ols(X,Y))292293x1500 <- runif(500)294x2500 <- runif(500)295x3500 <- runif(500)296x4500 <- runif(500)297e <- rnorm(500)298299#Isntrumento300301z <- rnorm(500)302303# Poblacional regression (Data Generating Process GDP)304305Y <- 1 + 0.8*x1500 + 1.2*x2500 + 0.5*x3500 + 1.5*x4500 + e306X <- cbind(matrix(1,500), x1,x2,x3,x4)307308ols <- function(M, Y , standar = T, Pvalue = T , instrumento = NULL, index = NULL){309310311if (standar & Pvalue & is.null(instrumento) & is.null(index)){312313beta <- solve(t(M) %*% M) %*% (t(M) %*% Y)314315y_est <- M %*% beta ## Y estimado316n <- dim(M)[1] # filas317k <- dim(M)[2] - 1 # varaibles sin contar el intercepto}318df <- n- k ## grados de libertad319sigma <- sum(sapply(Y - y_est , function(x) x ^ 2))/ df320321Var <- sigma*solve(t(M) %*% M)322sd <- sapply(diag(Var) , sqrt) ## ra�z cuadrado a los datos de la diagonal principal de Var323324t.est <- abs(beta/sd)325pvalue <-2*pt(t.est, df = df, lower.tail = FALSE) ## pt : t - student densidad326327table <- data.frame(OLS = beta,328standar.error = sd, P.value = pvalue)329330331}332333334if ( !is.null(instrumento) & !is.null(index) ){335336beta <- solve(t(M) %*% M) %*% (t(M) %*% Y)337338index <- index + 1339340Z <- X341Z[,index] <- z ## reemplazamos la variable end�gena por el instrumento en la matrix de covariables342343beta_x <- solve(t(Z) %*% Z) %*% (t(Z) %*% X[,index])344345x_est <- Z %*% beta_x346X[,index] <- x_est ## se reemplaza la variable x end�gena por su estimado347348beta_iv <- solve(t(X) %*% X) %*% (t(X) %*% Y)349350table <- data.frame(OLS= beta,351OLS.IV = beta_iv)352353}354355return(table)356}357358359ols(X,Y)360361ols(X,Y,instrumento = z, index = 1)362363Cuatro <-rbind(ols(X,Y))364365#Cuadro de resultados:366Cinco<-rbind(Uno,Dos,Tres,Cuatro)367Cinco368369#Se pueden observar los diferentes valores para cada diferente cantidad de muestra, con los coeficientes y errores est�ndar.370371# PREGUNTA 4372373set.seed(800) # Fijamos una semilla para no cambiar los n�meros aleatorios374# Declaramos las variables aleatorias375x1 <- runif(800)376x2 <- runif(800)377x3 <- runif(800)378x4 <- runif(800)379x5 <- runif(800)380x6 <- runif(800)381x7 <- runif(800)382e <- rnorm(800)383384# Definimos el instrumento385z <- rnorm(800)386Y <- 1 + 0.8*x1 + 1.2*x2 + 0.5*x3 + 1.5*x4 +1.5*x5 +1.5*x6 +1.5*x7+ e387X <- cbind(matrix(1,800), x1,x2,x3,x4,x5,x6,x7)388389ols <- function(M, Y , standar = T, Pvalue = T , instrumento = NULL, index = NULL){390391392if (standar & Pvalue & is.null(instrumento) & is.null(index)){393394beta <- solve(t(M) %*% M) %*% (t(M) %*% Y)395396y_est <- M %*% beta # Y estimado397n <- dim(M)[1] # Filas398k <- dim(M)[2] - 1 # Variables sin contar el intercepto399df <- n- k # grados de libertad400sigma <- sum(sapply(Y - y_est , function(x) x ^ 2))/ df401402Var <- sigma*solve(t(M) %*% M)403sd <- sapply(diag(Var) , sqrt) # Raiz cuadrada a los datos de la diagonal principal de Var404root <- sapply(Y - y_est , function(x) x ^ 2)405liminf <- beta -1.96*sd # Limite inferior406limsup <- beta +1.96*sd # Limite superior407t.est <- abs(beta/sd)408pvalue <-2*pt(t.est, df = df, lower.tail = FALSE) # pt : t - student densidad409410# Formamos la tabla con los resultados requeridos411table <- data.frame(OLS = beta,412standar.error = sd, P.value = pvalue, Lim.Inf=liminf, Limf.Sup= limsup)413414}415416417if ( !is.null(instrumento) & !is.null(index) ){418419beta <- solve(t(M) %*% M) %*% (t(M) %*% Y)420421index <- index + 1422423Z <- X424Z[,index] <- z ## reemplazamos la variable end�gena por el instrumento en la matrix de covariables425426beta_x <- solve(t(Z) %*% Z) %*% (t(Z) %*% X[,index])427428x_est <- Z %*% beta_x429X[,index] <- x_est ## se reemplaza la variable x end�gena por su estimado430431beta_iv <- solve(t(X) %*% X) %*% (t(X) %*% Y)432433table <- data.frame(OLS= beta,434OLS.IV = beta_iv)435436}437438return(table)439}440441# Corremos la funcion442ols(X,Y)443444445446