INFORMES DINÁMICOS CON R

Anuncio
Introducción
¿Qué es Sweave?
Ejemplos Sweave
RMarkdown
Ejemplos RMarkdown
INFORMES DINÁMICOS CON R
Antonio Miñarro
aminarro@ub.edu
Departament d’Estadı́stica
A. Miñarro
Informes Dinámicos
1 / 41
Introducción
¿Qué es Sweave?
Ejemplos Sweave
RMarkdown
Ejemplos RMarkdown
Esquema del tema
1
Introducción
2
¿Qué es Sweave?
3
Ejemplos Sweave
4
RMarkdown
5
Ejemplos RMarkdown
A. Miñarro
Informes Dinámicos
2 / 41
Introducción
¿Qué es Sweave?
Ejemplos Sweave
RMarkdown
Ejemplos RMarkdown
Esquema del tema
1
Introducción
2
¿Qué es Sweave?
3
Ejemplos Sweave
4
RMarkdown
5
Ejemplos RMarkdown
A. Miñarro
Informes Dinámicos
3 / 41
Introducción
¿Qué es Sweave?
Ejemplos Sweave
RMarkdown
Ejemplos RMarkdown
Escribiendo informes estadı́sticos
Datos
Análisis Estadı́stico
-
Texto con el Informe
A. Miñarro
Informes Dinámicos
4 / 41
Introducción
¿Qué es Sweave?
Ejemplos Sweave
RMarkdown
Ejemplos RMarkdown
Escribiendo informes estadı́sticos
$
'
Datos
Software 1
Análisis Estadı́stico
-
&
%
'
$
Software 2
Texto con el Informe
&
A. Miñarro
%
Informes Dinámicos
4 / 41
Introducción
¿Qué es Sweave?
Ejemplos Sweave
RMarkdown
Ejemplos RMarkdown
Programación Literaria
Paradigma de programación propuesto por Donald Knuth
como alternativa al popular paradigma de programación
estructurada
A. Miñarro
Informes Dinámicos
5 / 41
Introducción
¿Qué es Sweave?
Ejemplos Sweave
RMarkdown
Ejemplos RMarkdown
Programación Literaria
Paradigma de programación propuesto por Donald Knuth
como alternativa al popular paradigma de programación
estructurada
Un artı́culo es una sucesión de texto y código
A. Miñarro
Informes Dinámicos
5 / 41
Introducción
¿Qué es Sweave?
Ejemplos Sweave
RMarkdown
Ejemplos RMarkdown
Programación Literaria
Paradigma de programación propuesto por Donald Knuth
como alternativa al popular paradigma de programación
estructurada
Un artı́culo es una sucesión de texto y código
El código se encuentra insertado en çhunks”. Se encarga de
realizar el análisis y preparar las presentaciones (tablas y
figuras)
A. Miñarro
Informes Dinámicos
5 / 41
Introducción
¿Qué es Sweave?
Ejemplos Sweave
RMarkdown
Ejemplos RMarkdown
Programación Literaria
Paradigma de programación propuesto por Donald Knuth
como alternativa al popular paradigma de programación
estructurada
Un artı́culo es una sucesión de texto y código
El código se encuentra insertado en çhunks”. Se encarga de
realizar el análisis y preparar las presentaciones (tablas y
figuras)
El texto documenta y desarrolla las ideas del programador o
analista
A. Miñarro
Informes Dinámicos
5 / 41
Introducción
¿Qué es Sweave?
Ejemplos Sweave
RMarkdown
Ejemplos RMarkdown
Escribiendo informes estadı́sticos
Datos
Análisis Estadı́stico
Texto con el Informe
A. Miñarro
Informes Dinámicos
6 / 41
Introducción
¿Qué es Sweave?
Ejemplos Sweave
RMarkdown
Ejemplos RMarkdown
Escribiendo informes estadı́sticos
$
'
Datos
Análisis Estadı́stico
Texto con el Informe
&
A. Miñarro
%
Informes Dinámicos
6 / 41
Introducción
¿Qué es Sweave?
Ejemplos Sweave
RMarkdown
Ejemplos RMarkdown
Escribiendo informes estadı́sticos
$
'
Datos
Análisis Estadı́stico
Texto con el Informe
&
%
RMarkdown: R + knitr + Markdown
Sweave: R + LATEX
A. Miñarro
RMarkdown
Sweave
Informes Dinámicos
6 / 41
Introducción
¿Qué es Sweave?
Ejemplos Sweave
RMarkdown
Ejemplos RMarkdown
Escribiendo informes estadı́sticos
$
'
Datos
Análisis Estadı́stico
Texto con el Informe
&
%
RMarkdown: R + knitr + Markdown
Sweave: R + LATEX
RMarkdown
Sweave
El objetivo es conseguir informes dinámicos y reproducibles
A. Miñarro
Informes Dinámicos
6 / 41
Introducción
¿Qué es Sweave?
Ejemplos Sweave
RMarkdown
Ejemplos RMarkdown
Esquema del tema
1
Introducción
2
¿Qué es Sweave?
3
Ejemplos Sweave
4
RMarkdown
5
Ejemplos RMarkdown
A. Miñarro
Informes Dinámicos
7 / 41
Introducción
¿Qué es Sweave?
Ejemplos Sweave
RMarkdown
Ejemplos RMarkdown
¿Qué es Sweave?
Una herramienta que permite insertar código R en
documentos LATEX
A. Miñarro
Informes Dinámicos
8 / 41
Introducción
¿Qué es Sweave?
Ejemplos Sweave
RMarkdown
Ejemplos RMarkdown
¿Qué es Sweave?
Una herramienta que permite insertar código R en
documentos LATEX
Se crea un fichero formado por instrucciones LATEX con trozos
(chunks) de còdigo R
A. Miñarro
Informes Dinámicos
8 / 41
Introducción
¿Qué es Sweave?
Ejemplos Sweave
RMarkdown
Ejemplos RMarkdown
¿Qué es Sweave?
Una herramienta que permite insertar código R en
documentos LATEX
Se crea un fichero formado por instrucciones LATEX con trozos
(chunks) de còdigo R
El código se ejecuta al procesar el fichero
A. Miñarro
Informes Dinámicos
8 / 41
Introducción
¿Qué es Sweave?
Ejemplos Sweave
RMarkdown
Ejemplos RMarkdown
¿Qué es Sweave?
Una herramienta que permite insertar código R en
documentos LATEX
Se crea un fichero formado por instrucciones LATEX con trozos
(chunks) de còdigo R
El código se ejecuta al procesar el fichero
Se genera un documento LATEX con el texto y los resultados y
gráficas producidos por R
A. Miñarro
Informes Dinámicos
8 / 41
Introducción
¿Qué es Sweave?
Ejemplos Sweave
RMarkdown
Ejemplos RMarkdown
¿Cómo se instala Sweave?
Asumimos instalados R y LATEX
No requiere instalación especı́fica
Incluido en la distribución base de R a partir de la versión 1.5.0
No necesita ser cargado. Forma parte del package utils
A. Miñarro
Informes Dinámicos
9 / 41
Introducción
¿Qué es Sweave?
Ejemplos Sweave
RMarkdown
Ejemplos RMarkdown
LATEX y MiKTeX
LATEX es un sistema de composición de textos, orientado
especialmente a la creación de libros, documentos cientı́ficos y
técnicos que contengan fórmulas matemáticas
A. Miñarro
Informes Dinámicos
10 / 41
Introducción
¿Qué es Sweave?
Ejemplos Sweave
RMarkdown
Ejemplos RMarkdown
LATEX y MiKTeX
LATEX es un sistema de composición de textos, orientado
especialmente a la creación de libros, documentos cientı́ficos y
técnicos que contengan fórmulas matemáticas
LATEX es software libre bajo licencia LPPL
A. Miñarro
Informes Dinámicos
10 / 41
Introducción
¿Qué es Sweave?
Ejemplos Sweave
RMarkdown
Ejemplos RMarkdown
LATEX y MiKTeX
LATEX es un sistema de composición de textos, orientado
especialmente a la creación de libros, documentos cientı́ficos y
técnicos que contengan fórmulas matemáticas
LATEX es software libre bajo licencia LPPL
LATEX presupone una filosofı́a de trabajo diferente a la de los
procesadores de texto habituales (conocidos como
WYSIWYG) y se basa en comandos
A. Miñarro
Informes Dinámicos
10 / 41
Introducción
¿Qué es Sweave?
Ejemplos Sweave
RMarkdown
Ejemplos RMarkdown
LATEX y MiKTeX
LATEX es un sistema de composición de textos, orientado
especialmente a la creación de libros, documentos cientı́ficos y
técnicos que contengan fórmulas matemáticas
LATEX es software libre bajo licencia LPPL
LATEX presupone una filosofı́a de trabajo diferente a la de los
procesadores de texto habituales (conocidos como
WYSIWYG) y se basa en comandos
Además de sus capacidades gráficas para representar
ecuaciones, fórmulas complicadas o notación cientı́fica,
permite estructurar fácilmente el documento (con capı́tulos,
secciones, notas, bibliografı́a, ı́ndices analı́ticos, etc.).
A. Miñarro
Informes Dinámicos
10 / 41
Introducción
¿Qué es Sweave?
Ejemplos Sweave
RMarkdown
Ejemplos RMarkdown
LATEX y MiKTeX
LATEX es un sistema de composición de textos, orientado
especialmente a la creación de libros, documentos cientı́ficos y
técnicos que contengan fórmulas matemáticas
LATEX es software libre bajo licencia LPPL
LATEX presupone una filosofı́a de trabajo diferente a la de los
procesadores de texto habituales (conocidos como
WYSIWYG) y se basa en comandos
Además de sus capacidades gráficas para representar
ecuaciones, fórmulas complicadas o notación cientı́fica,
permite estructurar fácilmente el documento (con capı́tulos,
secciones, notas, bibliografı́a, ı́ndices analı́ticos, etc.).
MiKTeX es una distribución TeX/LATEX para Microsoft
Windows
A. Miñarro
Informes Dinámicos
10 / 41
Introducción
¿Qué es Sweave?
Ejemplos Sweave
RMarkdown
Ejemplos RMarkdown
LATEX y MiKTeX
LATEX es un sistema de composición de textos, orientado
especialmente a la creación de libros, documentos cientı́ficos y
técnicos que contengan fórmulas matemáticas
LATEX es software libre bajo licencia LPPL
LATEX presupone una filosofı́a de trabajo diferente a la de los
procesadores de texto habituales (conocidos como
WYSIWYG) y se basa en comandos
Además de sus capacidades gráficas para representar
ecuaciones, fórmulas complicadas o notación cientı́fica,
permite estructurar fácilmente el documento (con capı́tulos,
secciones, notas, bibliografı́a, ı́ndices analı́ticos, etc.).
MiKTeX es una distribución TeX/LATEX para Microsoft
Windows
La versión actual de MiKTeX es 2.9 y está disponible en
http://miktex.org/
A. Miñarro
Informes Dinámicos
10 / 41
Introducción
¿Qué es Sweave?
Ejemplos Sweave
RMarkdown
Ejemplos RMarkdown
Descarga de MiKTeX
La descartga de MikTeX puede obtenerse a partir de aquı́:
A. Miñarro
Informes Dinámicos
11 / 41
Introducción
¿Qué es Sweave?
Ejemplos Sweave
RMarkdown
Ejemplos RMarkdown
Esquema del proceso
Creamos el documento LATEX pero con extensión .Rnw por ejemplo
”myfile.Rnw”
1
Puede encontrarse dentro de la carpeta R en share->texmf->tex->latex
A. Miñarro
Informes Dinámicos
12 / 41
Introducción
¿Qué es Sweave?
Ejemplos Sweave
RMarkdown
Ejemplos RMarkdown
Esquema del proceso
Creamos el documento LATEX pero con extensión .Rnw por ejemplo
”myfile.Rnw”
El documento contiene los comandos LATEX y los chunks de código R
1
Puede encontrarse dentro de la carpeta R en share->texmf->tex->latex
A. Miñarro
Informes Dinámicos
12 / 41
Introducción
¿Qué es Sweave?
Ejemplos Sweave
RMarkdown
Ejemplos RMarkdown
Esquema del proceso
Creamos el documento LATEX pero con extensión .Rnw por ejemplo
”myfile.Rnw”
El documento contiene los comandos LATEX y los chunks de código R
El fichero se procesa desde dentro de R con la instrucción
Sweave(”myfile.Rnw”)
1
Puede encontrarse dentro de la carpeta R en share->texmf->tex->latex
A. Miñarro
Informes Dinámicos
12 / 41
Introducción
¿Qué es Sweave?
Ejemplos Sweave
RMarkdown
Ejemplos RMarkdown
Esquema del proceso
Creamos el documento LATEX pero con extensión .Rnw por ejemplo
”myfile.Rnw”
El documento contiene los comandos LATEX y los chunks de código R
El fichero se procesa desde dentro de R con la instrucción
Sweave(”myfile.Rnw”)
Se crea un fichero LATEX myfile.tex que se procesa con LATEX
1
Puede encontrarse dentro de la carpeta R en share->texmf->tex->latex
A. Miñarro
Informes Dinámicos
12 / 41
Introducción
¿Qué es Sweave?
Ejemplos Sweave
RMarkdown
Ejemplos RMarkdown
Esquema del proceso
Creamos el documento LATEX pero con extensión .Rnw por ejemplo
”myfile.Rnw”
El documento contiene los comandos LATEX y los chunks de código R
El fichero se procesa desde dentro de R con la instrucción
Sweave(”myfile.Rnw”)
Se crea un fichero LATEX myfile.tex que se procesa con LATEX
Por ejemplo (verificando que el fichero sweave.sty1 esté en el
texmf path o en el directorio de trabajo) con el editor
TeXworks o directamente con la consola con
pdflatex myfile.tex
1
Puede encontrarse dentro de la carpeta R en share->texmf->tex->latex
A. Miñarro
Informes Dinámicos
12 / 41
Introducción
¿Qué es Sweave?
Ejemplos Sweave
RMarkdown
Ejemplos RMarkdown
Esquema del proceso
Creamos el documento LATEX pero con extensión .Rnw por ejemplo
”myfile.Rnw”
El documento contiene los comandos LATEX y los chunks de código R
El fichero se procesa desde dentro de R con la instrucción
Sweave(”myfile.Rnw”)
Se crea un fichero LATEX myfile.tex que se procesa con LATEX
Por ejemplo (verificando que el fichero sweave.sty1 esté en el
texmf path o en el directorio de trabajo) con el editor
TeXworks o directamente con la consola con
pdflatex myfile.tex
Una alternativa más cómoda es trabajar con un entorno que
integre las aplicaciones R y LATEX. Por ejemplo RStudio
1
Puede encontrarse dentro de la carpeta R en share->texmf->tex->latex
A. Miñarro
Informes Dinámicos
12 / 41
Introducción
¿Qué es Sweave?
Ejemplos Sweave
RMarkdown
Ejemplos RMarkdown
Esquema del tema
1
Introducción
2
¿Qué es Sweave?
3
Ejemplos Sweave
4
RMarkdown
5
Ejemplos RMarkdown
A. Miñarro
Informes Dinámicos
13 / 41
Introducción
¿Qué es Sweave?
Ejemplos Sweave
RMarkdown
Ejemplos RMarkdown
Vamos a ver a continuación:
1
El fichero original Example1.Rnw
2
El fichero resultante final Example1.pdf
A. Miñarro
Informes Dinámicos
14 / 41
Introducción
¿Qué es Sweave?
Ejemplos Sweave
RMarkdown
Ejemplos RMarkdown
Texto del Ejemplo 1
\documentclass{article}
\usepackage[latin1]{inputenc}
\title{Ejemplo minimalista de Sweave}
\author{Antonio Min\~arro}
\begin{document}
\maketitle
En este ejemplo procesamos mínimamente unos datos y producimos unos
resultados que insertamos en un documento \LaTeX{}
<<>>=
data(iris)
anova.iris<-aov(Sepal.Length~Species,data=iris)
resul<-anova(anova.iris)
print(resul)
@
Efectuado el anova sobre la variable \textbf{Sepal.Lenght} el
estadístico
F ha sido \Sexpr{round(resul$'F value'[1],digits=2)} con
\Sexpr{resul$'Df'[1]} y \Sexpr{resul$'Df'[2]}
grados de libertad.
\end{document}
A. Miñarro
Informes Dinámicos
15 / 41
Introducción
¿Qué es Sweave?
Ejemplos Sweave
RMarkdown
Ejemplos RMarkdown
Ejemplo minimalista de Sweave
Antonio Miñarro
1 de junio de 2013
En este ejemplo procesamos mı́nimamente unos datos y producimos unos
resultados que insertamos en un documento LATEX
>
>
>
>
data(iris)
anova.iris<-aov(Sepal.Length~Species,data=iris)
resul<-anova(anova.iris)
print(resul)
Analysis of Variance Table
Response: Sepal.Length
Df Sum Sq Mean Sq F value
Pr(>F)
Species
2 63.212 31.606 119.26 < 2.2e-16 ***
Residuals 147 38.956
0.265
--Signif. codes: 0 '***' 0.001 '**' 0.01 '*' 0.05 '.' 0.1 ' ' 1
Efectuado el anova sobre la variable Sepal.Lenght el estadı́stico F ha sido
119.26 con 2 y 147 grados de libertad.
A. Miñarro
Informes Dinámicos
16 / 41
Introducción
¿Qué es Sweave?
Ejemplos Sweave
RMarkdown
Ejemplos RMarkdown
Opciones para los chunks
label: user-specified - Specify name of chunk
A. Miñarro
Informes Dinámicos
17 / 41
Introducción
¿Qué es Sweave?
Ejemplos Sweave
RMarkdown
Ejemplos RMarkdown
Opciones para los chunks
label: user-specified - Specify name of chunk
eval: TRUE, FALSE - Evaluate chunk?
A. Miñarro
Informes Dinámicos
17 / 41
Introducción
¿Qué es Sweave?
Ejemplos Sweave
RMarkdown
Ejemplos RMarkdown
Opciones para los chunks
label: user-specified - Specify name of chunk
eval: TRUE, FALSE - Evaluate chunk?
echo: TRUE, FALSE - Show S code?
A. Miñarro
Informes Dinámicos
17 / 41
Introducción
¿Qué es Sweave?
Ejemplos Sweave
RMarkdown
Ejemplos RMarkdown
Opciones para los chunks
label: user-specified - Specify name of chunk
eval: TRUE, FALSE - Evaluate chunk?
echo: TRUE, FALSE - Show S code?
term: TRUE, FALSE - Emulates R session? I.e., include
whatever is printed to R console
A. Miñarro
Informes Dinámicos
17 / 41
Introducción
¿Qué es Sweave?
Ejemplos Sweave
RMarkdown
Ejemplos RMarkdown
Opciones para los chunks
label: user-specified - Specify name of chunk
eval: TRUE, FALSE - Evaluate chunk?
echo: TRUE, FALSE - Show S code?
term: TRUE, FALSE - Emulates R session? I.e., include
whatever is printed to R console
results: verbatim, tex, hide - What are we outputting?
Chunks with ’tex’ will be treated as latex code
A. Miñarro
Informes Dinámicos
17 / 41
Introducción
¿Qué es Sweave?
Ejemplos Sweave
RMarkdown
Ejemplos RMarkdown
Opciones para los chunks
label: user-specified - Specify name of chunk
eval: TRUE, FALSE - Evaluate chunk?
echo: TRUE, FALSE - Show S code?
term: TRUE, FALSE - Emulates R session? I.e., include
whatever is printed to R console
results: verbatim, tex, hide - What are we outputting?
Chunks with ’tex’ will be treated as latex code
fig: TRUE, FALSE - Chunk produce graphics? NOTE: Only
one plotting device per chunk!
A. Miñarro
Informes Dinámicos
17 / 41
Introducción
¿Qué es Sweave?
Ejemplos Sweave
RMarkdown
Ejemplos RMarkdown
Opciones para los chunks
label: user-specified - Specify name of chunk
eval: TRUE, FALSE - Evaluate chunk?
echo: TRUE, FALSE - Show S code?
term: TRUE, FALSE - Emulates R session? I.e., include
whatever is printed to R console
results: verbatim, tex, hide - What are we outputting?
Chunks with ’tex’ will be treated as latex code
fig: TRUE, FALSE - Chunk produce graphics? NOTE: Only
one plotting device per chunk!
include: TRUE, FALSE - Automatically generate
includegraphics statement
A. Miñarro
Informes Dinámicos
17 / 41
Introducción
¿Qué es Sweave?
Ejemplos Sweave
RMarkdown
Ejemplos RMarkdown
Texto del Ejemplo 2
\documentclass{article}
\usepackage[spanish]{babel}
\usepackage[latin1]{inputenc}
\addtolength{\topmargin}{-2cm}
\addtolength{\textheight}{24cm}
\title{Ejemplo menos minimalista de Sweave}
\author{Antonio Miñarro}
\begin{document}
\maketitle
En el primer chunk, que no queremos visible, generamos dos variables
y ajustamos un modelo lineal.
<<echo=F,results=hide>>=
x<-rnorm(n=50,mean=10,sd=2)
y<-1.5*x+10+rnorm(n=50,sd=0.5)
lm.fit<-lm(y~x)
@
En el segundo chunk hacemos los resultados del ajuste lineal visibles
a \LaTeX{}
<<echo=F,results=verbatim>>=
print(summary(lm.fit))
@
Finalmente vamos a crear un gráfico de dispersión con la recta de
regresión
<<echo=F,fig=TRUE>>=
plot(x,y)
abline(lm.fit)
@
El coeficiente de determinación es: $ r^2 = $
\Sexpr{round(cor(x,y)*100,digits=2)} \%.
\end{document}
A. Miñarro
Informes Dinámicos
18 / 41
Introducción
¿Qué es Sweave?
Ejemplos Sweave
RMarkdown
Ejemplos RMarkdown
Ejemplo menos minimalista de Sweave
Antonio Miñarro
1 de junio de 2013
En el primer chunk, que no queremos visible, generamos dos variables y
ajustamos un modelo lineal.
En el segundo chunk hacemos los resultados del ajuste lineal visibles a LATEX
Call:
lm(formula = y ~ x)
Residuals:
Min
1Q
-1.27653 -0.34705
Median
0.07917
3Q
0.38163
Max
0.74146
Coefficients:
Estimate Std. Error t value Pr(>|t|)
(Intercept) 9.30629
0.31419
29.62
<2e-16 ***
x
1.56868
0.03025
51.85
<2e-16 ***
--Signif. codes: 0 '***' 0.001 '**' 0.01 '*' 0.05 '.' 0.1 ' ' 1
Residual standard error: 0.4612 on 48 degrees of freedom
Multiple R-squared: 0.9825,
Adjusted R-squared: 0.9821
F-statistic: 2689 on 1 and 48 DF, p-value: < 2.2e-16
y
20
25
30
Finalmente vamos a crear un gráfico de dispersión con la recta de regresión
6
8
10
12
14
x
El coeficiente de determinación es: r2 = 99.12 %.
A. Miñarro
Informes Dinámicos
19 / 41
Introducción
¿Qué es Sweave?
Ejemplos Sweave
RMarkdown
Ejemplos RMarkdown
Modificación manual de las figuras
Una alternativa es no producir automáticamente la orden
\includegraphics
Por ejemplo en nuestro código podrı́amos haber especificado
<<figura1,echo=F,fig=TRUE,include=FALSE>>=
plot(x,y)
abline(lm.fit)
@
\begin{center}
\begin{figure}[h!]
\centering
\includegraphics[width=0.5\textwidth]{Example2b-figura1}
\caption{Regresión lineal}
\end{figure}
A. Miñarro
Informes Dinámicos
20 / 41
Introducción
¿Qué es Sweave?
Ejemplos Sweave
RMarkdown
Ejemplos RMarkdown
Ejemplo menos minimalista de Sweave
Antonio Miñarro
1 de junio de 2013
En el primer chunk, que no queremos visible, generamos dos variables y
ajustamos un modelo lineal.
En el segundo chunk hacemos los resultados del ajuste lineal visibles a LATEX
Call:
lm(formula = y ~ x)
Residuals:
Min
1Q
-1.28348 -0.37575
Median
0.06127
3Q
0.38705
Max
0.82651
Coefficients:
Estimate Std. Error t value Pr(>|t|)
(Intercept) 10.1316
0.3074
32.96
<2e-16 ***
x
1.4833
0.0289
51.33
<2e-16 ***
--Signif. codes: 0 '***' 0.001 '**' 0.01 '*' 0.05 '.' 0.1 ' ' 1
Residual standard error: 0.5256 on 48 degrees of freedom
Multiple R-squared: 0.9821,
Adjusted R-squared: 0.9817
F-statistic: 2635 on 1 and 48 DF, p-value: < 2.2e-16
20
25
y
30
Finalmente vamos a crear un gráfico de dispersión con la recta de regresión
6
8
10
12
14
x
Figura 1: Regresión lineal
El coeficiente de determinación es: r2 = 99.1 %.
A. Miñarro
Informes Dinámicos
21 / 41
Introducción
¿Qué es Sweave?
Ejemplos Sweave
RMarkdown
Ejemplos RMarkdown
Creación de tablas LATEX
Una de las herramientas más utilizadas es la creación de tablas
para LATEX a partir de objetos de R. Es necesario tener cargado el
package xtable de R
> library(xtable)
En las siguientes imágenes mostraremos el código fuente y el
resultado
A. Miñarro
Informes Dinámicos
22 / 41
Introducción
¿Qué es Sweave?
Ejemplos Sweave
RMarkdown
Ejemplos RMarkdown
Texto del Ejemplo 3
\documentclass{article} \usepackage[spanish]{babel} \usepackage[latin1]{inputenc} \addtolength{\topmargin}{‐2cm} \addtolength{\textheight}{24cm} \title{Ejemplo con tablas \LaTeX{}} \author{Antonio Miñarro} \begin{document} \maketitle Simulamos dos variables cualitativas y creamos una tabla de contingencia <<echo=F,results=hide>>= x<‐sample(c('A','B','AB','O'),size=100,replace=TRUE) y<‐sample(c('red','brown','blonde'),size=100,replace=TRUE) tabla<‐table(x,y) @ En el segundo chunk cargamos el package y creamos y mostramos la tabla <<echo=F,results=tex>>= library(xtable) xtable(tabla,caption='Tabla de contingencia') @ \end{document} A. Miñarro
Informes Dinámicos
23 / 41
Introducción
¿Qué es Sweave?
Ejemplos Sweave
RMarkdown
Ejemplos RMarkdown
Ejemplo con tablas LATEX
Antonio Miñarro
17 de junio de 2013
Simulamos dos variables cualitativas y creamos una tabla de contingencia
En el segundo chunk cargamos el package y creamos y mostramos la tabla
A
AB
B
O
blonde
6
12
10
7
brown
10
6
5
7
red
11
6
10
10
Cuadro 1: Tabla de contingencia
A. Miñarro
Informes Dinámicos
24 / 41
Introducción
¿Qué es Sweave?
Ejemplos Sweave
RMarkdown
Ejemplos RMarkdown
Gráficos en bucle
<<fig=TRUE>>
for (i in 1:4) plot(rnorm(100)+i)
@
El código anterior no funciona porque Sweave permite únicamente un gráficos por
cada chunk de tipo figura. La solución es insertar manualmente las órdenes que
generan los ficheros con las imágenes y su inclusión en el fichero LATEX
Solución para gráficos en bucle
<<results=tex,echo=FALSE>>=
for(i in 1:4){
fname <- paste("myfile", i, ".pdf", sep = "")
pdf(file = fname, width = 6, height = 6)
plot(rnorm(100)+i)
dev.off()
cat("\\includegraphics[width=5cm]{", fname, "}\n\n", sep = "")
}
@
A. Miñarro
Informes Dinámicos
25 / 41
Introducción
¿Qué es Sweave?
Ejemplos Sweave
RMarkdown
Ejemplos RMarkdown
Ejemplo con gráficos en bucle LATEX
Antonio Miñarro
17 de junio de 2013
2
1
−1
0
rnorm(100) + i
3
4
Repetimos cuatro veces la simulación de normales y su gráfica
0
20
40
60
80
100
60
80
100
60
80
100
60
80
100
3
2
−1
0
1
rnorm(100) + i
4
5
6
Index
0
20
40
3
2
0
1
rnorm(100) + i
4
5
Index
0
20
40
4
2
3
rnorm(100) + i
5
6
Index
0
20
40
Index
A. Miñarro
Informes Dinámicos
26 / 41
Introducción
¿Qué es Sweave?
Ejemplos Sweave
RMarkdown
Ejemplos RMarkdown
Reaprovechamiento de chunks
\documentclass{article} \usepackage[spanish]{babel} \usepackage[latin1]{inputenc} \addtolength{\topmargin}{‐2cm} \addtolength{\textheight}{24cm} \title{Ejemplo con tablas \LaTeX{}} \author{Antonio Miñarro} \begin{document} \SweaveOpts{concordance=TRUE} \maketitle Simulamos dos variables cualitativas y creamos una tabla de contingencia <<echo=FALSE>>= size=100 @ <<label=chunk1,echo=F,results=hide>>= x<‐sample(c('A','B','AB','O'),size=size,replace=TRUE) y<‐sample(c('red','brown','blonde'),size=size,replace=TRUE) tabla<‐table(x,y) @ En el segundo chunk cargamos el package y creamos y mostramos la tabla <<label=chunk2,echo=F,results=tex>>= library(xtable) xtable(tabla,caption='Tabla de contingencia') @ <<echo=F,results=tex>>= size=1000 <<chunk1>> <<chunk2>> @ \end{document} A. Miñarro
Informes Dinámicos
27 / 41
Introducción
¿Qué es Sweave?
Ejemplos Sweave
RMarkdown
Ejemplos RMarkdown
Ejemplo con tablas LATEX
Antonio Miñarro
17 de junio de 2013
Simulamos dos variables cualitativas y creamos una tabla de contingencia
En el segundo chunk cargamos el package y creamos y mostramos la tabla
A
AB
B
O
blonde
4
9
10
8
brown
9
11
12
12
red
5
5
8
7
Cuadro 1: Tabla de contingencia
A
AB
B
O
blonde
83
96
84
86
brown
92
79
88
67
red
96
78
77
74
Cuadro 2: Tabla de contingencia
A. Miñarro
Informes Dinámicos
28 / 41
Introducción
¿Qué es Sweave?
Ejemplos Sweave
RMarkdown
Ejemplos RMarkdown
Esquema del tema
1
Introducción
2
¿Qué es Sweave?
3
Ejemplos Sweave
4
RMarkdown
5
Ejemplos RMarkdown
A. Miñarro
Informes Dinámicos
29 / 41
Introducción
¿Qué es Sweave?
Ejemplos Sweave
RMarkdown
Ejemplos RMarkdown
RMarkdown
R Markdown es un formato que permite una fácil creación de
documentos, presentaciones dinámicas y informes de R
Combina la sintaxis de Markdown (lenguaje de marcado
(markup language) sencillo) con trozos de código R
incrustados que se ejecutan de forma que el resultado se
puede incluir en el documento final
Los documentos de RMarkdown son totalmente reproducibles
(pueden regenerarse de forma automática cada vez que el
código o los datos cambian)
A. Miñarro
Informes Dinámicos
30 / 41
Introducción
¿Qué es Sweave?
Ejemplos Sweave
RMarkdown
Ejemplos RMarkdown
Requerimientos
Una versión reciente de R
Un editor de texto (por ejemplo el incorporado en RStudio)
Algunos packages adicionales de R accesibles desde el CRAN
(knitr,...)
Conocimientos del lenguaje Markdown
A. Miñarro
Informes Dinámicos
31 / 41
Introducción
¿Qué es Sweave?
Ejemplos Sweave
RMarkdown
Ejemplos RMarkdown
Esquema del proceso
Creamos el documento RMarkdown con extensión .Rmd por ejemplo
”myfile.Rmd”
A. Miñarro
Informes Dinámicos
32 / 41
Introducción
¿Qué es Sweave?
Ejemplos Sweave
RMarkdown
Ejemplos RMarkdown
Esquema del proceso
Creamos el documento RMarkdown con extensión .Rmd por ejemplo
”myfile.Rmd”
El documento contiene los tags de Markdown con el texto y los
chunks de código R
A. Miñarro
Informes Dinámicos
32 / 41
Introducción
¿Qué es Sweave?
Ejemplos Sweave
RMarkdown
Ejemplos RMarkdown
Esquema del proceso
Creamos el documento RMarkdown con extensión .Rmd por ejemplo
”myfile.Rmd”
El documento contiene los tags de Markdown con el texto y los
chunks de código R
knitr procesa y produce un documento Markdown .md. El proceso
puede ejecutarse desde dentro de RStudio o con las instrucciones
library(knitr)
knit2html("myfile.Rmd")
browseURL("myfile.html)
A. Miñarro
Informes Dinámicos
32 / 41
Introducción
¿Qué es Sweave?
Ejemplos Sweave
RMarkdown
Ejemplos RMarkdown
Esquema del proceso
Creamos el documento RMarkdown con extensión .Rmd por ejemplo
”myfile.Rmd”
El documento contiene los tags de Markdown con el texto y los
chunks de código R
knitr procesa y produce un documento Markdown .md. El proceso
puede ejecutarse desde dentro de RStudio o con las instrucciones
library(knitr)
knit2html("myfile.Rmd")
browseURL("myfile.html)
knitr convierte el documento Markdown en un documento HTML
.html (por defecto) publicable o imprimible. También se pueden
general documentos PDF o Word.
A. Miñarro
Informes Dinámicos
32 / 41
Introducción
¿Qué es Sweave?
Ejemplos Sweave
RMarkdown
Ejemplos RMarkdown
Ejecución dentro de RStudio
A. Miñarro
Informes Dinámicos
33 / 41
Introducción
¿Qué es Sweave?
Ejemplos Sweave
RMarkdown
Ejemplos RMarkdown
Esquema del tema
1
Introducción
2
¿Qué es Sweave?
3
Ejemplos Sweave
4
RMarkdown
5
Ejemplos RMarkdown
A. Miñarro
Informes Dinámicos
34 / 41
Introducción
¿Qué es Sweave?
Ejemplos Sweave
RMarkdown
Ejemplos RMarkdown
Ejemplo 1 (fichero Ejemplo1.Rmd)
## Ejemplo minimalista de RMarkdown
En este ejemplo procesamos mı́nimamente unos datos y producimos unos
resultados que insertamos en un documento RMarkdown
```{r}
# Código de R
data(iris)
anova.iris<-aov(Sepal.Length~Species,data=iris)
resul<-anova(anova.iris)
print(resul)
```
Efectuado el anova sobre la variable **Sepal.Lenght** el
estadı́stico
F ha sido `r round(resul$'F value'[1],digits=2)` con `r resul$'Df'[1]` y
`r resul$'Df'[2]` grados de libertad.
> library(knitr)
> knit2html('Ejemplo1.Rmd')
Veamos el resultado
A. Miñarro
Informes Dinámicos
35 / 41
Introducción
¿Qué es Sweave?
Ejemplos Sweave
RMarkdown
Ejemplos RMarkdown
Opciones para los chunks
name of the chunk
A. Miñarro
Informes Dinámicos
36 / 41
Introducción
¿Qué es Sweave?
Ejemplos Sweave
RMarkdown
Ejemplos RMarkdown
Opciones para los chunks
name of the chunk
eval: (TRUE; logical) whether to evaluate the code chunk; it
can also be a numeric vector to select which R expression(s)
to evaluate, e.g. eval=c(1, 3, 4) or eval=-(4:5)
A. Miñarro
Informes Dinámicos
36 / 41
Introducción
¿Qué es Sweave?
Ejemplos Sweave
RMarkdown
Ejemplos RMarkdown
Opciones para los chunks
name of the chunk
eval: (TRUE; logical) whether to evaluate the code chunk; it
can also be a numeric vector to select which R expression(s)
to evaluate, e.g. eval=c(1, 3, 4) or eval=-(4:5)
echo: (TRUE; logical or numeric) whether to include R source
code in the output file
A. Miñarro
Informes Dinámicos
36 / 41
Introducción
¿Qué es Sweave?
Ejemplos Sweave
RMarkdown
Ejemplos RMarkdown
Opciones para los chunks
name of the chunk
eval: (TRUE; logical) whether to evaluate the code chunk; it
can also be a numeric vector to select which R expression(s)
to evaluate, e.g. eval=c(1, 3, 4) or eval=-(4:5)
echo: (TRUE; logical or numeric) whether to include R source
code in the output file
results: markup, asis, hide - What are we outputting? Chunks
with ’tex’ will be treated as latex code
A. Miñarro
Informes Dinámicos
36 / 41
Introducción
¿Qué es Sweave?
Ejemplos Sweave
RMarkdown
Ejemplos RMarkdown
Ejemplo 2: Gráficos (fichero Ejemplo2.Rmd)
## Ejemplo menos minimalista de RMarkdown
### Cálculo estadı́stico
* En el primer chunk, que no queremos visible, generamos dos variables
y ajustamos un modelo lineal.
```{r calculo,echo=F,results='hide'}
x<-rnorm(n=50,mean=10,sd=2)
y<-1.5*x+10+rnorm(n=50,sd=0.5)
lm.fit<-lm(y~x)
```
* En el segundo chunk hacemos los resultados del ajuste lineal visibles
a _RMarkdown_
```{r resultado,echo=F,results='markup'}
print(summary(lm.fit))
```
### Gráficos
* Finalmente vamos a crear un gráfico de dispersión con la recta de
regresión
```{r grafico,fig.height=4,dev='png'}
plot(x,y)
abline(lm.fit)
```
El **coeficiente de determinación** es:
r^2 =
`r round(cor(x,y)*100,digits=2)` %.
> knit2html('Ejemplo2.Rmd')
Veamos el resultado
A. Miñarro
Informes Dinámicos
37 / 41
Introducción
¿Qué es Sweave?
Ejemplos Sweave
RMarkdown
Ejemplos RMarkdown
Ejemplo 3: Gráficos (2) (fichero Ejemplo3.Rmd)
## Ejemplo con gráficos en bucle en RMarkdown
Repetimos cuatro veces la simulación de normales y su gràfica
```{r bucles,include=TRUE,fig.path='figure/',fig.height=4}
for ( i in 1:4) plot(rnorm(100)+i)
```
```{r graf,include=FALSE,fig.path='figure/'}
plot(rnorm(100))
```
Ahora incrustamos la imagen "a mano"
![Imagen graf](figure/graf.png)
> knit2html('Ejemplo3.Rmd')
Veamos el resultado
A. Miñarro
Informes Dinámicos
38 / 41
Introducción
¿Qué es Sweave?
Ejemplos Sweave
RMarkdown
Ejemplos RMarkdown
Creación de tablas con RMarkdown
Una de las herramientas más utilizadas es la creación de tablas a
partir de objetos de R. Es necesario tener cargado el package
xtable de R
> library(xtable)
En las siguientes imágenes mostraremos el código fuente y el
resultado
A. Miñarro
Informes Dinámicos
39 / 41
Introducción
¿Qué es Sweave?
Ejemplos Sweave
RMarkdown
Ejemplos RMarkdown
Ejemplo 4: Tablas (fichero Ejemplo4.Rmd)
## Creación de tablas en RMarkdown
Simulamos dos variables cualitativas y creamos una tabla de contingencia
```{r,results='hide',echo=FALSE}
x<-sample(c('A','B','AB','O'),size=100,replace=TRUE)
y<-sample(c('red','brown','blonde'),size=100,replace=TRUE)
tabla<-table(x,y)
```
En el segundo chunk cargamos el package y creamos y mostramos la tabla
```{r tabla,results='asis'}
library(xtable)
xt<-xtable(tabla,caption='Tabla de contingencia')
print(xt,type='html')
```
También podemos crear nuestras propias tablas *a mano*
Calificación | Número
--- | :---:
Sobresaliente | 2
Notable | 15
Aprobado | 12
Suspenso | 8
**Resultado de las calificaciones**
> knit2html('Ejemplo4.Rmd')
Veamos el resultado
A. Miñarro
Informes Dinámicos
40 / 41
Introducción
¿Qué es Sweave?
Ejemplos Sweave
RMarkdown
Ejemplos RMarkdown
Ejemplo 5: Links (fichero Ejemplo5.Rmd)
## Información adicional sobre Markdown
Podemos encontrar más información en los siguientes enlaces
[Markdown documentation](http://daringfireball.net/projects/markdown/syntax)
[Markdown en la Wikipedia](http://en.wikipedia.org/wiki/Markdown)
Y como siempre nuestro amigo
![Foo](http://www.google.com.au/images/nav_logo7.png)
> knit2html('Ejemplo5.Rmd')
Veamos el resultado
A. Miñarro
Informes Dinámicos
41 / 41
Descargar