<?xml version="1.0" encoding="UTF-8"?><rss version="2.0"
	xmlns:content="http://purl.org/rss/1.0/modules/content/"
	xmlns:wfw="http://wellformedweb.org/CommentAPI/"
	xmlns:dc="http://purl.org/dc/elements/1.1/"
	xmlns:atom="http://www.w3.org/2005/Atom"
	xmlns:sy="http://purl.org/rss/1.0/modules/syndication/"
	xmlns:slash="http://purl.org/rss/1.0/modules/slash/"
	>

<channel>
	<title>Super Statisticienne &#187; R</title>
	<atom:link href="https://superstatisticienne.fr/tag/r/feed/" rel="self" type="application/rss+xml" />
	<link>https://superstatisticienne.fr</link>
	<description>Statistiques, R et paillettes...</description>
	<lastBuildDate>Sat, 19 Nov 2016 14:52:42 +0000</lastBuildDate>
	<language>fr-FR</language>
	<sy:updatePeriod>hourly</sy:updatePeriod>
	<sy:updateFrequency>1</sy:updateFrequency>
	
	<item>
		<title>R sur le web : le package “shiny”</title>
		<link>https://superstatisticienne.fr/r-sur-le-web-le-package-shiny/</link>
		<comments>https://superstatisticienne.fr/r-sur-le-web-le-package-shiny/#comments</comments>
		<pubDate>Sat, 06 Feb 2016 13:56:49 +0000</pubDate>
		<dc:creator><![CDATA[superstatisticienne]]></dc:creator>
				<category><![CDATA[R]]></category>
		<category><![CDATA[R-shiny]]></category>
		<category><![CDATA[Web]]></category>
		<category><![CDATA[Dashboard]]></category>
		<category><![CDATA[DataVisualisation]]></category>
		<category><![CDATA[Shiny]]></category>
		<category><![CDATA[WebApp]]></category>

		<guid isPermaLink="false">http://superstatisticienne.fr/?p=436</guid>
		<description><![CDATA[R est un super outil pour les analyses statistiques, qui permet notamment de réaliser tout un tas de graphiques hautement personnalisables afin de rendre la présentation de résultats attrayante et parlante. Un package indispensable pour venir compléter la puissance de R est, selon moi, le package &#171;&#160;shiny&#160;&#187; qui permet d’aller encore plus loin en publiant [&#8230;]]]></description>
				<content:encoded><![CDATA[<p><strong>R</strong> est un super outil pour les analyses statistiques, qui permet notamment de réaliser tout un tas de graphiques hautement personnalisables afin de rendre la présentation de résultats attrayante et parlante.<br />
Un package indispensable pour venir compléter la puissance de R est, selon moi, le <span style="color: #923887;"><strong>package &laquo;&nbsp;shiny&nbsp;&raquo;</strong></span> qui permet d’aller encore plus loin en publiant vos résultats d’analyses sur le web ! Si vous ne le connaissez pas déjà, je vous conseille d’y jeter un oeil, ça va changer votre vie ;-)</p>
<p><span id="more-436"></span><br />
&nbsp;<br />
<span style="color: #923887;"><strong>- Shiny : qu’est-ce que c’est ? -</strong></span></p>
<p><a title="shiny_package" href="https://cran.r-project.org/web/packages/shiny/index.html" target="_blank">Shiny</a> est un package R, développé par <a title="rstudio" href="https://www.rstudio.com/" target="_blank">RStudio</a>, qui permet la création de pages web interactives sur lesquelles il est possible de réaliser toutes les analyses / actions disponibles sous R.</p>
<p>Sa grande force est le fait qu’il n’y a absolument pas besoin de connaître ni HTML, ni CSS, ni Javascript : tout se fait directement en R ! Cela fait de ce package un outil très puissant et très prisé des fans de R ^^<br />
&nbsp;</p>
<p><span style="color: #923887;"><strong>- Shiny : à quoi ça ressemble ? -</strong></span></p>
<p>Pour voir quelques exemples d’applications shiny, voici plusieurs liens :</p>
<ul>
<li>Galerie Shiny (avec des exemples de bases) : <a title="shiny_gallery" href="http://shiny.rstudio.com/gallery/" target="_blank">http://shiny.rstudio.com/gallery/</a></li>
<li>&laquo;&nbsp;Shiny user showcase&nbsp;&raquo; (avec des exemples un peu plus complexes et sophistiqués) : <a title="shiny-user-showcase" href="https://www.rstudio.com/products/shiny/shiny-user-showcase/" target="_blank">https://www.rstudio.com/products/shiny/shiny-user-showcase/</a></li>
<li>&laquo;&nbsp;Show me Shiny&nbsp;&raquo; (pas mal d&rsquo;autres exemples intéressants) : <a title="showmeshiny" href="http://www.showmeshiny.com/" target="_blank">http://www.showmeshiny.com/</a></li>
</ul>
<p>&nbsp;</p>
<p><span style="color: #923887;"><strong>- Shiny : comment ça marche ? -</strong></span></p>
<p>Après avoir installé et chargé le package &laquo;&nbsp;shiny&nbsp;&raquo; dans R (pour l’installation de package R, voir par exemple <a title="les-packages-r" href="http://superstatisticienne.fr/les-packages-r/" target="_blank">ici</a>), il faut créer son application shiny qui sera composée de deux fichiers : un fichier &laquo;&nbsp;<strong>ui.R</strong>&nbsp;&raquo; et un fichier &laquo;&nbsp;<strong>server.R</strong>&nbsp;&raquo; .</p>
<p>La partie &laquo;&nbsp;ui&nbsp;&raquo; : <u>U</u>ser <u>I</u>nterface script, contrôle la mise en page et l&rsquo;apparence de l&rsquo;application.<br />
La partie &laquo;&nbsp;server&nbsp;&raquo; : Server script, contient les instructions dont l&rsquo;ordinateur a besoin pour construire l&rsquo;application.</p>
<p><u>Exemple basique</u> (<em>issu du tutoriel officiel</em>) :</p>
<p>> &laquo;&nbsp;ui.R&nbsp;&raquo; :</p>
<p></p><pre class="crayon-plain-tag">library(shiny)

# Define UI for application that draws a histogram
shinyUI(fluidPage(

  # Application title
  titlePanel("Hello World!"),

  # Sidebar with a slider input for the number of bins
  sidebarLayout(
    sidebarPanel(
      sliderInput("bins",
                  "Number of bins:",
                  min = 5,
                  max = 50,
                  value = 30)
    ),

    # Show a plot of the generated distribution
    mainPanel(
      plotOutput("distPlot")
    )
  )
))</pre><p> </p>
<p>> &laquo;&nbsp;server.R&nbsp;&raquo; :</p>
<p></p><pre class="crayon-plain-tag">library(shiny)

# Define server logic required to draw a histogram
shinyServer(function(input, output) {

  # Expression that generates a histogram. The expression is
  # wrapped in a call to renderPlot to indicate that:
  #
  #  1) It is "reactive" and therefore should
  #     re-execute automatically when inputs change
  #  2) Its output type is a plot

  output$distPlot &lt;- renderPlot({
    x    &lt;- faithful[, 2]  # Old Faithful Geyser data
    bins &lt;- seq(min(x), max(x), length.out = input$bins + 1)

    # draw the histogram with the specified number of bins
    hist(x, breaks = bins, col = 'skyblue', border = 'white')
  })
})</pre><p> </p>
<p>Puis pour lancer l’application et la tester :</p><pre class="crayon-plain-tag">shinyApp(“C:/monchemin/mondossiercontenantlesfichiersR/”)</pre><p></p>
<p><a href="http://superstatisticienne.fr/wp-content/uploads/2016/02/demo1.jpg"><img src="http://superstatisticienne.fr/wp-content/uploads/2016/02/demo1.jpg" alt="demo1" width="976" height="571" class="alignnone size-full wp-image-580" /></a><br />
&nbsp;</p>
<p><span style="color: #923887;"><strong>- Shiny : et ensuite ? -</strong></span></p>
<p>Une fois qu’on est satisfait de son appli &laquo;&nbsp;shiny&nbsp;&raquo;, il va falloir procéder à son <strong>déploiement</strong>, c’est-à-dire la mettre sur le net (pour l’instant tout avait été fait en local).</p>
<p>Pour cela plusieurs options : soit passer par la plateforme <a title="shinyapps" href="http://www.shinyapps.io/" target="_blank">&laquo;&nbsp;shinyapps.io&nbsp;&raquo;</a> mise à disposition par RStudio (très pratique si on veut faire des tests ou partager rapidement son appli), soit passer par l’installation d’un serveur shiny (tout à fait faisable sur une instance AWS par exemple).</p>
<p>Pour plus de détails sur ces étapes, voir les liens suivants : <a title="shinyapps" href="http://www.shinyapps.io/" target="_blank">http://www.shinyapps.io/</a> et <a title="shiny-server" href="https://www.rstudio.com/products/shiny/shiny-server/" target="_blank">https://www.rstudio.com/products/shiny/shiny-server/</a>.</p>
<p>> Exemple avec le lien vers l&rsquo;appli de démo présentée plus haut, hébergée sur &laquo;&nbsp;shinyapps.io&nbsp;&raquo; : <a href="https://superstatisticienne.shinyapps.io/demo1/" title="demo1" target="_blank">https://superstatisticienne.shinyapps.io/demo1/</a><br />
&nbsp;</p>
<p><span style="color: #923887;"><strong>- Shiny : pour aller plus loin -</strong></span></p>
<p>Il existe également un autre package plus ou moins &laquo;&nbsp;dérivé&nbsp;&raquo; de celui-ci : le package <a title="shinydashboard" href="https://cran.r-project.org/web/packages/shinydashboard/index.html" target="_blank">&laquo;&nbsp;shinydashboard&nbsp;&raquo;</a>. Il présente des fonctionnalités similaires mais un &laquo;&nbsp;design de base&nbsp;&raquo; de l&rsquo;appli un peu différent, plus proche des &laquo;&nbsp;tableaux de bords&nbsp;&raquo; (d&rsquo;où son nom ^^) très à la mode en ce moment.</p>
<p>Et pour les graphiques, de nombreux packages permettent la mise en place de graphiques dynamiques basés sur du Javascript, tels que par exemple : &laquo;&nbsp;<em>ggvis</em>&nbsp;&raquo; , &laquo;&nbsp;<em>rCharts</em>&nbsp;&raquo; , &#8230;</p>
<p>A la recherche d’aide pour la création de votre appli &laquo;&nbsp;shiny&nbsp;&raquo; avec R ?<br />
Il y a plusieurs possibilités telles que par exemple :</p>
<ul>
<li>Pour commencer, le tutoriel &laquo;&nbsp;shiny&nbsp;&raquo; : <a title="shiny_tuto" href="http://shiny.rstudio.com/tutorial/" target="_blank">http://shiny.rstudio.com/tutorial/</a></li>
<li>Le support technique de RStudio (si besoin) : <a title="rstudio_support" href="https://support.rstudio.com/hc/en-us" target="_blank">https://support.rstudio.com/hc/en-us</a></li>
<li>Le Google Group &laquo;&nbsp;shiny-discuss&nbsp;&raquo; (pour des questions générales sur la création d’appli shiny) : <a title="shiny-discuss" href="https://groups.google.com/forum/#!forum/shiny-discuss" target="_blank">https://groups.google.com/forum/#!forum/shiny-discuss</a></li>
<li>Le Google Group &laquo;&nbsp;shinyapps-users&nbsp;&raquo; (pour des questions techniques plutôt liées au déploiement) : <a title="shinyapps-users" href="https://groups.google.com/forum/#!forum/shinyapps-users" target="_blank">https://groups.google.com/forum/#!forum/shinyapps-users</a></li>
<li>Et toujours, le forum &laquo;&nbsp;Développez.com&nbsp;&raquo; dédié à R : <a title="dvp_r" href="http://www.developpez.net/forums/f1179/autres-langages/autres-langages/r/" target="_blank">http://www.developpez.net/forums/f1179/autres-langages/autres-langages/r/</a></li>
</ul>
<p>[<a href="http://www.r-bloggers.com/shiny-0-13-0/" title="shiny-0-13-0" target="_blank">NEWS du 12/01/2016</a>] De nouvelles fonctionnalités très intéressantes ajoutées dans la dernière version de &laquo;&nbsp;shiny&nbsp;&raquo; (version 0.13.0), telles que par exemple des templates HTML, la possibilité de créer des événements Javascript et aussi des &laquo;&nbsp;gadgets shiny&nbsp;&raquo; (voir <a href="http://shiny.rstudio.com/articles/gadgets.html" title="shiny-gadgets" target="_blank">ici</a>) ^^</p>
<p>&nbsp;</p>
<p>Sinon, de mon côté, j’ai déjà réalisé quelques applis shiny de tests et je travaille encore sur d’autres actuellement, je vous en reparle un de ces jours ;-)</p>
<p><span style="color: #923887;"><strong>&#8211;&gt; Et vous, avez-vous déjà testé le package R &laquo;&nbsp;shiny&nbsp;&raquo; ? Avez-vous des exemples d’appli à nous faire partager ?</strong></span></p>
<p>&nbsp;</p>
]]></content:encoded>
			<wfw:commentRss>https://superstatisticienne.fr/r-sur-le-web-le-package-shiny/feed/</wfw:commentRss>
		<slash:comments>7</slash:comments>
		</item>
		<item>
		<title>Wordcloud avec R</title>
		<link>https://superstatisticienne.fr/wordcloud-avec-r/</link>
		<comments>https://superstatisticienne.fr/wordcloud-avec-r/#comments</comments>
		<pubDate>Sun, 29 Nov 2015 15:30:43 +0000</pubDate>
		<dc:creator><![CDATA[superstatisticienne]]></dc:creator>
				<category><![CDATA[DataViz]]></category>
		<category><![CDATA[R]]></category>
		<category><![CDATA[DataVisualisation]]></category>
		<category><![CDATA[Text-mining]]></category>
		<category><![CDATA[Wordcloud]]></category>

		<guid isPermaLink="false">http://superstatisticienne.fr/?p=506</guid>
		<description><![CDATA[Un wordcloud (ou nuage de mots-clés / nuage de tags) est une répresentation visuelle de mots dont la taille est proportionelle à la fréquence de ce mot dans un texte donné. Exemple : Avec R, il est assez facile de réaliser des wordcloud plutôt chouettes (je vous l&#8217;ai déjà dit, R c&#8217;est bien ;) ), [&#8230;]]]></description>
				<content:encoded><![CDATA[<p>Un <span style="color: #923887;"><strong>wordcloud</strong></span> (ou nuage de mots-clés / nuage de tags) est une répresentation visuelle de mots dont la taille est proportionelle à la fréquence de ce mot dans un texte donné.</p>
<p><u>Exemple</u> :</p>
<p><a href="http://superstatisticienne.fr/wp-content/uploads/2015/11/exWordcloud.png"><img src="http://superstatisticienne.fr/wp-content/uploads/2015/11/exWordcloud.png" alt="exemple_wordcloud" width="600" height="550" class="alignnone size-full wp-image-509" /></a></p>
<p>Avec R, il est assez facile de réaliser des wordcloud plutôt chouettes (je vous l&rsquo;ai déjà dit, <a href="http://superstatisticienne.fr/r-cest-bien/" title="r-cest-bien" target="_blank">R c&rsquo;est bien</a> ;) ), je vais donc vous montrer comment, avec un petit exemple en relation avec l&rsquo;actualité.</p>
<p><span id="more-506"></span></p>
<p>&nbsp;</p>
<p><span style="color: #923887;"><strong>- Charger les données -</strong></span></p>
<p></p><pre class="crayon-plain-tag">Texte <- readLines("HommageNationalHollande-27112015.txt", encoding = "utf-8")</pre><p> </p>
<p>> Il s&rsquo;agit du texte complet de l&rsquo;hommage aux victimes des attentats du 13 novembre 2015, fait par le président François Hollande le 27 novembre (disponible sur internet).</p>
<p>&nbsp;<br />
<span style="color: #923887;"><strong>- Charger les packages -</strong></span></p>
<p></p><pre class="crayon-plain-tag">library(tm)  # ce package propose un ensemble de fonctions facilitant le traitement de donnees textuelles
library(wordcloud)  # ce package permet la creation de wordcloud</pre><p> </p>
<p>&nbsp;<br />
<span style="color: #923887;"><strong>- Travail sur les données -</strong></span></p>
<p></p><pre class="crayon-plain-tag">text_corpus <- Corpus(VectorSource(Texte))
text_corpus <- tm_map(text_corpus, content_transformer(tolower))
text_corpus <- tm_map(text_corpus, removePunctuation)
text_corpus <- tm_map(text_corpus, function(x)removeWords(x,stopwords(kind = "fr")))</pre><p> </p>
<p>> <u>Explications</u> :</p>
<p>&#8211; La 1ère instruction permet de transformer le texte &laquo;&nbsp;brut&nbsp;&raquo; en un élément de classe &laquo;&nbsp;corpus&nbsp;&raquo; (classe du package &laquo;&nbsp;tm&nbsp;&raquo;), sur lequel un ensemble de fonctions de traitement de texte pourront être directement appliquées.<br />
&#8211; La 2nde instruction permet de transformer toutes les lettres majuscules en lettres minuscules (afin par exemple que &laquo;&nbsp;Hommes&nbsp;&raquo; et &laquo;&nbsp;hommes&nbsp;&raquo; soient traités pareil).<br />
&#8211; La 3ème instruction permet de supprimer automatiquement tous les caractères de ponctuations.<br />
&#8211; La dernière instruction permet de supprimer automatiquement une grande partie des mots &laquo;&nbsp;de base&nbsp;&raquo; d&rsquo;une langue donnée (ici le français avec l&rsquo;instruction : <em>kind = &laquo;&nbsp;fr&nbsp;&raquo;</em>, par défaut il s&rsquo;agit de l&rsquo;anglais), tels que par exemple : le, la, les, de, des, à, où, &#8230;</p>
<p>&nbsp;<br />
<span style="color: #923887;"><strong>- Wordcloud -</strong></span></p>
<p></p><pre class="crayon-plain-tag">set.seed(123456)  # permet de "fixer un graine" pour l'alea, afin de pouvoir regenerer plusieurs fois le meme wordcloud

wordcloud(text_corpus, max.words = 200, colors = brewer.pal(8, "Dark2"),  rot.per=0)</pre><p> </p>
<p><a href="http://superstatisticienne.fr/wp-content/uploads/2015/11/Wordcloud1.png"><img src="http://superstatisticienne.fr/wp-content/uploads/2015/11/Wordcloud1.png" alt="wordcloud1" width="642" height="382" class="alignnone size-full wp-image-518" /></a></p>
<p><u>Remarque</u> : On voit ici qu&rsquo;il reste encore certains mots qui ne sont pas particulièrement utiles pour ce wordcloud visant à mettre en valeurs les &laquo;&nbsp;grands thèmes&nbsp;&raquo; de ce discours d&rsquo;hommage. On va donc tenter d&rsquo;en supprimer quelques-uns pour voir si on obtient quelque chose de mieux.</p>
<p>&nbsp;<br />
<span style="color: #923887;"><strong>- Wordcloud : version 2 -</strong></span></p>
<p></p><pre class="crayon-plain-tag">text_corpus2 <- tm_map(text_corpus, function(x)removeWords(x,c("quils", "cestadire", "tout", "dun", "cest", "etaient", "etre", "parce", "ete", "sais")))  # n'importe quelle liste de mots peut egalement etre passee en argument de la fonction "removeWords"

set.seed(123456)
wordcloud(text_corpus2, max.words = 200, colors = brewer.pal(8, "Dark2"),  rot.per=0)</pre><p> </p>
<p><a href="http://superstatisticienne.fr/wp-content/uploads/2015/11/Wordcloud2.png"><img src="http://superstatisticienne.fr/wp-content/uploads/2015/11/Wordcloud2.png" alt="wordcloud2" width="642" height="382" class="alignnone size-full wp-image-519" /></a></p>
<p>> Ce wordcloud pourrait encore être retravaillé mais il est assez intéressant, notamment si on se concentre sur les mots apparaissant en bleu : <em>hommes</em>, <em>femmes</em>, <em>tous</em>, <em>comme</em>, <em>meme</em>, <em>nation</em>, retranscrivant bien le message général d&rsquo;unité et d&rsquo;égalité de ce discours.</p>
<p>&nbsp;<br />
<span style="color: #923887;"><strong>- Enregistrer son wordcloud dans un fichier externe -</strong></span></p>
<p></p><pre class="crayon-plain-tag">png("monwordcloud.png")
wordcloud(text_corpus2, max.words = 200, colors = brewer.pal(8, "Dark2"),  rot.per=0)
dev.off()</pre><p> </p>
<p>> Fonctionne aussi en remplaçant &laquo;&nbsp;png&nbsp;&raquo; par &laquo;&nbsp;jpeg&nbsp;&raquo;, &laquo;&nbsp;pdf&nbsp;&raquo;, &#8230;</p>
<p>&nbsp;<br />
<span style="color: #923887;"><strong>- Pour aller plus loin : personnalisation du wordcloud -</strong></span></p>
<p>La fonction &laquo;&nbsp;wordcloud&nbsp;&raquo; du package éponyme possède un certain nombre de paramètres permettant de personnaliser ses wordcloud :</p>
<ul>
<li>Tailles maxi et mini des mots affichés :<br />
<pre class="crayon-plain-tag">scale = c(4,0.5)</pre>
</li>
<li>Fréquence à partir de laquelle un mot sera retenu :<br />
<pre class="crayon-plain-tag">min.freq = 3</pre>
</li>
<li>Nombre maximum de mots à afficher :<br />
<pre class="crayon-plain-tag">max.words = Inf</pre>
</li>
<li>Affichage des mots dans un ordre aléatoire :<br />
<pre class="crayon-plain-tag">random.order = TRUE</pre>
</li>
<li>Choix de couleur de mot aléatoire :<br />
<pre class="crayon-plain-tag">random.color = FALSE</pre>
</li>
<li>Proportion de mots tournés à 90 degrés :<br />
<pre class="crayon-plain-tag">rot.per = 0.1</pre>
</li>
<li>Couleur des mots (du moins au plus fréquent) :<br />
<pre class="crayon-plain-tag">colors = "black"</pre>
</li>
<li>Autres paramètres pour le style des mots : type de police, taille des caractères, &#8230;</li>
</ul>
<p><u>Exemple</u> :</p>
<p></p><pre class="crayon-plain-tag">set.seed(123456)
wordcloud(text_corpus, max.words = 200, scale = c(5,0.2), colors = brewer.pal(8, "Paired"), vfont = c("gothic english","plain"), rot.per = 0.3)</pre><p> </p>
<p><a href="http://superstatisticienne.fr/wp-content/uploads/2015/11/Wordcloud3.png"><img src="http://superstatisticienne.fr/wp-content/uploads/2015/11/Wordcloud3.png" alt="wordcloud3" width="605" height="362" class="alignnone size-full wp-image-532" /></a></p>
<p><u>Remarque</u> : Pour le choix des couleurs, il est possible d&rsquo;obtenir facilement des dégradés (ou palettes) &laquo;&nbsp;tout prêts&nbsp;&raquo; grâce au package &laquo;&nbsp;<strong>RColorBrewer</strong>&nbsp;&raquo; (installé avec le package &laquo;&nbsp;wordcloud&nbsp;&raquo;) et à la fonction &laquo;&nbsp;<em>brewer.pal</em>&nbsp;&raquo; utilisée ici dans les exemples.<br />
Ci-dessous les différentes palettes de couleurs disponibles :<br />
<a href="http://superstatisticienne.fr/wp-content/uploads/2015/11/RColorBrewer.png"><img src="http://superstatisticienne.fr/wp-content/uploads/2015/11/RColorBrewer.png" alt="RColorBrewer" width="1366" height="651" class="alignnone size-full wp-image-534" /></a><br />
<span style="color: #923887;"><strong><em>Et vous, avez-vous des exemples de wordcloud particulièrement réussis à partager ?</em></strong></span></p>
<p>&nbsp;</p>
]]></content:encoded>
			<wfw:commentRss>https://superstatisticienne.fr/wordcloud-avec-r/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Typologie avec R</title>
		<link>https://superstatisticienne.fr/typologie-avec-r/</link>
		<comments>https://superstatisticienne.fr/typologie-avec-r/#comments</comments>
		<pubDate>Thu, 15 Oct 2015 08:43:59 +0000</pubDate>
		<dc:creator><![CDATA[superstatisticienne]]></dc:creator>
				<category><![CDATA[Marketing]]></category>
		<category><![CDATA[R]]></category>
		<category><![CDATA[Statistiques]]></category>
		<category><![CDATA[Classification]]></category>

		<guid isPermaLink="false">http://superstatisticienne.fr/?p=88</guid>
		<description><![CDATA[En marketing, on appelle typologie un traitement de données qui vise à régrouper des individus en fonction de leur proximité/ressemblance sur un ensemble de variables. En terme d&#8217;analyse statistique, on va utiliser une analyse factorielle de type &#171;&#160;ACM&#160;&#187; (= Analyse des Correspondances Multiples) suivie d&#8217;une classification ascendante hiérarchique (&#171;&#160;CAH&#160;&#187;). Nous allons donc voir comment faire [&#8230;]]]></description>
				<content:encoded><![CDATA[<p>En marketing, on appelle <span style="color: #923887;"><strong>typologie</strong></span> un traitement de données qui vise à régrouper des individus en fonction de leur <em>proximité</em>/<em>ressemblance</em> sur un ensemble de variables. En terme d&rsquo;analyse statistique, on va utiliser une analyse factorielle de type &laquo;&nbsp;ACM&nbsp;&raquo; (= <u>A</u>nalyse des <u>C</u>orrespondances <u>M</u>ultiples) suivie d&rsquo;une <strong>classification ascendante hiérarchique</strong> (&laquo;&nbsp;CAH&nbsp;&raquo;). </p>
<p>Nous allons donc voir comment faire cela avec <strong>R</strong>.<br />
&nbsp;<br />
<span id="more-88"></span></p>
<p>+ <u>Chargement des données</u> :</p>
<p></p><pre class="crayon-plain-tag">M <- read.csv("data_typo.csv", header = TRUE, sep = ";")</pre><p>> Type du fichier d&rsquo;exemple : CSV, séparateur &laquo;&nbsp;point-virgule&nbsp;&raquo;, questions de type qualitatif et questions à choix multiples au format dichotomique (1 = &laquo;&nbsp;Cité&nbsp;&raquo; / 0 = &laquo;&nbsp;Non Cité&nbsp;&raquo;)<br />
&nbsp;<br />
+ <u>Visualiser le nom des variables/en-têtes de colonnes</u> :</p>
<p></p><pre class="crayon-plain-tag">colnames(M)</pre><p>&nbsp;<br />
+ <u>Gestion des valeurs manquantes NA</u> :</p>
<p></p><pre class="crayon-plain-tag">vm <- which(is.na(M$q1))  # sélectionner les individus ayant une valeur manquante à la question "q1" par exemple
vm <- which(is.na(M[, 3]))  # autre écriture si, par exemple, la question "q1" est en colonne 3 dans les données

# vm contient la liste des numéros de lignes correspondant aux individus ayant une valeur manquante (NA) pour "q1"

M <- M[-vm, ]  # exclusion des NA de q1 dans le jeu de données global</pre><p>&nbsp;<br />
+ <u>Sélection d&rsquo;individus d&rsquo;après un filtre</u> :</p>
<p></p><pre class="crayon-plain-tag">ut <- which(M$util == 1)  # ex : on ne veut réaliser l'analyse que sur les profils "utilisateurs", i.e. les gens ayant choisi la modalité 1 à la question "util"

# ou
ut <- which(M[, 1] == 1)  # si la question "util" est en 1ère colonne dans les données

# ut contient la liste des numéros de lignes correspondant aux individus "utilisateurs"

M <- M[ut, ]  # selection des profils "utilisateurs" parmis le jeu de données global</pre><p>&nbsp;<br />
+ <u>Sélection des variables typo</u> :</p>
<p>Un certain nombre de variables ont été retenues pour réaliser la typologie. On va donc récupérer les données correspondant à ces variables en particulier.</p>
<p></p><pre class="crayon-plain-tag">list_vars <- c(3:5, 12, 24:27)  # contient les numéros des colonnes correspondant aux variables choisies pour la typo</pre><p>> Au final, &laquo;&nbsp;list_vars&nbsp;&raquo; contient les numéros suivants : 3, 4, 5, 12, 24, 25, 26 et 27</p>
<p></p><pre class="crayon-plain-tag">X <- M[, list_vars]</pre><p>> La matrice &laquo;&nbsp;X&nbsp;&raquo; va contenir uniquement les variables (actives et illustratives) qui serviront dans la typologie (dans notre exemple : 8 variables).<br />
&nbsp;<br />
+ <u>Vecteur de poids</u> :</p>
<p>Dans le cas où il existe une pondération sur les individus, on va avoir besoin d&rsquo;un vecteur contenant ces poids.</p>
<p></p><pre class="crayon-plain-tag">poids <- M$poids</pre><p></p>
<p>&nbsp;</p>
<p><span style="color: #923887;"><strong>- Analyse des Correspondances Multiples -</strong></span><br />
&nbsp;<br />
+ <u>Type des variables = &laquo;&nbsp;factor&nbsp;&raquo;</u> :</p>
<p>Dans R, il va falloir spécifier que les variables utilisées pour notre analyse sont de type &laquo;&nbsp;qualitatif&nbsp;&raquo; (ie. avec un nombre fini de modalités entières) : il s&rsquo;agit de mettre les variables de &laquo;&nbsp;X&nbsp;&raquo; au format &laquo;&nbsp;factor&nbsp;&raquo;.</p>
<p></p><pre class="crayon-plain-tag">X <- apply(X, 2, as.factor)

str(X)  # l'appel à la fonction "str" va nous permettre de vérifier que toutes les variables ont bien le type "factor" souhaité</pre><p>&nbsp;<br />
+ <u>ACM</u> :</p>
<p></p><pre class="crayon-plain-tag">library(FactoMineR)  # va permettre de charger la librairie contenant la fonction permettant de réaliser l'ACM

acm <- MCA(X, ncp = 80, graph = FALSE, quali.sup = c(7, 8), row.w = poids)  # réalisation de l'ACM</pre><p></p>
<p><u>Syntaxe</u> : Arguments de la fonction &laquo;&nbsp;MCA&nbsp;&raquo; </p>
<table>
<tr>
<td>X</td>
<td>matrice des variables actives et illustratives utilisées pour l&rsquo;ACM</td>
</tr>
<tr>
<td>ncp</td>
<td>nombre de composantes retenues au maximum</td>
</tr>
<tr>
<td>graph = FALSE</td>
<td>empêche l&rsquo;affichage de sorties graphiques (TRUE pour l&rsquo;autoriser)</td>
</tr>
<tr>
<td>quali.sup = c(&#8230;)</td>
<td>quali.sup = vecteur des numéros de colonnes dans X qui correspondent aux variables illustratives (existe aussi &laquo;&nbsp;quanti.sup&nbsp;&raquo;)</td>
</tr>
<tr>
<td>row.w = poids</td>
<td>permet de spécifier le vecteur des poids des individus (si pas de pondération, ne pas mettre cet argument)</td>
</tr>
</table>
<p>&nbsp;<br />
+ <u>Sélection des composantes</u> :</p>
<p>On va sélectionner un nombre de composantes permettant d&rsquo;obtenir le maximum d&rsquo;informations (par exemple 80%).</p>
<p></p><pre class="crayon-plain-tag">vp <- acm$eig$eigenvalue  # vecteur des valeurs propres associées aux composantes de l'ACM

100*(cumsum(vp)/sum(vp))  # pourcentage cumulé d'info apportée par les composantes de l'ACM</pre><p>> On va ensuite sauvegarder les composantes retenues (ainsi que les données initiales) dans un fichier csv :</p><pre class="crayon-plain-tag">IC <- acm$ind$coord[, 1:25]  # ici on a retenu 25 composantes

colnames(IC) <- paste0("Dim.", 1:25)

C <- cbind(M, IC)

write.csv(C, file = "data_total_with_acm_coord.csv", row.names = FALSE, quote = FALSE)</pre><p></p>
<p>&nbsp;</p>
<p><span style="color: #923887;"><strong>- Classification -</strong></span><br />
&nbsp;<br />
On va maintenant réaliser une classification sur les composantes de l&rsquo;ACM que nous avons retenues afin de séparer nos individus en plusieurs groupes.</p>
<p>+ <u>Dendrogramme</u> :</p>
<p></p><pre class="crayon-plain-tag">dendro <- hclust(dist(model.matrix(~-1+Dim.1+Dim.2+Dim.3+Dim.4+Dim.5+Dim.6+Dim.7+Dim.8+Dim.9+Dim.10+Dim.11+Dim.12+Dim.13+Dim.14+Dim.15+Dim.16+Dim.17+Dim.18+Dim.19+Dim.20+Dim.21+Dim.22+Dim.23+Dim.24+Dim.25,C)), method = "ward")

plot(dendro)  # représentation de l'arbre de classification

# ou : représentation plus personnalisée de l'arbre de classification (nécessite une connexion internet)

source("http://addictedtor.free.fr/packages/A2R/lastVersion/R/A2R")

pdf("dendro5.pdf")  # va permettre de sauvegarder le dendrogramme au format pdf

A2Rplot(dendro, k = 5, lty.up = 1, lty.down = 1, boxes = FALSE, col.down = c("orange", "blue", "green", "red", "yellow"), lwd.down = 1, col.up = "black", show.labels = FALSE, main = "Dendrogramme")  # ici répartition en 5 groupes

dev.off()</pre><p></p>
<p>> L&rsquo;observation de l&rsquo;arbre va nous permettre de décider d&rsquo;un nombre <em>k</em> de groupes dans lesquels seront répartis les individus de l&rsquo;étude.</p>
<p><u>Exemple de dendrogramme</u> :</p>
<p><a href="http://superstatisticienne.fr/wp-content/uploads/2014/06/dendro5.png"><img src="http://superstatisticienne.fr/wp-content/uploads/2014/06/dendro5.png" alt="dendro5" width="700" height="700" class="aligncenter size-full wp-image-158" /></a></p>
<p>+ <u>Répartition des individus dans les groupes et effectifs</u> :</p>
<p></p><pre class="crayon-plain-tag">group5 <- cutree(dendro, k = 5)  # vecteur contenant le numéro du groupe (ici entre 1 et 5) auquel appartient chaque individu

table(group5)  # va renvoyer le tableau d'effectifs de chacun des 5 groupes</pre><p>> On va ensuite sauvegarder les numéros de groupe des individus (ainsi que les résultats de l&rsquo;ACM et les données initiales) dans un fichier csv :</p><pre class="crayon-plain-tag">T <- cbind(C, group5)

write.csv(T, file = "data_complete_with_groups.csv", row.names = FALSE, quote = FALSE)</pre><p></p>
<p>&nbsp;</p>
<p><span style="color: #923887;"><strong>- Description des groupes -</strong></span><br />
&nbsp;<br />
Maintenant que nous avons une répartition de nos individus en <em>k</em> groupes, ce qui va nous intéresser c&rsquo;est de déterminer quels sont les éléments (variables) qui caractérisent ces différents groupes.<br />
Pour cela, on peut utiliser la fonction : &laquo;&nbsp;<em>catdes.w</em>&laquo;&nbsp;, donc vous trouverez le code ci-dessous :<br />
(<em>il s&rsquo;agit en fait d&rsquo;une version très légèrement modifiée de la fonction &laquo;&nbsp;catdes&nbsp;&raquo; du package &laquo;&nbsp;FactoMineR&nbsp;&raquo;, afin de pouvoir prendre en compte un poids sur les individus</em>)</p>
<div class="omsc-accordion"><br />
<div class="omsc-toggle"><div class="omsc-toggle-title">Afficher code</div><div class="omsc-toggle-inner"><br />
<pre class="crayon-plain-tag">catdes.w<-function (donnee, num.var, proba = 0.05 , weight=NULL) 
{
   lab.sauv <- lab <- colnames(donnee)
   quali = NULL

   for (i in 1:length(lab))
   {
      lab[i] = gsub(" ", ".", lab[i])

      if (is.factor(donnee[, i]))
      {
         if (levels(donnee[, i])[1] == "")
         {	
            levels(donnee[, i])[1] = "NA"
         }

         if (i != num.var)
         {
            quali = c(quali, i)
         }
      }
   }

   quanti = (1:ncol(donnee))[-c(quali, num.var)]

   if (length(quanti) == 0)
   {
      quanti = NULL
   }

   colnames(donnee) = lab
   res = list()
   nb.modalite <- length(levels(donnee[, num.var]))
   nb.quali = length(quali)
   old.warn = options("warn")

   if(length(weight)==0)
   {
      weight<-rep(1,dim(donnee)[1])
   }

   if (nb.quali > 0) 
   {
      options(warn = -1)

      marge.li = xtabs(weight~donnee[, num.var])
      nom = tri = structure(vector(mode = "list", length = nb.modalite), names = levels(donnee[, num.var]))

      for (i in 1:nb.quali) 
      {
         Table <- xtabs(weight~donnee[, num.var] + donnee[, quali[i]])
         marge.col = xtabs(weight~donnee[, quali[i]])

         ML<-rowSums(Table)

         for (j in 1:nlevels(donnee[, num.var]))
         {
            for (k in 1:nlevels(donnee[, quali[i]]))
            {
               aux2 = Table[j, k]/ML[j]

               if(ML[j]==0)
               {
                  aux2 = 0
               }

               aux3 = marge.col[k]/sum(marge.col)

               if (aux2 > aux3) 
               {
                  aux4 = phyper(Table[j, k] - 1, ML[j], sum(ML) - ML[j], marge.col[k], lower.tail = FALSE) * 2
               }
               else 
               {
                  aux4 = phyper(Table[j, k], ML[j], sum(ML) - ML[j], marge.col[k]) * 2
               }

               if (aux4 < proba)
               {
                  aux5 = (1 - 2 * as.integer(aux2 > aux3)) * qnorm(aux4/2)
                  aux1 = Table[j, k]/marge.col[k]

                  tri[[j]] = rbind(tri[[j]], c(aux1 * 100, aux2 * 100, aux3 * 100, aux4, aux5))
                  nom[[j]] = rbind(nom[[j]], c(levels(donnee[,quali[i]])[k], colnames(donnee)[quali[i]]))
               }
            }
         }
      }

      for (j in 1:nb.modalite)
      {
         if (!is.null(tri[[j]]))
         {
            oo = rev(order(tri[[j]][, 5]))
            tri[[j]] = tri[[j]][oo, ]
            nom[[j]] = nom[[j]][oo, ]

            if (nrow(matrix(tri[[j]], ncol = 5)) > 1)
            {
               rownames(tri[[j]]) = paste(nom[[j]][, 2], nom[[j]][,1], sep = "=")
            }
            else
            {
               tri[[j]] = matrix(tri[[j]], ncol = 5)
               rownames(tri[[j]]) = paste(nom[[j]][2], nom[[j]][1], sep = "=")
            }

            colnames(tri[[j]]) = c("Cla/Mod", "Mod/Cla", "Global", "p.value", "v.test")
         }

      }

      res$category = tri
   }

   if (!is.null(quanti))
   {
      nom = result = structure(vector(mode = "list", length = nb.modalite), names = levels(donnee[, num.var]))

      for (i in 1:length(quanti))
      {
         moy.mod = by(donnee[, quanti[i]]*weight, donnee[, num.var], mean, na.rm = TRUE)
         n.mod = summary(donnee[, num.var])

         sd.mod = by(donnee[, quanti[i]]*weight, donnee[, num.var], sd, na.rm = TRUE)
         sd.mod = sd.mod * sqrt((n.mod - rep(1, nb.modalite))/n.mod)

         moy = mean(donnee[, quanti[i]]*weight, na.rm = TRUE)
         et = sd(donnee[, quanti[i]]*weight, na.rm = TRUE) * sqrt(1 - 1/sum(n.mod))

         for (j in 1:nb.modalite)
         {
            v.test = (moy.mod[j] - moy)/et * sqrt(n.mod[j])/sqrt((sum(n.mod) - n.mod[j])/(sum(n.mod) - 1))
            p.value = pnorm(abs(v.test), lower.tail = FALSE) * 2

            if (!is.na(v.test))
            {
               if (abs(v.test) > -qnorm(proba/2))
               {
                  result[[j]] = rbind(result[[j]], c(v.test, moy.mod[j], moy, sd.mod[j], et, p.value))
                  nom[[j]] = c(nom[[j]], colnames(donnee)[quanti[i]])
               }
            }
         }
      }

      for (j in 1:nb.modalite)
      {
         if (!is.null(result[[j]]))
         {
            oo = rev(order(result[[j]][, 1]))
            result[[j]] = result[[j]][oo, ]
            nom[[j]] = nom[[j]][oo]

            if (nrow(matrix(result[[j]], ncol = 6)) > 1)
            {
               rownames(result[[j]]) = nom[[j]]
               colnames(result[[j]]) = c("v.test", "Mean in category", "Overall mean", "sd in category", "Overall sd", "p.value")
            }
            else
            {
               result[[j]] = matrix(result[[j]], ncol = 6)
               rownames(result[[j]]) = nom[[j]]
               colnames(result[[j]]) = c("v.test", "Mean in category", "Overall mean", "sd in category", "Overall sd", "p.value")
            }
         }
      }

      res$quanti = result
   }

   options(old.warn)
   class(res) <- c("catdes", "list ")
   return(res)
}</pre><br />
</div></div><br />
</div>
<p>&nbsp;<br />
<u>Utilisation</u> :</p>
<p></p><pre class="crayon-plain-tag">M <- read.csv("data_complete_with_groups.csv", header = TRUE, sep = ",")

vars <- c(3:5, 12, 24:27, 45)  # liste des numéros de colonnes correspondant aux variables utilisées pour la typo ET à la variable "groupe"

X <- M[, vars]

D <- apply(X, 2, as.factor)

donnees <- as.data.frame(D)

num.var <- 9  # la variable "groupe" est située en 9ème colonne de "donnees"

proba = 0.05  # seuil de significativité = 5%

weight <- M[, 2]  # le poids des individus est en 2ème colonne de M


source("catdes_w.R")  # va permettre d'indiquer à R où trouver le code de la fonction "catdes.w" qu'on aura au préalable sauvegardée dans une fichier nommé "catdes_w.R"

results <- catdes.w(donnees, num.var, proba = 0.05 , weight) 

G1 <- results$category$"1"
G2 <- results$category$"2"
G3 <- results$category$"3"
G4 <- results$category$"4"
G5 <- results$category$"5"

K <- rbind(rep("",5), round(G1,3), rep("",5), rep("",5), round(G2,3), rep("",5), rep("",5), round(G3,3), rep("",5), rep("",5), round(G4,3), rep("",5), rep("",5), round(G5,3), rep("",5))

write.csv(K, file = "Typo1_5groups_weighted.csv", quote = FALSE)  # va sauvegarder la description des groupes typo dans un fichier csv (qu'on pourra mettre en page par la suite, notamment en remplaçant les valeurs de type "q1_1=1" par le libellé correspondant)</pre><p></p>
<p>&nbsp;</p>
<p><span style="color: #923887;"><strong>- Lecture des résultats -</strong></span><br />
&nbsp;<br />
Exemple de description d&rsquo;un groupe :</p>
<div class="monTableau">
<table border="1">
<tr>
<th> </th>
<th>Cla / Mod</th>
<th>Mod / Cla</th>
<th>Global</th>
<th>p.value</th>
<th>v.test</th>
</tr>
<tr>
<td>Q18 &#8211; Satisfaction : Clarté de la présentation = ST Pas satisfait</td>
<td>71.43</td>
<td>78.43</td>
<td>13.93</td>
<td>3.70 10^-20</td>
<td>11.72</td>
</tr>
</table>
</div>
<p>&nbsp;<br />
> <em><strong>Cla / Mod = 71,43</strong></em> : 71,43 % des individus (parmis l&rsquo;ensemble de la population à qui est posée cette question) qui sont &laquo;&nbsp;Non Satisfaits&nbsp;&raquo; par &laquo;&nbsp;la clarté de la présentation des informations&nbsp;&raquo; se retrouvent dans ce groupe.</p>
<p>> <em><strong>Mod / Cla = 78,43</strong></em> et <em><strong>Global = 13,93</strong></em> : dans ce groupe il y a 78,43 % des individus qui sont &laquo;&nbsp;Non Satisfaits&nbsp;&raquo; par &laquo;&nbsp;la clarté de la présentation des informations&nbsp;&raquo; alors que dans la population global il n&rsquo;y en a que 13,93 %, il y a donc une sur-représentation de cette modalité dans le groupe.</p>
<p>> <em><strong>p.value = 3.70 10^-20</strong></em> : La sur-représentation dans ce groupe de la modalité &laquo;&nbsp;Non Satisfaits&nbsp;&raquo; pour &laquo;&nbsp;la clarté de la présentation des informations&nbsp;&raquo; est significative au seuil 3.70&#215;10^-20.</p>
<p>> <em><strong>v.test = 11.72</strong></em> : valeur de la statistique de test permettant de déterminer la significativité des variables de description du groupe (si la valeur est positive, on aura une sur-représentation de la modalité considérée, si elle est négative, une sous-représentation).</p>
<p>C&rsquo;est cette description de chacun des différents groupes qui va permettre ensuite de classer nos répondants dans des catégories bien spécifiques auxquelles on pourra donner des noms en rapport avec la description obtenue (par exemple &laquo;&nbsp;Les insatisfaits&nbsp;&raquo;).</p>
<p>&nbsp;</p>
]]></content:encoded>
			<wfw:commentRss>https://superstatisticienne.fr/typologie-avec-r/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Les packages R</title>
		<link>https://superstatisticienne.fr/les-packages-r/</link>
		<comments>https://superstatisticienne.fr/les-packages-r/#comments</comments>
		<pubDate>Thu, 01 Oct 2015 20:16:20 +0000</pubDate>
		<dc:creator><![CDATA[superstatisticienne]]></dc:creator>
				<category><![CDATA[R]]></category>
		<category><![CDATA[Packages]]></category>

		<guid isPermaLink="false">http://superstatisticienne.fr/?p=85</guid>
		<description><![CDATA[Comme je vous le disais il y a peu : R c&#8217;est bien ! ;) En effet, une des grandes forces de R est sa licence GNU GPL et sa multitude de contributeurs. Contributeurs qui peuvent donc, grâce au système de packages, partager leurs créations et fonctions R dans des domaines plus que variés. Vous [&#8230;]]]></description>
				<content:encoded><![CDATA[<p>Comme je vous le disais il y a peu : <span style="color: #923887;">R c&rsquo;est bien ! ;)</span></p>
<p>En effet, une des grandes <strong>forces de R</strong> est sa licence GNU GPL et sa multitude de contributeurs.<br />
Contributeurs qui peuvent donc, grâce au système de <strong>packages</strong>, partager leurs créations et fonctions R dans des domaines plus que variés.<br />
Vous pouvez retouver la liste complète de ces packages ici : <a href="http://cran.r-project.org/web/packages/available_packages_by_name.html" target="_blank">&laquo;&nbsp;CRAN Packages By Name&nbsp;&raquo;</a>, ou bien classés par thème ici : <a href="http://cran.r-project.org/web/views/" target="_blank">&laquo;&nbsp;CRAN Task Views&nbsp;&raquo;</a>.</p>
<p>Je vous parlerai dans un prochain article de mes packages R préférés mais pour le moment, voyons comment les utiliser ^^</p>
<p><span id="more-85"></span></p>
<p>&nbsp;<br />
<span style="color: #923887;"><strong>- Gestion des packages -</strong></span></p>
<p>+ <u>Installer un package dans R</u> :</p>
<p></p><pre class="crayon-plain-tag">install.packages("nom_du_package", dependencies = TRUE)</pre><p>> Il vous est ensuite demandé de sélectionner un &laquo;&nbsp;serveur miroir&nbsp;&raquo; pour récupérer le package.<br />
&nbsp;<br />
+ <u>Charger le package dans R</u> :</p>
<p></p><pre class="crayon-plain-tag">library(nom_du_package)</pre><p>> Et c&rsquo;est parti ! ;)</p>
<p>&nbsp;<br />
<u>Remarque</u> : Si vous êtes sous Windows, il est aussi possible d&rsquo;installer un package sous R en mode &laquo;&nbsp;clic-bouton&nbsp;&raquo; dans le menu &laquo;&nbsp;Packages > Installer un package&nbsp;&raquo; de R ou bien sous &laquo;&nbsp;R Studio&nbsp;&raquo; via le menu &laquo;&nbsp;Outils > Installer un package&nbsp;&raquo;.<br />
&nbsp;<br />
<u>Remarque 2</u> : Si vous êtes sous Linux, l&rsquo;installation d&rsquo;un package R nécessite d&rsquo;être en <em>root</em>.</p>
<p>&nbsp;<br />
<span style="color: #923887;"><strong>- Astuce pratique -</strong></span></p>
<p>Si vous utilisez très souvent certains packages, il peut s&rsquo;avérer fastidieux de devoir les charger à chaque nouvelle session de R. Une astuce consiste donc à paramétrer R de sorte à ce que ces packages soient chargés automatiquement à chaque lancement de R.<br />
Pour cela, on va aller modifier le fichier <span style="color: #923887;"><em>.Rprofile</em></span> (si ce fichier n&rsquo;existe pas, il vous suffit de le créer à la racine de votre dossier de travail). Ici on va simplement y ajouter les lignes de code souhaitées, par exemple :</p>
<p></p><pre class="crayon-plain-tag">library(nom_du_package1)
library(nom_du_package2)</pre><p> </p>
<p>Il y a bien sûr tout un tas d&rsquo;autres éléments / paramètres possibles qui peuvent être ajoutés dans le fichier <em>.Rprofile</em>, en fonction de vos besoins propres. Par exemple, vous pouvez utiliser le fichier <em>.Rprofile</em> pour spécifier un &laquo;&nbsp;serveur miroir&nbsp;&raquo; à utiliser par défaut :</p>
<p></p><pre class="crayon-plain-tag">options("repos" = c(CRAN = "http://cran.uk.r-project.org/"))</pre><p> </p>
<p>Par contre <strong>ATTENTION</strong> : si vous partagez votre code, prenez bien garde à spécifier les éléments nécessaires (tels que les packages par exemple) car les autres ne disposeront peut-être pas du même fichier <em>.Rprofile</em> que vous !</p>
<p>&nbsp;<br />
<span style="color: #923887;"><strong>- Et aussi&#8230; -</strong></span></p>
<p>Enfin, en dehors des packages &laquo;&nbsp;approuvés&nbsp;&raquo; disponibles sur le CRAN, il est également possible de charger dans R des packages que d&rsquo;autres utilisateurs ont mis à disposition, par exemple sur leurs github personnels.<br />
Pour cela, il faudra utiliser le package &laquo;&nbsp;devtools&nbsp;&raquo; et installer certains composants si vous ne les avez pas déjà (<em>Rtools</em> sous Windows par exemple). Vous pouvez trouver plus d&rsquo;infos à ce sujet ici : <a href="https://github.com/hadley/devtools" title="devtools" target="_blank">https://github.com/hadley/devtools</a>.<br />
Personnellement je n&rsquo;ai pas encore eu l&rsquo;occasion de tester mais je trouve que c&rsquo;est une très bonne idée :)</p>
<p>&nbsp;</p>
]]></content:encoded>
			<wfw:commentRss>https://superstatisticienne.fr/les-packages-r/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>R c’est bien !</title>
		<link>https://superstatisticienne.fr/r-cest-bien/</link>
		<comments>https://superstatisticienne.fr/r-cest-bien/#comments</comments>
		<pubDate>Mon, 28 Sep 2015 19:58:19 +0000</pubDate>
		<dc:creator><![CDATA[superstatisticienne]]></dc:creator>
				<category><![CDATA[R]]></category>
		<category><![CDATA[Statistiques]]></category>

		<guid isPermaLink="false">http://superstatisticienne.fr/?p=40</guid>
		<description><![CDATA[Bonjour à tous ! Comme je l’ai mentionné dans ma présentation, je suis une grande fan de R et je vais probablement en parler souvent ici. Pour ceux qui ne connaîtraient pas encore, il n’est jamais trop tard ;) Bonne lecture ! &#8211; &#8211; &#8211; &#8211; &#8211; &#8211; R est un langage de programmation et [&#8230;]]]></description>
				<content:encoded><![CDATA[<p><em>Bonjour à tous !</p>
<p>Comme je l’ai mentionné dans ma <a href="http://superstatisticienne.fr/hello-world/" target="_blank">présentation</a>, je suis une grande fan de R et je vais probablement en parler souvent ici.<br />
Pour ceux qui ne connaîtraient pas encore, il n’est jamais trop tard ;)</p>
<p>Bonne lecture !</em></p>
<p>&#8211; &#8211; &#8211; &#8211; &#8211; &#8211;<br />
<span id="more-40"></span></p>
<p><strong>R</strong> est un langage de programmation et un environnement statistique, petit frère libre (licence GNU GPL) du langage S. R permet de faire de la manipulation de données, des analyses statistiques diverses et variées, des restitutions graphiques hautement personnalisables et bien plus encore, tout ça sur Windows, Unix ou Mac OS !</p>
<p>Le <strong>site officiel</strong> : <a href="http://cran.r-project.org/" target="_blank">http://cran.r-project.org/</a></p>
<p>&nbsp;</p>
<p><a><img src="http://superstatisticienne.fr/wp-content/uploads/2014/05/R-logo.png" alt="R-logo" width="200" height="150" class="aligncenter" /></a></p>
<p>&nbsp;</p>
<p>Le principe et la force de R reposent sur ses nombreux contributeurs, auteurs de “<strong>packages</strong>” permettant toujours de nouvelles fonctionnalités et applications dans des domaines très variés (écologie, finance, médecine, psychologie, &#8230;).<br />
Ces packages sont “validés” avant d’être publiés ici : <a href="http://cran.r-project.org/web/packages/" target="_blank">http://cran.r-project.org/web/packages/</a> . Egalement, de nombreux packages &laquo;&nbsp;non encore officialisés&nbsp;&raquo; sont disponibles sur les dépo github d&rsquo;utilisateurs passionnés et sont facilement intégrables dans R grâce au package <a href="http://cran.r-project.org/web/packages/devtools/index.html" title="devtools" target="_blank">&laquo;&nbsp;devtools&nbsp;&raquo;</a>.<br />
Je reviendrai plus en détails sur les packages R dans un prochain billet (lien à venir ici).</p>
<p>La version de R la plus récente est là 3.2.2 (&laquo;&nbsp;<em>Fire Safety</em>&laquo;&nbsp;).</p>
<p>Egalement à voir, un IDE (multi-plateformes) vraiment bien fait pour R : <a href="http://www.rstudio.com/" target="_blank">RStudio</a>.<br />
Personnellement je ne suis pas habituée à travailler avec un IDE, mais plus je pratique sous RStudio, plus je découvre de fonctionnalités, plus je le trouve indispensable ! Je le recommande donc vivement ;)</p>
<p>Parmi les nombreux avantages de R : la multitude des formats de données pris en charge (texte, CSV, Excel, SAV, SAS, base de données SQL, …) et la possibilité de s’interfacer ou de faire appel à du code provenant d’autres langages/logiciels (Fortran, C, Python, Perl, SAS, Excel, …). Egalement la possibilité de générer des “rapports automatisés” en Word ou LaTeX ou encore de créer des applications (ou &laquo;&nbsp;tableaux de bord&nbsp;&raquo;) web dynamiques.</p>
<p>&nbsp;</p>
<p><span style="text-decoration: underline;"><strong>Besoin d’aide avec R ?</strong></span></p>
<p>Il existe plusieurs mailing list : <a href="https://stat.ethz.ch/mailman/listinfo/r-help" target="_blank">R-Help</a> (anglais), <a href="http://rug.mnhn.fr/semin-r" target="_blank">SeminR</a> et <a href="http://listes.univ-lyon1.fr/wws/info/adelist" target="_blank">adelist</a> (français) ainsi que des forums, dont le plus célèbre au niveau francophone : <a title="Forum R Developpez.com" href="http://www.developpez.net/forums/f1179/autres-langages/autres-langages/r/" target="_blank">Forum R Developpez.com</a> (j’en suis une des modératrices d’ailleurs ;) ).<br />
Pour rechercher une fonction en particulier, je recommande : <a title="RSiteSearch" href="http://finzi.psych.upenn.edu/search.html" target="_blank">RSiteSearch</a>.</p>
<p>Quelques tutoriels (liste non exhaustive) :</p>
<p><a href="http://r.developpez.com/" target="_blank">http://r.developpez.com/</a><br />
<a href="http://pbil.univ-lyon1.fr/R/" target="_blank">http://pbil.univ-lyon1.fr/R/</a><br />
<a href="http://cran.r-project.org/manuals.html" target="_blank">http://cran.r-project.org/manuals.html</a></p>
<p>Egalement une super mine d’or sur le sujet : <a href="http://www.r-bloggers.com/" target="_blank">RBloggers</a> !</p>
<p>Et bien sûr tout un tas de livres (dont pas mal publiés en français ces dernières années), dont certains dont je vous parlerais très certainement au fil des prochains articles ;)</p>
<p>&nbsp;</p>
<p>[Mon expérience] <span style="color: #923887;"><em>En ce qui me concerne, j’ai découvert R en première année de master de maths appliquées et n’ayant pas trop d’expérience en programmation informatique, j’avoue qu’il m’a fallut un peu de temps pour m’y mettre ^^ Mais depuis, je ne peux plus m’en passer !<br />
<!--3--> J’utilise R dans le cadre de mon travail pour tout un tas d’applications variées allant de “simples” analyses statistiques (analyses discriminantes, typologies, …) à la programmation de solutions ad hoc, et également pour mes petites “expériences” perso, notamment basées sur les merveilleuses idées des contributeurs sur “RBloggers” !<br />
Je participe aussi activement à la communauté R en étant modératrice du forum dédié à R sur le site Developpez.com, n&rsquo;hésitez pas à venir y faire un tour ;)<br />
Egalement, depuis quelques temps je me suis mise à la création de dashboard R avec le package &laquo;&nbsp;shinydahsboard&nbsp;&raquo; et je dois avouer que plus j&rsquo;avance dans mon apprentissage de ce package et plus j&rsquo;aime ça (je vous en parle prochainement) ^^<br />
</em></span></p>
<p>&nbsp;</p>
<p><strong>Et vous, vous l’aimez comment votre R ?! ^^</strong><br />
&nbsp;</p>
<p>Bon R à tous ! ;)</p>
<p>&nbsp;<br />
&nbsp;</p>
]]></content:encoded>
			<wfw:commentRss>https://superstatisticienne.fr/r-cest-bien/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
	</channel>
</rss>
