[R-es] Goodness

Rubén Roa rroa en azti.es
Mar Feb 9 12:48:14 CET 2010


 
-----Mensaje original-----
De: r-help-es-bounces en r-project.org [mailto:r-help-es-bounces en r-project.org] En nombre de daniel pacheco gomez Enviado el: martes, 09 de febrero de 2010 12:02
Para: r-help-es en r-project.org
Asunto: [R-es] Goodness


Hola,

LLevo buscando desde hace tiempo como hacer el Goodness of fit test en R. Es decir, me explico, intento hacer una cosa parecida que se hace en Minitab, por ejemplo, yo tengo un conjunto de datos, y  lo que quiero es sabes que tipo de distibución es, en minitab se hace un histograma para ver si se ajusta bien o no a la campana de Gauss, luego vemos si aproximar la distribución de la muestra por una Normal es lícito. Es decir, minitab genera un Probability Plot of Adjusted Value y devuelve el Anderson Darling y el P-Value, al hacer esto se observa que el p-value del contraste de hipótesis utilizado es menor que el nivel de significación estandar(0,05), luego no podemos aceptar que la hipótesis  nula de que la muestra provenga de una distribución normal.

Es entonces cuando en minitab se le aplica el "Goodness of Fit Test", y se observe que distribución se ajusta mejor a la muestra obtenida. Entonces se le aplica el Process capability según la distribución y se analizan los resultados.

Mi duda es, ¿exite alguna función-libreria-paquete, que al pasarle la muestra, te diga que tipo de distribución es?.

---
No lo creo, no es está en la filosofía de R una forma tan automática de responder tus preguntas.
Lo que tú quieres hacer yo lo hago con fitdistr de MASS, y si tengo dos o mas distribuciones que pueden explicar mis datos, uso el AIC.
Lo de qué distribución corresponde (nota la diferencia con 'mejor ajusta') a tus datos, lo puedes elucidar pensando en la naturaleza de tus datos.
Son continuos o discretos?, univariados o multivariados?.
Si son discretos, son conteos? (Poisson?, binomial negativa?), son binarios? (binomial)?, tienen exceso de ceros? (sobredispersos)?
Si son continuos, admiten cero y valores negativos? (normal?), sólo valores positivos? (lognormal {proceso multiplicativo}, gamma {suma de exponenciales}?), son distancias o tiempos entre eventos? (exponencial?), etc.


par(mfrow=c(2,1),oma=c(2,2,1,1),mar=c(2,2,1,1))

#Ejemplo 1 (solución analítica para los emv):

x <- rnorm(250, 5, 3)
hist(x, prob=TRUE, ylim=c(0,1.25*max(hist(x,plot=FALSE)$density)))
curve(dnorm(x,4.5,3.2,),col="blue",add=TRUE)
library(MASS)
x.likfit <- fitdistr(x,'normal') #sin proporcionar valores iniciales
curve(dnorm(x,mean=x.likfit$estimate[1],sd=x.likfit$estimate[2],),col="red",add=TRUE)

#Ejemplo 2 (solución numérica para los emv):

x <- rgamma(250, 2, 25)
hist(x, prob=TRUE, ylim=c(0,1.25*max(hist(x,plot=FALSE)$density)))
curve(dgamma(x,shape=3,rate=30),col="blue",add=TRUE)
library(MASS)
x.likfit <- fitdistr(x,'gamma',start=list(shape =3, rate=30)) #con valores iniciales
curve(dgamma(x,shape=x.likfit$estimate[1],rate=x.likfit$estimate[2],),col="red",add=TRUE)

HTH
Rubén

____________________________________________________________________________________ 

Dr. Rubén Roa-Ureta
AZTI - Tecnalia / Marine Research Unit
Txatxarramendi Ugartea z/g
48395 Sukarrieta (Bizkaia)
SPAIN



Más información sobre la lista de distribución R-help-es