'##SIMPLE REGRESSION´S FUNCTION '##VERSION 1.0 '##AUTHOR: JUAN ANTONIO BREÑA MORAL '##EMAIL: bren@juanantonio.info '##################################################### '#Desde ideas de Wolfgang Koller getKurtosis <- function(x) { m4 <- mean((x-mean(x))^4) kurt <- m4/(sd(x)^4)-3 kurt if(kurt >0){ cat("\nKURTOSIS:",kurt,"\nLa distribución es Leptocurtica, es decir, esta mas apuntada que la normal.\n") }else if(kurt == 0){ cat("\nKURTOSIS:",kurt,"\nLa distribucion es mesocurtica, es normal\n") }else{ cat("\nKURTOSIS:",kurt,"\nLa distribuion es platicurtica, es decir, es menos apuntada que la normal.\n") } return(kurt) } getSkewness <- function(x) { m3 <- mean((x-mean(x))^3) skew <- m3/(sd(x)^3) skew if(skew >0){ cat("\nSKEWNESS:",skew,"\nLa distribución es asimétrica positiva; existe mayor concentración de valores a la derecha de la media que a su izquierda.\n") }else if(skew == 0){ cat("\nSKEWNESS:",skew,"\nLa distribucion es simetrica; existe la misma concentración de valores a la derecha y a la izquierda de la media.\n") }else{ cat("\nSKEWNESS:",skew,"\nLa distribución es asimétrica negativa; existe mayor concentración de valores a la izquierda de la media que a su derecha.\n") } return(skew) } viewEDA <- function(DATA1,DATA2, TITLE1, TITLE2){ par(mfrow = c(3,2)); hist(DATA1, main = TITLE1); rug(DATA1, col= c("red")); hist(DATA2, main = TITLE2); rug(DATA2, col = c("red")); plot(density(DATA1,na.rm=TRUE),main="") plot(density(DATA2,na.rm=TRUE),main="") boxplot(DATA1, horizontal= TRUE); boxplot(DATA2, horizontal= TRUE); par(mfrow = c(1,1)); '#cat("Variable1\n") '#getKurtosis(DATA1) '#getSkewness(DATA1) '#cat("Variable2\n") '#getKurtosis(DATA2) '#getSkewness(DATA2) }; getInferencia <- function(DATA,TITLE){ cat("Estudio de variable:",TITLE,"\n"); MEDIA <- mean(DATA); names(MEDIA) <- "MEDIA" MEDIANA <- median(DATA); names(MEDIANA) <- "MEDIANA" DESVIACIONT <- sd(DATA); KURTOSIS <- getKurtosis(DATA); SKEWNESS <- getSkewness(DATA); DATOS <- rbind(MEDIA,MEDIANA) NOMBRES <- c("MEDIA","MEDIANA") table(DATOS) } dataView <- function(DATA){ par(mfrow = c(2,1)); hist(DATA); rug(DATA, col= c("red")); boxplot(DATA, horizontal = TRUE); stem(DATA); '#library(outliers) '#grubbs.test(DATA, type=11, two.sided = TRUE) }; searchIndex = function(DATA,VALUE){ INDEX <- 0; i <-0; for(j in 1:length(DATA)){ if(DATA[[j]] == VALUE){ INDEX <- i } i <- i + 1; } return(INDEX) }; simpleOutlierDetection = function(DATA, TYPE){ SUBSET <- c(); INDEXSET <- c(); OUTLIER <- 0; INDEX <- 0; if(TYPE == 1){ COEFICIENTE <- 1.5; }else{ COEFICIENTE <- 3; } DATA <- sort(DATA); RI = IQR(DATA); cat("RANGO INTERCUARTILICO ",RI,"\n") LOW <- RI - (COEFICIENTE * RI); cat("LIMITE INFERIOR",LOW, "\n"); UPPER <- RI + (COEFICIENTE * RI); cat("LIMITE SUPERIOR",UPPER, "\n"); for(i in 1:length(DATA)){ if(DATA[[i]] < LOW){ OUTLIER <- DATA[[i]]; INDEX <- searchIndex(DATA,OUTLIER); SUBSET <- cbind(SUBSET,OUTLIER) INDEXSET <- cbind(INDEXSET,INDEX) } if(DATA[[i]] > UPPER){ OUTLIER <- DATA[[i]]; INDEX <- searchIndex(DATA,OUTLIER); SUBSET <- cbind(SUBSET,OUTLIER) INDEXSET <- cbind(INDEXSET,INDEX) } } RESULTADOS <- rbind(SUBSET,INDEXSET) return(RESULTADOS) }; getSubconjunto = function(DATA,DESDE,HASTA){ return(DATA[DESDE:HASTA]); }; createSRM <- function(Y,X,TIPO){ if(TIPO == 1){ MODEL <- Y ~ X; }else{ MODEL <- Y ~ 0 + X; } par(mfrow = c(3,2)); plot(MODEL); title(main = "Recta de regresión") print(MODEL) REGRESSION <- lm(MODEL); abline(REGRESSION$coefficients, col = c("red")); plot(REGRESSION) RESIDUALS <- REGRESSION$residuals; hist(RESIDUALS, main="Histograma de residuos del modelo") par(mfrow = c(1,1)); cat("\nY = ", REGRESSION$coefficients[1]," + ",REGRESSION$coefficients[2],"*X\n\n") return(summary(REGRESSION)) }; getCriterioSelection <- function(SELECTION1,SELECTION2,CRITERIO){ COLUMNAS1 <- dim(SELECTION1) COLUMNAS2 <- dim(SELECTION2) SET <- c(); if(CRITERIO == 1){ if(COLUMNAS1[2] > COLUMNAS2[2]){ SET <- SELECTION1[1,] }else{ SET <- SELECTION2[1,] } }else{ if(COLUMNAS1[2] > COLUMNAS2[1]){ SET <- SELECTION2[1,] }else{ SET <- SELECTION1[1,] } } return(SET) } getDataSelection <- function(DATA1,DATA2,SELECTION,TIPO){ SUBSET1 <- c(); SUBSET2 <- c(); DIMENSIONES <- dim(SELECTION); FILAS <- DIMENSIONES[1]; COLUMNAS <- DIMENSIONES[2]; FLAG <- 0; DATA1 <- sort(DATA1) DATA2 <- sort(DATA2) for(i in 1:length(DATA1)){ VALOR1 <- DATA1[[i]]; VALOR2 <- DATA2[[i]]; for(j in 1:length(SELECTION)){ if(TIPO == 1){ if(VALOR1 == SELECTION[[j]]){ FLAG = 1; cat("I ES",i,VALOR1,VALOR2); } }else{ if(VALOR2 == SELECTION[[j]]){ FLAG = 1; cat("I ES",i,VALOR1,VALOR2); } } } if(FLAG == 1){ FLAG = 0; }else{ SUBSET1 <- cbind(SUBSET1,VALOR1); SUBSET2 <- cbind(SUBSET2,VALOR2); } } SUBSET <- rbind(SUBSET1,SUBSET2); return(SUBSET); };