1########################################### GRUPO 1 ############################################23##################################### Miembros del grupo ######################################45# 20163197, Enrique Alfonso Pazos6# 20191894, Ilenia Ttito7# 20151595, Rodrigo Ramos8# 20193469, Luis Eguzquiza9# 20163377, Jean Niño de Guzmán101112########################################## Pregunta 1 ##########################################1314#Creaci?n del Vector con n?meros aleatorios1516Vector<-(sample(0:500, 20)) #Se indica que se cree un vector con 20 n?meros aleatorios entre 0 y 5001718sort(Vector) #Se ordena el Vector para que los valores vayan de menor a mayor.1920#Creaci?n de If Statement21#Se indica que cada valor del Vector se reemplazar? dependiendo de en que rango se encuentre.22for (i in sort(Vector)) {2324#Se determina el valor que tomar? cada valor del Vector acorde al rango indicado el la tarea.25#Y una vez obtenido el resultado, se imprimir? el resultado que cada valor obtuvo despue?s de pasar por el If Statement.26#Rango de 0 a 10027if(i >= 0 & i < 100)28#Se eleva a la 0.529print(i ^ 0.5 )30#Rango de 10 a 30031else if(i > 100 & i <= 300)32#Se resta 533print(i - 5 )34#Rango de 300 a m?s35else if(i > 300 )36#Se reemplaza con 5037print(50)38}3940########################################## Pregunta 2 ##########################################4142escalonar <- function(x) {43# La primera condición es para establecer que, en caso no ser una matriz, no continuará el proceso44# y mostrará un mensaje de error.45if (! is.matrix(x)) stop("No es un vector o matriz")4647# Ahora, pongo la segunda condición, en la que indicaré los criterios para que pase la matriz,48# Me voy a valer del número de filas como condición: número de filas = 10049else if (nrow(x)==100) {50# Extraigo el mínimo y máximo valor de cada columna. Esto me genera un vector con el máximo y otro con el mínimo51# valor de cada columna; max y min son esos vectores respectivamente.52min <- apply(x, 2, min) #Margin = 2 significa que tomará las columnas como criterio.53max <- apply(x, 2, max)5455# Hago una iteración con el número de filas de la matriz sin la necesidad de crear una lista previamente.56for (i in 1:4) {57# Extraeré cada fila de la matriz de acuerdo al valor que tome i en cada iteración58# y hago el proceso de escalonamiento. El proceso lo "reescribo" sobre la misma matriz.59x[i,]<- (x[i,]- min)/(max-min)60}61}62# En caso no pasar por las otras dos condiciones, ingresa aquí el vector.63else {64# Como estoy trabajando sobre un vector, extraigo el mínimo y máximo valor de cada fila.65min <- apply(x, 1, min) #Margin = 1 significa que tomará la fila como criterio.66max <- apply(x, 1, max)67# Hago el proceso de escalonamiento y lo "reescribo" sobre la misma matriz.68x <- (x- min)/(max-min)69}70return(x)}7172# Hacemos las pruebas tanto para una matriz como para un vector:73x <- matrix(rnorm(500), 100, 50)74escalonar (x)757677z <- matrix(rnorm(100), 1, 100)78escalonar (z)798081########################################## Pregunta 3 ##########################################8283# Generamos los valores aleatorios con una poblacion de 1000084x1 <- runif(10000, 0, 1)85x2 <- runif(10000, 0, 1)86x3 <- runif(10000, 0, 1)87x4 <- runif(10000, 0, 1)88x5 <- runif(10000, 0, 1)89e <- rnorm(10000,0,1)9091#Se crea una lista con los diferentes tamanios de muestra92numMuestras <- list(10, 50, 80, 120, 200, 500, 800, 100, 5000)939495#Creamos un bucle, para que itere el codigo con los diferentes tamanos de muestra9697DF <- list ()98#Se pone un for para que itere cada vez que pase con una cantidad diferente de muestra99for (i in 1:length(numMuestras)){100101k=numMuestras[[i]]102103#Especificamos un k=i que contenga el n�mero de tama�os de cada muestra104x1_m = sample(x1, k=i)105x2_m = sample(x2, k=i)106x3_m = sample(x3, k=i)107x4_m = sample(x4, k=i)108109#Se plantea un data frame para cada valor de la muestra110df<-data.frame(dplyr::sample_n(111data.frame(112bind_cols(x1,x2,x3,x4))%>%113setNames(c("x1","x2","x3","x4")),114size=k))115DF[[i]] <- df%>%116mutate(muesta=k)117118Y <- 1 + 0.8*x1_m + 1.2*x2_m + 0.5*x3_m + 1.5*x4_m + e119120#Plantemos el modelo OLS (MCO)121ols <- function(M, Y, instrumento = NULL, index = NULL){122123if (standar & is.null(instrumento) & is.null(index)){124beta <- solve(t(M) %*% M) %*% (t(M) %*% Y)125y_est <- M %*% beta ## Y estimado126n <- dim(M)[1] # filas127k <- dim(M)[2] - 1 # variables sin contar el intercepto128}129130if ( !is.null(instrumento) & !is.null(index) ){131beta <- solve(t(M) %*% M) %*% (t(M) %*% Y)132index <- index + 1133}134}135}136137DF_all<-map_df(DF, bind_rows)138rm(df, DF, k, i)139140141########################################## Pregunta 4 ##########################################142143# Creamos un proceso generador de datos con 8 variables y 800 observaciones.144set.seed(757) #Semilla145146x1 <- runif(800)147x2 <- runif(800)148x3 <- runif(800)149x4 <- runif(800)150x5 <- runif(800)151x6 <- runif(800)152x7 <- runif(800)153e <- rnorm(800,0,1)154155#Iteraci?n de generaci?n de proceso156157Y <- 1 + 0.7*x1 + 1.1*x2 + 0.9*x3 + 1.5*x4 + 0.6*x5 + 0.3*x6 + 0.1*x7 + e158159X <- cbind(matrix(1,800), x1,x2,x3,x4,x5,x6,x7)160head(X)161162163MCO <- function(Y, X,Iis.null,His.null) {164# Calculcar beta y las dimensiones de n y k165# dependiendo de si tiene o no intercepto166if (Iis.null) {167beta <- solve(t(X) %*% X) %*% (t(X) %*% Y)168beta169n <- X.shape[0]170k <- X.shape[1] - 1171} else if (! Iis.null) {172beta <- solve(t(X) %*% X) %*% (t(X) %*% Y)173beta174n <- X.shape[0]175k <- X.shape[1]176}177return(beta)178179# Calculo de Y estimado, SCR, SCT, Sigma(s2)180Yhat = X %*% beta181Yerror = Y-Yhat182Yerror2 = '^'(Yerror, 2)183184SCR =(t(Yerror) %*% Yerror)185Ydesv = Y - (matrix(1,n)*mean(Y))186SCT =(t(Ydesv) %*% Ydesv)187nk=n-k188s2= SCR/nk189190}191# Calculo de Matriz de Varianzas y Covarianzas dependiendo192# si considero ajuste de White o no193if (His.null) {194MatVarCov <- (solve(t(X) %*% X))*s2195} else if(! His.null) {196V <- np.diag(Yerror2)197MatVarCov <- (solve(t(X) %*% X) %*% (t(X) %*% V %*% X) %*% solve(t(X) %*% X))198}199200201202##error est?ndar203sd <- sapply(diag(MatVarCov) , sqrt)204205#Limite superior206limsup <- beta + 1.96*(sd)207208#L?mite inferior209liminf <- beta - 1.96*(sd)210211#p-value212t_est <- abs(beta/sd)213pvalue <- 2 * pt(t.est, df = nk, lower.tail = FALSE)214215#R-cuadrado216R2 <- 1-(SCR/SCT)217Root_MSE <- math.sqrt((t(Yerror) %*% Yerror)/800)218dataf <- data.frame( "Betas"= beta, "standar_error" = sd, "Pvalue" = pvalue)219220return (dataf)221222print(MCO(Y, X))223224225226227