[R-es] Goodness

J. Miguel Marin jmmarin en est-econ.uc3m.es
Mar Feb 9 19:19:15 CET 2010


Hola,
leyendo entre líneas yo creo que Daniel busca algo parecido a lo que 
tiene Statgraphics, que tiene una batería de distribuciones para 
ajustar los datos "a tu gusto".
Lo más parecido que tiene R es justamente el "fitdistr".
En realidad, yo creo que Daniel busca una generalización de un test de 
Kolmogorov-Smirnov "para cualquier cosa", aunque me temo que a pesar de 
que eso es efectivamente erróneo mucha gente de Ciencias lo usa en plan 
ciego.



> Estoy de acuerdo con Rubén.
>
> El planteamiento de Daniel me recuerda a una pregunta típica en 
> Médicos, Biólogos, Ingenieros, con poca experiencia en Estadística. 
> La pregunta a menudo es: ¿Qué modelo de regresión no lineal será el 
> que mejor se ajusta para explicar mis observaciones de Y en función 
> de X? y con algo de sorna siempre contesto: "El polinomio con n-1 
> datos".
>
> Creo que este caso es equivalente: La distribución que mejor se 
> ajuste a una colección de datos no le veo sentido. Suponiendo que se 
> han obtenido mediante muestreo, se puede dar un ajuste espúreo a 
> cualquier distribución. Algunas convergen bastante bien sobre otras 
> bajo determinadas condiciones.
>
> En una distribución creo que es preciso plantear el modelo de 
> generación de los datos o si ello no es posible conformarse con una 
> estimación de la densidad mediante procedimientos como las 
> estimaciones basadas en funciones núcleo. En concreto la función 
> "density" del paquete stats estima la densidad de una variable a 
> partir de un conjunto de datos mediante algunas de las funciones 
> núcleo más habituales.
>
> Proponer una función de distribución con toda su parsimonia en los 
> parámetros sin justificación en la generación de los datos a mí me 
> parece poco defendible a partir de una mera falta de desajuste de las 
> observaciones respecto de un modelo del que no se justifica por qué 
> este y no otro.
>
> Si las observaciones proceden de una mezcla de distribuciones, no 
> habrá ningún modelo sencillo, del grupo de los que podríamos llamar 
> básicos, que realmente prediga las observaciones y no le veo ningún 
> sentido a la propuesta de Daniel.
>
>
> Rubén Roa escribió:
>>  -----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
>>
>> _______________________________________________
>> R-help-es mailing list
>> R-help-es en r-project.org
>> https://stat.ethz.ch/mailman/listinfo/r-help-es
>>
>
> _______________________________________________
> R-help-es mailing list
> R-help-es en r-project.org
> https://stat.ethz.ch/mailman/listinfo/r-help-es
>




jm~

_______________________________

        J. Miguel Marin

http://www.est.uc3m.es/jmmarin

    Dep. of Statistics
University Carlos III of Madrid
        Spain (E.U.)



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