Estadística Descriptiva y Modelos Lineales

Transcripción

Estadística Descriptiva y Modelos Lineales
Sesión005.“AprendiendoSweave–LaTeX”
1480-TécnicasEstadísticasenInvestigacióndeMercados
GradoenEstadísticaempresaria
Profesor:XavierBarberiVallés
Departamento:Estadística,MatemáticaseInformática
TécnicasEstadísticasen
AnálisisdeMercados
Lo que no se mide, lo que de alguna manera no se
capta, NO EXISTE.
Teodoro Luque Martinez
XaviBarber2013/2014
LaTeX
ESCRITURACIENTÍFICA DECALIDAD
InstalarLaTeX
http://www.latex-project.org
Es un sistema de composición de textos, orientado a la creación
de documentos escritos que presenten una alta calidad
tipográfica. Por sus características y posibilidades, es usado de
forma especialmente intensa en la generación de artículos y
libros científicos que incluyen, entre otros elementos,
expresiones matemáticas.
InstalarLaTeX
http://www.latex-project.org
InstalarLaTeX
• Windows:
– Irahttp://miktex.org/download ydescargarelarchivoqueallínos
porpone.
– UnavezdescargadoseguirelHowto:InstallMiKTeX2.9. dondese
detallanlospasosaseguir.
– InstalareleditorparaescribirLaTeX.Estepasolopodemosobviar
sivamosatrabajr directamentedesdeelRstudio.
LaTeX tutorialesencastellano
• http://www.ugr.es/~mmartins/material/latex_basico.pdf
• http://tecdigital.tec.ac.cr/revistamatematica/Libros/LATEX/LaTeX_2013.pdf
• http://www.cervantex.es/manuales
•
•
•
DavidR.Wilkins hasanice introductiontoLaTeX.
AmoreintroadvancedfortheHarvardmathdep.Detailed but good if you want todig indeeper
An excellent forum for LaTeX is Stackoverflow’s TeX- LaTeX.
RSTUDIO – SWEAVE – KNITR
knitr
• Es un paquete que nos permitirá incorporar muchas
funcionalidades del LaTeX al Rstudio, pudiendo crear documentos
perfectamente maquetados y de edición muy depurada.
• El autor: http://yihui.name/knitr/
• Un blog muy interesante por muchos posts:
– http://statisticalecology.blogspot.com.es/2014/06/knitr-integrar-codigo-ren-archivos-de.html
RStudio:OpcionesGlobales
GenerandoelRnw
Encabezado
\documentclass[a4paper,10pt]{article}
\usepackage[left=1.5cm,top=2.5cm,right=1.5cm,
bottom=2.5cm]{geometry} %margenes
\usepackage[spanish]{babel} %diccionario
\usepackage[utf8]{inputenc} %acentos
\usepackage{graphicx} %Insertar figuras
\usepackage{amsmath} % Fórmulas
\usepackage{amssymb} % Fórmulas
\usepackage{flushend} %si queremos 2 columnas
Título delinforme
\begin{document}
\SweaveOpts{concordance=TRUE}
\title{Sesión 005:AprendiendoSweave desdeRStudio}
\author{XavierBarber}
\date{}
\maketitle
\section{Primera Sección: Elencabezado}
Título delInforme
Empezando…
\pagebreak
\newpage
% esto sirve para hacer un salto de página
% y aquí empieza la nueva página
\section{Estadística descriptiva}
A continuación se va a mostrar alguno ejemplos de mostrar descriptivos:
Leemos unos datos desde un paquete de $\mathbb{R}$
<<leyendodatos>>= % a esto se le llama CHUNK
data(mtcars)
@
% Fin del CHUNK
Esto es un ejemplo de cómo se vería una orden a $\mathbb{R}$. % esto es una
forma de escribir R
Empezando…
Miprimerasalida
Ahorapodemosejecutaruncomandoquedevuelvaunasalida:
<<mi_primera_salida>>=
summary(mtcars)
@
Empezando…
Luegotambiénpodemoscalcularvariablesysóloponerlaseneltexto,para
echoenelCHUNKpondremos'echo=FALSE'.
<<echo=FALSE>>=
a<-134.99
@
JustoaquíarribahemospuestoelCHUNKconelFALSE(Nosevisualizanada).
Yluegodecireneltextoelvalordea=\Sexpr{a}.
Comopodéis veresbastanteútil.Yaséquehayqueaprendermucho,pero
consideroqueesmuyimportanteparaproducirresultadosestéticamanete
adecuados.
\Sexpr{variable_de_R}devuelvesuvalor.
Estoesmuyutil paracitarp-valorescuandoescribimos,¿no?
Unpasitomás
Osvoyaponervariosejemplos.
\pagebreak # esto es un salto de página
\subsection{Ejemplos}
¿CómoinsertoungráficoenelPDFquegenero?
<<label=grafico1, include=TRUE>>=
boxplot(mpg~am, data=mtcars)
title("consumo x tipo de camb.”)
@
Gráficos
Ysepuedeconseguirunaediciónmásperfectaaún:
\begin{figure}[ht] # ht colaca la figura “aquí”
\begin{center}
# lo que escriba estará
centrado
<<label=grafico2,include=TRUE, out.width='10cm'>>=
boxplot(mpg~am, data=mtcars)
@
\end{center}
\caption{Boxplot Consumo(mpg) x Tipo de cambio}
\label{fig:one} #etiqueta por si quiero referenciarla
\end{figure} # fin de la “figura”
TutorialesSweave - knitr
• https://cran.r-project.org/doc/contrib/Rivera-Tutorial_Sweave.pdf
• https://stat.ethz.ch/R-manual/R-devel/library/utils/doc/Sweave.pdf
• http://blog.rstudio.org/2014/06/18/r-markdown-v2/
• http://joshldavis.com/2014/04/12/beginners-tutorial-for-knitr/
RSTUDIO – MARKDOWN – KNITR
Markdown 2.0
• Si bien es cierto que LaTeX para los textos con fórmulas
permite una edición muy superior a cualquier editor de texto
WYSIWYG ( acrónimo de WhatYou See Is What You Get), pero
hay que reconocer que enfrentarse a él por primera vez es
bastante duro.
• Por ello nace como laternativa de lenguaje no compilado el
Markdown 2.0
Rstudio àKnitràWord
• Vamosareproducirlosresultadosanterioresperoahoradesde
Markdown.
• Parapodercomprarposibilidadesdeedición yproducir
resultadosestéticamentemás“agradables”alavista.
• Parasaberlobásicodeknitr lomejoresleeresteminiresumen
desuautor:https://cran.r-project.org/web/packages/knitr/vignettes/knitr-refcard.pdf
Elencabezado
--title: "Generando informes en R”
author: "Xavi Babrer”
date: "28 de febrero de 2016”
output:
pdf_document:
fig_width: 6
fig_height: 4
fig_caption: true
--```{r cargandoPaquetes}
library(knitr)
```
```{r setup, include=FALSE}
knitr::opts_chunk$set(echo = TRUE)
```
Descriptivos
## Estadística Descriptiva
Enprimerlugarindicarosqur podéisgenerarencualquiermomentoelWord,PDFo
HTMLconsimplementedarlealboton **Knit**ydecidirquéformatodeseamos
genrar (1a.ventaja).
```{r cargoDatos}
data(mtcars)
```
```{r cars}
summary(mtcars[,1:3])
```
VeamosahorasiescapazdesacarlosdescriptivosenbonitocomohacíaelSweave
Descriptivo– tablas### Opción 1: ktables
Veamoscómofuncionaestainstrucción.
```{r descriptivo1, echo=FALSE}
des1<-summary(mtcars[,1:3])
```
```{r mi_ktable_1}
kable(des1, digits=2)
```
ElprincipalproblemaradicaenquelasalidaenPDFesmás bonita
queladeWord.
ModelosLineales
Veamos ahora todas las fases a la hora de hacer un modelo
lineal, lo que vamos a ver sirve tanto para los Modelos Lineales
como para los Modelos Generalizados, incluso para los modelos
basados en series temporales.
Estudiandolarelación entrevariables
#ModelosLineales
Enprimerlugarpedimoseldescriptivodelasvariablesquevamosamodelizar:mpg,disp yhp
```{r matrixScatter, eval=TRUE, fig.cap="Scatterplot Matrix usando
pairs"}
pairs(mtcars[,c("mpg","disp","hp")])
```
```{r llamando, results="hide"}
library(GGally)
datos<-data.frame(mtcars[,c("mpg","disp","hp","am")])
datos$am<-factor(datos$am,labels=c("Auto.","Man."))
```
```{r matrixscatterplot2, eval=TRUE, fig.cap="Scatterplot Matrix"}
ggscatmat(datos, columns = 1:3, color="am")
```
Elmodeloaajustar
Unavezvistala"posible"relaciónentrelasvariablesprocedemosaajustarelmodelo
$$\text{mpg}_i=\beta_0+\beta_1\text{disp}_i+\beta_2\text{hp}+\beta_3
\text{am}+\epsilon_i$$
Ajustemospuesestemodeloybusquemoselmejormodelo:
```{r fitmodel_1, results="hide"}
fit1<-lm(mpg~disp+hp+am, data=datos)
```
```{r fitmodel_2}
kable(summary(fit1)$coef, digits=5)
```
El$R^2$-adj=`r summary(fit1)$adj`, ydadoqueesmásgrandeque$0.7$
entenderemosqueelmodeloexplicabastantebien,perohayunavariablenosignificativa,
Bonda deAjuste
porloquelavamosaeliminardelmodelo:
```{r fitmodel_11, results="hide"}
fit1.1<-lm(mpg~hp+am, data=datos)
```
```{r fitmodel_21}
kable(summary(fit1.1)$coef)
```
ElnuevoEl$R^2$-adj=`r summary(fit1.1)$adj`, ytodoslasvariablesson
significativas,nosquedamosconestemodelo,siempr ey cuandopaselafasedevalidación
\pagebreak
ValidandoelModelo:outliers
##Validandoelmodelolineal
```{r validando1, results="hide"}
library(car)
```
**Fase1**:DetectandoOutliers
```{r vali_outliers, fig.cap="Gráfico para detectar
outliers"}
# Assessing Outliers
outlierTest(fit1.1) # Bonferonni p-value for most extreme obs
qqPlot(fit1.1, main="QQ Plot") #qq plot for studentized resid
leveragePlots(fit1.1) # leverage plots
```
Validando:Influyentes
**Fase 2**: DetectandoObservacionesPotencialmenteinfluyentes
```{r vali_influential, fig.cap="Influencia de las Observaciones"}
# Influential Observations
# added variable plots
avPlots(fit1.1)
# Cook's D plot
# identify D values > 4/(n-k-1)
cutoff <- 4/((nrow(mtcars)-length(fit1.1$coefficients)-2))
plot(fit1.1, which=4, cook.levels=cutoff)
# Influence Plot
influencePlot(fit1.1, id.method="identify", main="Influence Plot",
sub="Circle size is proportial to Cook's Distance" )
```
Validando:normalidad
**Fase3**:DetectandolafaltadeNormalidaddelosresiduos
```{r vali_non_normality, fig.cap="Normalidad de los Residuos"}
# Normality of Residuals
# qq plot for studentized resid
qqPlot(fit1.1, main="QQ Plot")
# distribution of studentized residuals
library(MASS)
sresid <- studres(fit1.1)
hist(sresid, freq=FALSE,
main="Distribution of Studentized Residuals")
xfit<-seq(min(sresid),max(sresid),length=40)
yfit<-dnorm(xfit)
lines(xfit, yfit)
```
Validando:homocedasticidad
**Fase4**:DetectandolaHeterocedasticidad delosResiduos
```{r vali_heterocedasticidad,
fig.cap="Homocedasticidad de los Residuos"}
# Evaluate homoscedasticity
# non-constant error variance test
ncvTest(fit1.1)
# plot studentized residuals vs. fitted values
spreadLevelPlot(fit1.1)
```
Validando:Multicolinealidad
**Fase5**:DetectandolaMulticolinealidad
VIF=It provides an index that measures how much the variance (the square
ofthe estimate's standarddeviation)ofan estimated regression coefficient is
increased because ofcollinearity.
```{r vali_colly, fig.cap="Estudio de la
Multicolinealidad"}
# Evaluate Collinearity
vif(fit1.1) # variance inflation factors
sqrt(vif(fit1.1)) > 2 # problem?
```
Validando:linealidad
**Fase6**:Detectandola"faltadelinealidad"delmodelo
```{r vali_nonlinear}
# Evaluate Nonlinearity
# component + residual plot
crPlots(fit1.1)
# Ceres plots
#Combining conditional Expectations and RESiduals
#ceresPlots(fit1.1) no hay suficientes variables
para hacerlo (min 2 cont.)
```
Validando:autocorrelación
**Fase7**:EstudiandolaAutocorrelación
```{r vali_autocor}
acf(sresid)
pacf(sresid)
# Test for Autocorrelated Errors
durbinWatsonTest(fit1.1)
```
Validando:Resumendediagnósticos
**Fase8**:Resumiendolosdiagnósticos
```{r vali_summary}
# Global test of model assumptions
library(gvlma)
gvmodel <- gvlma(fit1.1)
summary(gvmodel)
```
ResumenMarkdown
• TutorialdesdeRstudio
– http://rmarkdown.rstudio.com
• Opcionesdemarkdown:
– https://www.rstudio.com/wp-content/uploads/2015/03/rmarkdown-reference.pdf
• Printando resultados
– http://yihui.name/printr/
• Tutorial
– http://eib.stat.ub.edu/dl143
• Resumen“resumido”
– https://www.rstudio.com/wp-content/uploads/2015/02/rmarkdown-cheatsheet.pdf

Documentos relacionados