prácticas de r
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).