transformaci n de potencia box cox
Download
Skip this Video
Download Presentation
Transformación de Potencia Box-Cox

Loading in 2 Seconds...

play fullscreen
1 / 14

Transformación de Potencia Box-Cox - PowerPoint PPT Presentation


  • 175 Views
  • Uploaded on

Transformación de Potencia Box-Cox. Modelos Estadísticos Dra. Graciela González Farías José Ramón Domínguez Molina 14/marzo/2003 Omar Posada Villarreal. Transformación de potencia. Simple Se requiere que la distribución sea Suave Continua X>0. Transformación de potencia. =2, Y=X 2

loader
I am the owner, or an agent authorized to act on behalf of the owner, of the copyrighted work described.
capcha
Download Presentation

PowerPoint Slideshow about ' Transformación de Potencia Box-Cox' - marek


An Image/Link below is provided (as is) to download presentation

Download Policy: Content on the Website is provided to you AS IS for your information and personal use and may not be sold / licensed / shared on other websites without getting consent from its author.While downloading, if for some reason you are not able to download a presentation, the publisher may have deleted the file from their server.


- - - - - - - - - - - - - - - - - - - - - - - - - - E N D - - - - - - - - - - - - - - - - - - - - - - - - - -
Presentation Transcript
transformaci n de potencia box cox

Transformación de Potencia Box-Cox

Modelos Estadísticos

Dra. Graciela González Farías

José Ramón Domínguez Molina

14/marzo/2003

Omar Posada Villarreal

transformaci n de potencia
Transformación de potencia
  • Simple
  • Se requiere que la distribución sea
    • Suave
    • Continua
    • X>0
transformaci n de potencia1
Transformación de potencia
  • =2, Y=X2
  • =1/2, Y=X1/2
  • Se busca que la variable transformada se parezca a una distribución normal
ejemplo x exp 1
Ejemplo: X ~ Exp(1)
  • Rango: [-2, 2] pasos de 0.5.
  • La mejor fue  = 0.5
ejemplo x exp 3
Ejemplo: X ~ Exp(3)
  • Rango: [0, 10] pasos de 0.05.
  • La mejor fue  = 3.05
ejemplo x u 0 01 1
Ejemplo: X ~ U(0.01, 1)
  • Rango: [-10, 10] pasos de 0.5.
  • La mejor fue  >= 10
ejemplo x u 1 5
Ejemplo: X ~ U(1, 5)
  • Rango: [-10, 10] pasos de 1.
  • La mejor fue  <= -10
ejemplo x beta 5 2 5
Ejemplo: X ~ Beta(5, 2.5)
  • Rango: [-10, 10] pasos de 1.
  • La mejor fue  >= 10
listado s plus 1
Listado S-Plus (1)
  • # Realiza una transformación que se ajuste a la normal
  • # @param fX Datos
  • # @param leftlambda Limite inferior para probar lambda
  • # @param rightLambda Limite superior para probar lambda
  • # @param eachLambda Intervalo entre marcas
  • boxCox = function(fX, leftLambda, rightLambda, eachLambda) {
  • cX = data.matrix(fX)
  • dimX = dim(cX)
  • n = dimX[1]
  • origSD = stdev(cX)
  • #Equivale a cXLambda1 = (cX ^ 1) - 1
  • #origSD = stdev(cXLambda1)
  • # Checa que xi>0
  • for (i in 1:n) {
  • if (cX[i] <= 0) {
  • stop("Debe ser: x[i]>0")
  • }
  • }
  • # Inicializar
  • # Rango de lambdas a probar
  • minLambda = rightLambda
  • rLambda = seq(leftLambda, rightLambda, by=eachLambda)
  • nLambda = length(rLambda)
  • minSD = 1E100
  • rSD = vector(mode="numeric", length=nLambda)
  • cY = vector(mode="numeric", length=n)
listado s plus 2
Listado S-Plus (2)
  • # Para cada lambda
  • for (j in 1:nLambda) {
  • # Transformacion Box-Cox
  • # print(paste("- i=", i , " j=", j))
  • if (rLambda[j] != 0) {
  • cY = (cX ^ rLambda[j] - 1) / rLambda[j]
  • } else {
  • cY = log(cX)
  • }
  • # Recuerda el vector con min stdev
  • rSD[j] = stdev(cY)
  • if (rSD[j] < minSD) {
  • cMinY = cY
  • minLambda = rLambda[j]
  • minSD = rSD[j]
  • }
  • }
  • return (cX, origSD, rLambda, rSD, cMinY, minLambda, minSD)
  • }
