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