182 votes

Workflow pour l'analyse statistique et la rédaction de rapports

Quelqu'un aurait-il une sagesse sur les flux de travail pour l'analyse des données liées à la coutume de la rédaction du rapport? Le cas d'utilisation est essentiellement ceci:

  1. Des commissions de clients un rapport qui utilise l'analyse de données, par exemple une estimation de la population et cartes relatives pour un district de l'eau.

  2. L'analyste télécharge des données, munges les données et enregistre le résultat (par exemple, l'ajout d'une colonne pour la population par unité, ou. les données sont basées sur les limites du district).

  3. L'analyste analyse les données créées dans (2), est proche de son but, mais voit qui a besoin de plus de données et va donc revenir à (1).

  4. Rincer répéter jusqu'à ce que les tableaux et les graphiques rencontrer d'AQ/CQ et de satisfaire le client.

  5. Rédiger le rapport intégrant des tableaux et des graphiques.

  6. L'année prochaine, le client heureux est de retour et veut une mise à jour. Cela devrait être aussi simple que la mise à jour des données en amont, par un nouveau téléchargement (par exemple, obtenir le permis de construire de l'année dernière), et appuyez sur "RECALCULER" bouton, à moins que les spécifications de changement.

Pour le moment, je viens de commencer un répertoire ad-hoc mieux que je peux. Je voudrais adopter une approche plus systématique, donc je suis en espérant que quelqu'un a compris cela... j'utilise un mélange de feuilles de calcul, SQL, ARCGIS, R, et des outils Unix.

Merci!

PS:

Ci-dessous est une base Makefile qui vérifie les dépendances sur les différents intermédiaires ensembles de données (w/ .RData suffixe) et les scripts (.R suffixe). Faire utilise les horodatages pour vérifier les dépendances, donc si vous touch ss07por.csv, il va voir que ce fichier est plus récent que tous les fichiers cibles, qui dépendent d'elle, et exécuter le scripts afin de les mettre à jour en conséquence. C'est toujours un travail en cours, y compris une étape pour la mise en base de données SQL, et une étape pour une création de modèles de langue comme sweave. Veuillez noter que la marque s'appuie sur des onglets dans sa syntaxe, afin de lire le manuel avant de découpage et de collage. Profiter et donner de la rétroaction!

http://www.gnu.org/software/make/manual/html_node/index.html#Top

R=/home/wsprague/R-2.9.2/bin/R

persondata.RData : ImportData.R ../../DATA/ss07por.csv Fonctions.R
 $R --esclave -f ImportData.R

persondata.Munged.RData : MungeData.R persondata.RData Fonctions.R
 $R --esclave -f MungeData.R

report.txt: TabulateAndGraph.R persondata.Munged.RData Fonctions.R
 $R --esclave -f TabulateAndGraph.R > report.txt

194voto

Josh Reich Points 2792

En général, je pause mes projets en 4 morceaux:

  1. de la charge.R
  2. propre.R
  3. la touche func.R
  4. n'.R

de la charge.R: s'occupe du chargement de toutes les données nécessaires. Généralement, un court de fichier, la lecture des données à partir de fichiers, Url et/ou ODBC. Selon le projet à ce stade, je vais écrire l'espace de travail en utilisant save() ou tout simplement garder les choses en mémoire pour la prochaine étape.

propre.R: C'est là où le laid trucs de la vie - prendre soin de valeurs manquantes, la fusion des trames de données, la manipulation des valeurs aberrantes.

la touche func.R: Contient toutes les fonctions nécessaires pour effectuer l'analyse. source()'ing ce fichier ne doit pas avoir d'effets secondaires autres que le chargement jusqu'à la définition d'une fonction. Cela signifie que vous pouvez modifier ce fichier et de le recharger sans avoir à revenir en arrière une répétez les étapes 1 et 2, ce qui peut prendre beaucoup de temps pour exécuter de grands ensembles de données.

n'.R: les Appels de fonctions définies dans la touche func.R pour effectuer l'analyse et de produire des graphiques et des tableaux.

La motivation principale de ce jeu est de travailler avec de grandes données à laquelle vous ne voulez pas avoir à recharger les données chaque fois que vous apportez une modification à une étape ultérieure. Aussi, en gardant mon code compartimentée comme cela signifie que je peux revenir à une longue oublié de projet et de lire rapidement la charge.R et quelles sont les données que j'ai besoin de mettre à jour, et ensuite chercher à le faire.R travailler ce que l'analyse a été effectuée.

