##################################################### ##### Funciones para estadística unidimensional ##### ##################################################### momentos = function(x, r, mp = 0) { m = sum((x-mp)^r)/length(x) return(m) } TODO = function(x, alfa = 0.95, graf = F) { n = length(x) media = momentos(x, 1) mediana = median(x) tabla.estadistica = table(x) posicion = which.max(table(x)) moda = as.double(rownames(tabla.estadistica)[posicion]) varianza = momentos(x, 2, mean(x)) desv.tip = sqrt(varianza) Q1 = quantile(x, probs = 0.25) Q3 = quantile(x, probs = 0.75) percentil.alfa = quantile(x, probs = alfa) minimo = min(x) maximo = max(x) rango = maximo - minimo rango.int = as.numeric(Q3) - as.numeric(Q1) ca = maximo/minimo rango.re = rango/abs(media) cv = desv.tip/abs(media) pearson = (media-moda)/desv.tip m3 = momentos(x, 3, mean(x)) simetria = m3/(desv.tip^3) m4 = momentos(x, 4, mean(x)) kurtosis = m4/(varianza^2) - 3 library(ineq) gini = ineq(x, type="Gini") if(graf == T) {plot(Lc(x), col="red", lwd=2)} salida = data.frame(n, media, mediana, moda, varianza, desv.tip, Q1, Q3, percentil.alfa, minimo, maximo, rango, rango.int, ca, rango.re, cv, pearson, simetria, kurtosis, gini) rownames(salida) = c("") return(salida) } #################################################### ##### Funciones para estadística bidimensional ##### #################################################### momentos.b = function(x, y, r, s, mp.x = mean(x), mp.y = mean(y)){ m = sum(((x-mp.x)^r)*((y-mp.y)^s))/length(x) return(m) } correlacion = function(x, y) { return(momentos.b(x,y,1,1)/sqrt(momentos(x,2,mean(x))*momentos(y,2,mean(y)))) } regresion = function(y, x, recta = T){ media.y = mean(y) media.x = mean(x) n = length(x) varianza.x = momentos(x, 2, mp=media.x) covarianza = momentos.b(x, y, 1, 1) pendiente = covarianza/varianza.x origen = media.y - pendiente*media.x resultados = data.frame(media.y, covarianza, varianza.x, media.x) ifelse (recta == T, paste("y =", pendiente, "* x +", origen), return(resultados)) } BID = function(x, y, graf = T, recta = T){ covarianza = momentos.b(x,y,1,1) correlacion = momentos.b(x,y,1,1)/sqrt(momentos(x,2,mean(x))*momentos(y,2,mean(y))) coef.det = correlacion^2 recta = regresion(y,x,recta) if(graf == T){plot(x, y, lwd=2, col="blue")} salida = data.frame(covarianza, correlacion, coef.det, recta) rownames(salida) = c ("") return(salida) } # BID(Peso, Altura, T) # BID(Altura, Peso, F) ###################################### ##### Todas las funciones en una ##### ###################################### TC1 = function(x, y, graf = T, recta = T){ todo.x = TODO(x) todo.y = TODO(y) bid = BID(x, y, graf, recta) salida = list(todo.x, todo.y, bid) names(salida) = c("Descriptivos X", "Descriptivos Y", "Bidimensional") return(salida) } # TC1(Peso, Altura) ########################### ##### Algunas pruebas ##### ########################### # datos = read.table("https://www.ugr.es/local/romansg/material/WebTC1/TC1/datos.txt", header=T, sep=";") # head(datos) # attach(datos) # TC1(Peso, Altura) # TC1(Edad, Hermanos, F) # detach(datos)