prácticas de r

Upload: theoq

Post on 06-Jul-2018

241 views

Category:

Documents


0 download

TRANSCRIPT

  • 8/18/2019 Prácticas de R

    1/16

    Ricardo Mantecón

    PRÁCTICAS DE R 

    1 –  Ctrl + Mayus + H -> Indicar a RStudio donde se encuentra nuestro directorio base

    DISEÑO – 1 FACTOR

    > centeno = read.table("centeno.txt", header=T)> names(centeno)[1] "sem" "rend"> attach(centeno) 

    Names-> indica nombres de las columnasAttach-> evita escribir centeno$sem, podemos llamarla directamente sem

    >> modecenteno = aov(rend ~ sem) 

    Crea el AOV

    > model.tables(modecenteno, type='means')Tables of meansGrand mean

    230.3958

    semsem

    A B C D

    242.88 218.65 214.13 245.92

    > anova(modecenteno)Analysis of Variance Table

    Response: rendDf Sum Sq Mean Sq F value Pr(>F)

    sem 3 4795.6 1598.53 11.217 0.0001559 ***Residuals 20 2850.1 142.51---Signif. codes: 0 ‘***’ 0.001 ‘**’ 0.01 ‘*’ 0.05 ‘.’ 0.1 ‘ ’ 1 

    Signif. Codes-> p-value

    Como p-value > pairwise.t.test(rend, sem, p.adj='none')

    Pairwise comparisons using t tests with pooled SD

    data: rend and sem

    A B C

    B 0.00217 - -C 0.00047 0.51972 -D 0.66458 0.00078 0.00017

  • 8/18/2019 Prácticas de R

    2/16

    Ricardo Mantecón

    P value adjustment method: none

    La tabla muestra el p-value de cada cruce-comparación dos a dos. Si es mayor que alfa,no hay diferencias significativas.Interpretación: La D es la que ofrece mejor rendimiento (Ver media). La A es candidatapor no haber diferencias significativas entre D y A (ver la última tabla).

    Gráfica Intervalos de Confianza >> source('ICplot.R')> ICplot(modecenteno, 'sem')

    La media poblacional fijo no es conocido. ̂ , variable aleatoria. Afirmamos con un95% de confianza que ̂  estará en los intervalos mostrados.

    Entre A-D y B-C hay diferencias significativas. A-D son las semillas de mayorrendimiento, pero no se pueden diferenciar entre ellas.

    DISEÑO: DOS FACTORES

    > venenos = read.table("venenos.txt", header=T)> attach(venenos)> names(venenos)[1] "ven" "ant" "tiempo">>> ven[1] 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 3

    3 3 3 3 3[39] 3 3 3 3 3 3 3 3 3 3> class(ven)[1] "integer">

  • 8/18/2019 Prácticas de R

    3/16

  • 8/18/2019 Prácticas de R

    4/16

  • 8/18/2019 Prácticas de R

    5/16

    Ricardo Mantecón

    Gráfico Residuals vs Fitted muestra que los residuos van aumentando su dispersión(forma de trompeta) Hay que corregir con logaritmos, 1/x… 

    >

    > modvenenos = aov(1/tiempo ~ ant * ven)> plot(modvenenos)

    DISEÑO: TRES FACTORES 

    ->quimico.txtSe tiene una reacción química, de la cual nos interesa aumentar el rendimiento.

    Podemos variar la concentración, el catalizador y la temperatura. Debemos hallar latemperatura, el catalizador y la concentración que optimizan el rendimiento.

    > quimico = read.table('quimico.txt', header = T)>> View(quimico)> attach(quimico)> modquimico = aov(rendim ~ con * temp * cat)> anova(modquimico)Analysis of Variance Table

    Response: rendimDf Sum Sq Mean Sq F value Pr(>F)

    con 3 1141.58 380.53 13.7571 1.331e-06 ***temp 1 481.53 481.53 17.4087 0.0001258 ***cat 2 600.01 300.01 10.8460 0.0001298 ***con:temp 3 69.29 23.10 0.8350 0.4812982con:cat 6 177.87 29.65 1.0717 0.3925498temp:cat 2 310.71 155.36 5.6166 0.0064304 **con:temp:cat 6 217.73 36.29 1.3119 0.2701401Residuals 48 1327.71 27.66

    ---Signif. codes: 0 ‘***’ 0.001 ‘**’ 0.01 ‘*’ 0.05 ‘.’ 0.1 ‘ ’ 1 

  • 8/18/2019 Prácticas de R

    6/16

    Ricardo Mantecón

    Son significativas la concentración, la temperatura, el catalizador  y la interaccióntemperatura-catalizador (ver los asteriscos – p-value).NOTA: View(quimico) imprime por pantalla la tabla.

    >

    > ICplot(modquimico, 'con')

    Las concentraciones C3-C4 son las que mejor rendimiento ofrecen, pero no se puedendiferenciar entre ellas.>

    > ICplot(modquimico, 'cat') 

    Los mejores catalizadores son el 2 y el 3. PERO COMO HAY INTERACCIÓN, NO SEPUEDE CONCLUIR NADA.

  • 8/18/2019 Prácticas de R

    7/16

    Ricardo Mantecón

    >> ICplot(modquimico, 'temp') 

    La mejor temperatura es la 2. PERO COMO HAY INTERACCIÓN, NO SE PUEDECONCLUIR NADA.

    Por ello, empleamos un gráfico de interacción:>> source('interIC.R')

    > interIC(modquimico, 'cat', 'temp')

  • 8/18/2019 Prácticas de R

    8/16

    Ricardo Mantecón

    La temperatura 2 proporciona el mayor rendimiento siempre y cuando usemos elcatalizador 2 o 3.

    Ahora hacemos la diagnosis… >

    > par(mfrow=c(2,2))> plot(modquimico)

    REGRESIÓN LINEAL SIMPLE 

    > coches = read.table('coches.txt', header=T)> names(coches)[1] "peso" "consumo"> attach(coches)> plot(peso,consumo) 

  • 8/18/2019 Prácticas de R

    9/16

    Ricardo Mantecón

    >> modcoches = lm(consumo ~ peso)> summary(modcoches)

    Call:lm(formula = consumo ~ peso)

    Residuals:Min 1Q Median 3Q Max

    -3.3456 -0.7680 -0.0596 0.8829 2.9682

    Coefficients:Estimate Std. Error t value Pr(>|t|)

    (Intercept) -0.0712606 0.9451482 -0.075 0.94peso 0.0117307 0.0008865 13.232 1.44e-13 ***---Signif. codes: 0 ‘***’ 0.001 ‘**’ 0.01 ‘*’ 0.05 ‘.’ 0.1 ‘ ’ 1 

    Residual standard error: 1.543 on 28 degrees of freedomMultiple R-squared: 0.8621, Adjusted R-squared: 0.8572F-statistic: 175.1 on 1 and 28 DF, p-value: 1.436e-13

     

    El parámetro (Intercept)-Estimate  no se puede interpretar por no ser significativo.Además, por ser el consumo de un coche promedio cuando su peso es nulo.

    El parámetro  peso-Estimate es la pendiente. Interpretación: al aumentar una unidadde peso, en promedio el consumo aumenta una centésima.

    El valor (Intercept)-Std. Error indica la desviación típica estimada de , y el valor peso-Std. Error, la de .

    Dividiendo la estimación entre la desv. típica se obtiene el valor de t (columna de t-value), acomparar con la t de Student (28 GDL), para ver si es significativo.

  • 8/18/2019 Prácticas de R

    10/16

    Ricardo Mantecón

    La última columna es el p-value.

    >> Residual standard error: 1.543 on 28 degrees of freedomEs la desviación típica residual.

    >> Multiple R-squared: 0.8621, Adjusted R-squared: 0.8572

    R2  – Coeficiente de determinación. Es el porcentaje de la variabilidad total quees explicado por el modelo.

    Si la recta de regresión es muy buena, tendrá valores cercanos a 1.

    >> F-statistic: 175.1 on 1 and 28 DF, p-value: 1.436e-13Valor de F con 28 GDL. Es el contraste general. Éste responde a la pregunta de:

    “¿influye alguno de los regresores?”. No tiene en cuenta el .

    Diagnosis del modelo- Homocedasticidad  – Residuals vs Fitted- Linealidad- Independecia- Normalidad  – QQ Plot

    > par(mfrow=c(2,2))> plot(modcoches) 

    Si en la gráfica de Residual vs Fitted, la nube de puntos tiene forma curvilínea, no sonlineales (si el ancho de la nube es constante, sí serán homocedásticos; no tienerelación con ser o no lineales).

  • 8/18/2019 Prácticas de R

    11/16

    Ricardo Mantecón

    REGRESIÓN LINEAL MÚLTIPLE 

    > coches = read.table('coches2.txt', header=T)> attach(coches)> modcoches = lm(consumo ~ cc + cv + peso + acel)> summary(modcoches)

    Call:lm(formula = consumo ~ cc + cv + peso + acel)

    Residuals:Min 1Q Median 3Q Max

    -5.1095 -1.0180 0.0322 0.9906 5.5775

    Coefficients:Estimate Std. Error t value Pr(>|t|)

    (Intercept) -1.6695833 0.9833053 -1.698 0.0903 .cc 0.0003835 0.0001625 2.360 0.0188 *cv 0.0402844 0.0065697 6.132 2.15e-09 ***peso 0.0057842 0.0009578 6.039 3.65e-09 ***acel 0.1115012 0.0496757 2.245 0.0254 *---Signif. codes: 0 ‘***’ 0.001 ‘**’ 0.01 ‘*’ 0.05 ‘.’ 0.1 ‘ ’ 1 

    Residual standard error: 1.662 on 386 degrees of freedomMultiple R-squared: 0.8197, Adjusted R-squared: 0.8178F-statistic: 438.7 on 4 and 386 DF, p-value: < 2.2e-16

    Interpretar con un 95% de confianza los datos:

    El valor (Intercept)-Estimate es  (ordenada en el origen) pero no es significativo.

    El valor cc-Estimate indica en promedio al aumentar la cilindrada en una unidad,

    cuánto aumenta el consumo.ETC.

    NOTA: el valor peso-Estimate no coincide con el del apartado anterior, pese a usar elmismo modelo. Eso se debe a la multicolinealidad, es decir, existe correlación entre losregresores. Esto se puede demostrar:

    > pairs(coches[, 2:5])

  • 8/18/2019 Prácticas de R

    12/16

    Ricardo Mantecón

    Se observa que existe correlación entre los regresores. Nótese la correlación negativaentre la aceleración y el resto de regresores. La aceleración se mide en el tiempo quese tarda en llegar a 100km/h. Cuanto más baja, en nuestro caso, mejor parámetro.

    Numéricamente, con la matriz de coeficientes de correlación mostramos cómo decorrelados están los regresores:

    > cor(coches[,2:5])cc cv peso acel

    cc 1.0000000 0.8984444 0.9338860 -0.5489495

    cv 0.8984444 1.0000000 0.8628927 -0.6962805peso 0.9338860 0.8628927 1.0000000 -0.4216106acel -0.5489495 -0.6962805 -0.4216106 1.0000000

    NOTA: para ver cuál es el mejor gráfico entre dos regresiones lineales simples, secompararán según el valor de R2, eligiendo el que tenga un valor más cercano a launidad. Para dos regresiones lineales múltiples, no se puede emplear el R2, puesqueda falseado por el número de regresores. Para ello, usamos el R2 corregido( Adjusted R-squared  en la tabla anterior).

  • 8/18/2019 Prácticas de R

    13/16

    Ricardo Mantecón

    La variable “origen” indica la procedencia del coche (japonés, americano o europeo).No se puede representar con un valor numérico; es una variable cualitativa. Por ello, losiguiente es incorrecto:

    modcoches = lm(consumo ~ cc + cv + peso + acel + origen) 

    Se soluciona:1  – Creando una nueva variable auxiliar zEUR {0,1},, y ZJAP, todas ellas variables binarias,tomando valor uno cuando es cierta. ZUSA se omite, pues si no es ni japonés ni europeo,será americano. Como esa columna dependería de las otras dos Zs, el programa nopodría calcular después la matriz inversa. Por tanto, los coches tomados comoreferencia serán los americanos.

    > zeur = origen == 2> zjap = origen == 3>> modcoches = lm(consumo ~ cc + cv + peso + acel + zeur + zjap)>> summary(modcoches)

    Call:lm(formula = consumo ~ cc + cv + peso + acel + zeur + zjap)

    Residuals:Min 1Q Median 3Q Max

    -5.0965 -0.9687 0.0213 0.9496 5.4896

    Coefficients:Estimate Std. Error t value Pr(>|t|)

    (Intercept) -1.3939184 0.9975689 -1.397 0.1631cc 0.0003228 0.0001792 1.801 0.0724 .

    cv 0.0422677 0.0067890 6.226 1.26e-09 ***peso 0.0055996 0.0009655 5.799 1.39e-08 ***acel 0.1108411 0.0496919 2.231 0.0263 *zeurTRUE -0.0611229 0.2802356 -0.218 0.8275zjapTRUE -0.4228851 0.2763587 -1.530 0.1268---Signif. codes: 0 ‘***’ 0.001 ‘**’ 0.01 ‘*’ 0.05 ‘.’ 0.1 ‘ ’ 1 

    Residual standard error: 1.66 on 384 degrees of freedomMultiple R-squared: 0.821, Adjusted R-squared: 0.8182F-statistic: 293.5 on 6 and 384 DF, p-value: < 2.2e-16

    El valor zeurTRUE-Estimate no es significativo, y por tanto, los coches europeos

    consumen igual que los americanos (comparando t-value con t de Student, ofijándonos en el p-value).Igualmente, los coches japoneses consumen igual que los americanos.

    Para estudiar la relación entre japoneses y europeos, se repetiría el modelo tomandoesta vez como referencia uno de estos dos orígenes de coches.

  • 8/18/2019 Prácticas de R

    14/16

    Ricardo Mantecón

    Diagnosis del modelo > par(mfrow=c(2,2))> plot(modcoches) 

    REGRESIÓN LINEAL MÚLTIPLE 

    Se quiere hacer un modelo que represente el volumen maderable de un cerezo enfunción de dos variables: diámetro y altura.

     

    > datos = read.table("cerezos.txt", header=T)> attach(datos)> mod = lm(volumen ~ diametro + altura)> summary(mod)

    Call:lm(formula = volumen ~ diametro + altura)

    Residuals:Min 1Q Median 3Q Max

    -6.4065 -2.6493 -0.2876 2.2003 8.4847

    Coefficients:Estimate Std. Error t value Pr(>|t|)

    (Intercept) -57.9877 8.6382 -6.713 2.75e-07 ***diametro 4.7082 0.2643 17.816 < 2e-16 ***altura 0.3393 0.1302 2.607 0.0145 *---Signif. codes: 0 ‘***’ 0.001 ‘**’ 0.01 ‘*’ 0.05 ‘.’ 0.1 ‘ ’ 1 

  • 8/18/2019 Prácticas de R

    15/16

    Ricardo Mantecón

    Residual standard error: 3.882 on 28 degrees of freedomMultiple R-squared: 0.948, Adjusted R-squared: 0.9442F-statistic: 255 on 2 and 28 DF, p-value: < 2.2e-16

    El diámetro y la altura son significativos. Sin embargo, viendo la diagnosis de modelo… 

    > par(mfrow=c(2,2))> plot(mod) 

    Los datos no son lineales ni homocedásticos (Residuals vs Fitted).Por ello, debemos realizar una transformación.

    El volumen es proporcional al diámetro al cuadrado, multiplicado por la altura, por una

    constante, asumiendo que los troncos son más o menos cilíndricos.Si tomamos logaritmos a la expresión, se tiene:() () () () 

    > mod = lm(log(volumen) ~ log(diametro) + log(altura))>> summary(mod)

    Call:lm(formula = log(volumen) ~ log(diametro) + log(altura))

    Residuals:Min 1Q Median 3Q Max

    -0.168561 -0.048488 0.002431 0.063637 0.129223

    Coefficients:Estimate Std. Error t value Pr(>|t|)

  • 8/18/2019 Prácticas de R

    16/16

    (Intercept) -6.63162 0.79979 -8.292 5.06e-09 ***log(diametro) 1.98265 0.07501 26.432 < 2e-16 ***log(altura) 1.11712 0.20444 5.464 7.81e-06 ***---Signif. codes: 0 ‘***’ 0.001 ‘**’ 0.01 ‘*’ 0.05 ‘.’ 0.1 ‘ ’ 1 

    Residual standard error: 0.08139 on 28 degrees of freedom

    Multiple R-squared: 0.9777, Adjusted R-squared: 0.9761F-statistic: 613.2 on 2 and 28 DF, p-value: < 2.2e-16> plot(mod)

    El valor log(diámetro)-Estimate indica que al aumentar un 1% el diámetro, aumenta un1.98% el volumen. (Al transformar con logaritmos, hablamos de variacionesporcentuales).