94voto

hadley Points 33766

Si vous souhaitez voir quelques exemples, j'ai quelques petites (et moins petites) nettoyage des données et de l'analyse des projets de disponibles en ligne. En plus, vous trouverez un script pour télécharger les données, une pour le nettoyer, et un peu de faire de l'exploration et de l'analyse:

Récemment, j'ai commencé la numérotation des scripts, il est donc tout à fait évident dans quel ordre ils doivent être exécutés. (Si je me sens vraiment de fantaisie, je vais parfois faire en sorte que l'exploration script appelle le nettoyage script qui appelle à son tour le téléchargement de script, faisant chacun l'un minimum de travail nécessaire généralement de vérifier la présence de fichiers de sortie avec file.exists. Cependant, la plupart du temps cela semble exagéré).

J'utilise git pour tous mes projets (un code source sur le système de gestion de sorte que son facile à collaborer avec les autres, voir ce qui est en train de changer et facilement restaurer les versions précédentes.

Si je fais un rapport officiel, j'ai l'habitude de garder de la R de latex et distinct, mais je m'assure toujours que je peux source mon R code pour produire tout le code de sortie et que j'ai besoin pour le rapport. Pour les sortes de rapports que je fais, je trouve cela plus facile et plus propre que de travailler avec latex.

17voto

Shane Points 40885

Je suis d'accord avec les autres intervenants: Sweave est excellent pour la rédaction du rapport de R. Et de reconstruire le rapport avec la mise à jour des résultats est aussi simple que de re-appel de la Sweave fonction. Il est complètement autonome, y compris toutes les analyses, de données, etc. Et vous pouvez contrôler la version du fichier en entier.

J'utilise le StatET plugin pour Eclipse pour le développement de l'rapports, et Sweave est intégré (Eclipse reconnaît le formatage de latex, etc). Sur Windows, il est facile à utiliser MikTEX.

Je voudrais aussi ajouter, que vous pouvez créer de beaux rapports avec Beamer. La création d'un rapport normal est tout aussi simple. J'ai inclus un exemple ci-dessous qui extrait des données à partir de Yahoo! et crée un graphique et un tableau (à l'aide quantmod). Vous pouvez construire ce rapport comme suit:

Sweave(file = "test.Rnw")

Voici le vidéo Projecteur document lui-même:

% 
\documentclass[compress]{beamer}
\usepackage{Sweave}
\usetheme{PaloAlto} 
\begin{document}

\title{test report}
\author{john doe}
\date{September 3, 2009} 

\maketitle

\begin{frame}[fragile]\frametitle{Page 1: chart}

<<echo=FALSE,fig=TRUE,height=4, width=7>>=
library(quantmod)
getSymbols("PFE", from="2009-06-01")
chartSeries(PFE)
@

\end{frame}


\begin{frame}[fragile]\frametitle{Page 2: table}

<<echo=FALSE,results=tex>>=
library(xtable)
xtable(PFE[1:10,1:4], caption = "PFE")
@

\end{frame}

\end{document}

16voto

Shane Points 40885

Je voulais juste ajouter, au cas où quelqu'un raté, qu' il y a un excellent post sur le learnr blog sur la création répétitive rapports avec Jeffrey Horner s brew paquet. Matt et Kevin à la fois mentionné brew ci-dessus. Je n'ai pas réellement utilisé beaucoup de moi-même.

Les entrées suit un joli flux de travail, donc c'est bien intéressant à lire:

  1. Préparer les données.
  2. Préparer le modèle de rapport.
  3. Produire le rapport.

En fait la production du rapport une fois les deux premières étapes sont complètes est très simple:

library(tools)
library(brew)
brew("population.brew", "population.tex")
texi2dvi("population.tex", pdf = TRUE)

14voto

Jeromy Anglim Points 8325

Pour la création de rapports personnalisés, je l'ai trouvé utile d'intégrer un grand nombre de conseils suggérés ici.

Génération de rapports: Une bonne stratégie pour générer des rapports implique la combinaison de Sweave, faire, et de R.

Éditeur: De bons éditeurs pour la préparation de Sweave documents comprennent:

  • StatET et Eclipse
  • Emacs et ESS
  • Vim Vim-R
  • R Studio

Code de l'organisation: En termes de code d'organisation, j'ai trouver deux stratégies utiles:

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X