Path: blob/main/Trabajo_grupal/WG1/Grupo_9_r.R
2714 views
#Grupo _ 912#20180783 Romina Garibay3#20183566 Marissa Vergara4#20163164 Lisbeth Morales567############Ej.1############8910v <- sample(0:500, size = 20) #vector cuyos datos estén entre 0 y 500, el vector tiene 20 datos11v1213for (i in v){ #aplicando la condicion14if(i >= 0 & i <= 100){15print(i^0.5)16}17else if(i > 100 & i <= 300){18print(i-5)19}20else if (i > 300){21print(50)22}23} #se imprime los resultados de dependiendo del tipo de valor que hay en el vector242526############Ej.2############2728fescalar <- function(x){29if(! is.array(x)) stop("Error: el tipo de variable no es un vector o matriz.") #se verifica que es vector o matriz3031M1 <- matrix(0,dim(x)[1],dim(x)[2]) #si es vector o matriz, se aplica la condicion de rescalar3233for (i in seq(dim(x)[2])){34m <- x[,i]35M1[,i] <- round((x[,i] - min(m))/(max(m)-min(m)),2)36}37return(M1)38}3940#generar vector (debe contar con 100 observaciones)41v <- matrix(sample.int(100,size=100,replace=TRUE),nrow=100,ncol=1)42fescalar(v)4344#generar matrix (100 x 50)45M<-matrix(sample.int(100,size=500,replace=TRUE),nrow=100,ncol=50)46fescalar(M)4748495051############Ej.3############5253#Proceso generador de datos con 5 variables (1 + x1 + x2 + x3 + x4 )54set.seed(756)55x1 <- runif(10000)56x2 <- runif(10000)57x3 <- runif(10000)58x4 <- runif(10000)59e <- rnorm(10000)6061Y <- 1 + 0.8*x1 + 1.2*x2 + 0.5*x3 + 1.5*x4 + e #10 000 observaciones6263mat <- cbind(Y,matrix(1,length(Y), 1),x1,x2,x3) # se deja de lado x4 (por indicacion de tarea)64#"==>estime los coeficientes de un modelo de regresión lineal omitiendo una variable explicativa"65#"del proceso generador de datos."66head(mat)676869#se piden muestras de 10 a 50007071muestra <- c(10,50,80,120,200,500,800,1000,5000)7273#para cada muestra evaluar los betas y errores estandar:7475for (m in muestra) {7677elegidos=sample(seq(10000) , m,replace=F) #1. eleccion de observaciones al azar para el tamaño de muestra m78observ=mat[elegidos,] #2. construir matriz con observaciones elegidas7980#2.a. matriz de X elegidas81X=observ[, -c(1)]82#2.b. matriz de Y elegidas83Y=observ[, 1]848586#3.obtener betas87beta <- solve(t(X) %*% X) %*% (t(X) %*% Y)88beta8990#4. obtener sd91y_est <- X %*% beta92n <- dim(X)[1]93k <- dim(X)[2] - 194df <- n -k95sigma <- sum(sapply(Y - y_est, function(x)x^2))/ df96var <- sigma*solve(t(X) %*% X)9798sd <- sapply(diag(var), sqrt)99100#5. crear array para colocar el valor de la muestra en el dataframe101tamano=matrix(m,length(beta), 1)102103104#6. crear dataframe105table <- data.frame(tamano,beta,sd)106107#7. Resultado108print(table)109}110111112113############Ej.4############114#Proceso generador de datos con 8 variables (1 + x1 + x2 + x3 + x4 + x5 + x6 + x7)115set.seed(756)116x1 <- runif(800)117x2 <- runif(800)118x3 <- runif(800)119x4 <- runif(800)120x5 <- runif(800)121x6 <- runif(800)122x7 <- runif(800)123e <- rnorm(800)124125Y <- 1 + 0.8*x1 + 1.2*x2 + 0.5*x3 + 1.5*x4 + 2*x5 + 3*x6 + 1.5*x7 + e #800 observaciones126127X <- cbind(matrix(1,800),x1,x2,x3,x4,x5,x6,x7) #x con 1 intercepto y 7 variables x128head(X)129130131#definir funcion:132#Incluye,133#argumento de que incluye intercepto por default134#argumento de heterocedasticidad (es homocedastico por default)135136137ols <- function(M, Y, standar =T, Pvalue = T, intercepto = T, homocedastico =T) {138#1. obtener beta139beta <- solve(t(M) %*% M) %*% (t(M) %*% Y) #los betas no se alteran por ser homo o heterocedastico140141y_est <- M %*% beta142y_mean <- mean(Y)143n <- dim(M)[1]144k <- dim(M)[2] - 1145df <- n -k146147ee=sapply(Y - y_est, function(x) x^2)148149SCR=sum(ee)150SCT=sum(sapply(Y - y_mean, function(x) x^2))151152153#2. Root Mse154root_mse=(SCR/n)^(1/2)155156#3. R cuadrado157R_cuadrado=1-SCR/SCT158159#Primera respuesta en vector:160vector <- c("rootmse",root_mse,"Rcuadrado",R_cuadrado)161print(vector)162163#En el caso de ser homocedastico evaluar:164if (standar & Pvalue & intercepto & homocedastico) {165166sigma2 <- SCR/ df167168Var <- sigma2*solve(t(M) %*% M)169sd <- sapply(diag(Var), sqrt)170171t.est <- abs(beta/sd)172pvalue <- 2*pt(t.est,df=df, lower.tail = FALSE)173174L.inf <- beta - 1.96 * sd175L.sup <- beta + 1.96 * sd176177table <- data.frame(OLS = beta, standar.error =sd, value =pvalue, Lim.inferior= L.inf, Lim.superior =L.sup)178179return(table)180}181182#En el caso de no ser homocedastico evaluar183else if (homocedastico==F) {184185white=diag(n)*ee186187VarCorg=solve(t(M) %*% M)%*%t(M)%*%white%*%M%*%solve(t(M) %*% M)188189sd= sapply(diag(VarCorg), sqrt)190191t.est <- abs(beta/sd)192193pvalue <- 2*pt(t.est,df=df, lower.tail = FALSE)194195L.inf <- beta - 1.96 * sd196L.sup <- beta + 1.96 * sd197198table <- data.frame(OLS = beta, standar.error =sd, value =pvalue, Lim.inferior= L.inf, Lim.superior =L.sup)199return(table)200}201}202203#Caso homocedastico204ols(X,Y)205206207#Caso heterocedastico208ols(X,Y,homocedastico = F)209#Cuando hay heterocedasticidad, la varianza modificada afecta el error estandar, pvalue, limites.210#No cambia los R2 y Rootmse pues solo explican como los betas estimados ajustan la linea de regresion,211#y con la matriz de white los betas no han cambiado.212213214215