listado s plus 3
Listado S-Plus (3)
  • plotBoxCox = function(sTitle, cX, origSD, rLambda, rSD, cMinY, minLambda, minSD) {
  • print("Original")
  • # En una pagina
  • par(mfrow = c(2,2))
  • options(digits=3)
  • # Conserva la mayor escala de los datos orig y tran en el eje Y
  • minY = min(cX, cMinY)
  • maxY = max(cX, cMinY)
  • # Grafica qqplot normalizado de los datos originales
  • # Muestra la varianza actual.
  • sTitle2 = paste(sTitle, "\nQQPlot normalizado. Desv. Tipica = ", format(origSD))
  • qqnorm(cX, main=sTitle2, ylab="X", ylim=c(minY, maxY))
  • qqline(cX)
  • print("Transformada")
  • # Grafica transformacion con Desv. Tipica
  • sTitle2 = paste("Tran. Box-Cox con SD min. QQPlot norm.\n(lambda = ", format(minLambda), ", Desv. Tip. = ", format(minSD), ")")
  • qqnorm(cMinY, main=sTitle2, ylab="Y", ylim=c(minY, maxY))
  • qqline(cMinY)
  • print("Histograma")
  • sTitle2 = paste(sTitle, "\nHistograma")
  • hist(cX, main=sTitle2, xlab="X")
  • print("Lambda")
  • # Grafica lambda vs. Desv. Tipica
  • sTitle2 = paste("Lambda vs. Desv. Tipica.\n(lambda = ", format(minLambda), ", Desv. Tip. = ", format(minSD), ")")
  • plot(rLambda, rSD, main=sTitle2, xlab="Lambda", ylab="log(SD)", log=\'y\')
  • }
listado s plus 4
Listado S-Plus (4)
  • # PARAMETROS DEL PROGRAMA
  • # Inicializar archivo
  • example = 5
  • n = 100 # Tamano de muestra
  • # Parametros de los ejemplos
  • # El dominio debe ser X>0
  • if (example == 1) {
  • print("Exp")
  • lambda1 = 1 # Parámetro para exp
  • sTitle = paste("Exponencial(", lambda1, ")")
  • leftLambda = -2
  • rightLambda = 2
  • eachLambda = 0.05
  • cXOrig = rexp(n, lambda1)
  • } else if (example == 2) {
  • print("Exp")
  • lambda1 = 3 # Parámetro para exp
  • sTitle = paste("Exponencial(", lambda1, ")")
  • leftLambda = 0
  • rightLambda = 10
  • eachLambda = 0.05
  • cXOrig = rexp(n, lambda1)
listado s plus 5
Listado S-Plus (5)
  • } else if (example == 3) {
  • print("Unif")
  • alfa = 0.01 # Parámetro para Unif
  • beta = 1 # Parámetro para Unif
  • sTitle = paste("Uniforme(", alfa, ", ", beta, ")")
  • leftLambda = -10
  • rightLambda = 10
  • eachLambda = 0.5
  • cXOrig = runif(n, min=alfa, max=beta)
  • } else if (example == 4) {
  • print("Unif")
  • alfa = 1 # Parámetro para Unif
  • beta = 5 # Parámetro para Unif
  • sTitle = paste("Uniforme(", alfa, ", ", beta, ")")
  • leftLambda = -10
  • rightLambda = 10
  • eachLambda = 1
  • cXOrig = runif(n, min=alfa, max=beta)
  • } else if (example == 5) {
  • print("Beta")
  • alfa = 5 # Parámetro para Unif
  • beta = 2.5 # Parámetro para Unif
  • sTitle = paste("Beta(", alfa, ", ", beta, ")")
  • leftLambda = -10
  • rightLambda = 10
  • eachLambda = 1
  • cXOrig = rbeta(n, alfa, beta)
  • }
  • # Escribe en archivo una muestra aleatoria con distribucion exponencial
  • cXOrig = t(cXOrig)
  • cXOrig = t(cXOrig) # Dos veces para transponer renglon a columna (?)
  • exportData(cXOrig, "D:\\Posada\\ModEst\\ModEst4\\ExpSample.txt", type="ASCII")
  • fX = importData("D:\\Posada\\ModEst\\ModEst4\\ExpSample.txt", type="ASCII")
  • res = boxCox(fX, leftLambda, rightLambda, eachLambda)
  • plotBoxCox(sTitle, res$cX, res$origSD, res$rLambda, res$rSD, res$cMinY, res$minLambda, res$minSD)
listado s plus 6
Listado S-Plus (6)
  • # Escribe en archivo una muestra aleatoria con distribucion exponencial
  • cXOrig = t(cXOrig)
  • cXOrig = t(cXOrig) # Dos veces para transponer renglon a columna (?)
  • exportData(cXOrig, "D:\\Posada\\ModEst\\ModEst4\\ExpSample.txt", type="ASCII")
  • fX = importData("D:\\Posada\\ModEst\\ModEst4\\ExpSample.txt", type="ASCII")
  • res = boxCox(fX, leftLambda, rightLambda, eachLambda)
  • plotBoxCox(sTitle, res$cX, res$origSD, res$rLambda, res$rSD, res$cMinY, res$minLambda, res$minSD)
ad