Skip to contents

fonctionr est un package R qui a pour but de produire facilement des statistiques descriptives complètes à partir de données individuelles issues de sondages avec un design complexe. Le package inclut des fonctions permettant de produire les résultats les plus usuels (comparaison de proportions, de moyennes, de médianes, de distributions), en tenant compte du plan d’échantillonnage réel grâce au package survey.

fonctionr a l’objectif de faciliter l’inférence statistique : outre des résultats descriptifs, le package produit des intervalles de confiance et des tests statistiques qui prennent en compte de design réel de l’enquête. fonctionr produit également des graphiques des résultats à l’aide de ggplot2, dans le but de pouvoir intégrer directement et rapidement les résultats produits dans un rapport/une publication. Vous trouverez sur cette page une rapide introduction à fonctionr ; pour plus de détails, voir le manuel.

Documentation : Pour comprendre plus en profondeur notre package et ses différentes possibilités, nous renvoyons l’utilisateur au Manuel d’utilisation qui constitue un guide décrivant dans le détail les différentes fonctions de fonctionr.

Note de développement : Cette version de fonctionr est encore une version de développement. Elle est néanmoins pleinement fonctionnelle et a passé l’épreuve de nombreux tests, au cours desquels des solutions ont été apportées aux problèmes posés par des structures de données diverses. La mise à disposition publique du package nous permettra de bénéficier de retours plus larges concernant des problèmes que nous n’aurions pas anticipés. Néanmoins, dans un but de continuité d’utilisation, la logique d’utilisation de fonctionr restera globalement la même. Seuls quelques éléments seront encore possiblement modifiés ou harmonisés dans un avenir proche (nom d’arguments, arguments supplémentaires…), sans que cela impacte l’utilisation du programme.

Installation

Vous pouvez installer le package fonctionr depuis GitHub. Pour cela, il vous faut d’abord installer et charger le package devtools :

# Installer devtools si celui-ci n'est pas installé et charger le package
install.packages("devtools")
library(devtools)

# Installer fonctionr
devtools::install_github("jgires/fonctionr")

Utilisation

Avant toute utilisation, il faut bien entendu charger le package :

L’utilisation de fonctionr a pour but d’être simple. Pour nos exemples, nous utilisons les données de l’enquête SILC pour l’Autriche contenues dans le package laeken. Nous recodons d’abord la variable de statut économique pour la lisibilité des résultats :

# Loading of data
data(eusilc, package = "laeken")

# Creation of categories of economic status
eusilc$pl030_rec <- NA
eusilc$pl030_rec[eusilc$pl030 == "1"] <- "Working full time"
eusilc$pl030_rec[eusilc$pl030 == "2"] <- "Working part time"
eusilc$pl030_rec[eusilc$pl030 == "3"] <- "Unemployed"
eusilc$pl030_rec[eusilc$pl030 == "4"] <- "Student"
eusilc$pl030_rec[eusilc$pl030 == "5"] <- "Retired"
eusilc$pl030_rec[eusilc$pl030 == "6"] <- "Permanently disabled"
eusilc$pl030_rec[eusilc$pl030 == "7"] <- "Fulfilling domestic tasks"

fonctionr comprend plusieurs fonctions pour réaliser facilement des opérations descriptives courantes. mean_group() permet par exemple de calculer des moyennes de revenu par groupe. Les groupes, ici de statut économique, sont indiqués dans l’argument group. C’est la moyenne du revenu mensuel qui est calculée, car on peut indiquer soit une variable quantitative, soit une expression pour calculer celle-ci, directement dans l’argument quanti_exp (dans ce cas la variable eqIncome est divisée par 12 à la volée). Le design de l’enquête SILC est pris en considération, puisque l’on peut indiquer les clusters (ids), les strates (strata) et les poids (weight) dans la fonction. Les intervalles de confiance et un test de différence des moyennes sont calculés en conséquence.

eusilc_mean <- mean_group(
  eusilc,
  group = pl030_rec,
  quanti_exp = eqIncome / 12,
  strata = db040,
  ids = db030,
  weight = rb050,
  reorder = T,
  title = "Mean of equivalised income in household by status of individuals",
  subtitle = "Example with austrian SILC data from 'laeken' package",
  )

La fonction produit une liste encapsulant plusieurs résultats dans des objets différents. L’objet tab comprend un data.frame avec les résultats au format tidy :

eusilc_mean$tab
#> # A tibble: 8 × 8
#>   pl030_rec            mean mean_low mean_upp n_sample n_weighted n_weighted_low
#>   <fct>               <dbl>    <dbl>    <dbl>    <int>      <dbl>          <dbl>
#> 1 Fulfilling domesti… 1296.    1253.    1338.     1207    640311.        605978.
#> 2 Permanently disabl… 1330.    1202.    1458.      178    104930.         85796.
#> 3 Retired             1720.    1681.    1758.     3146   1806954.       1746273.
#> 4 Student             1355.    1291.    1419.      736    395829.        365532.
#> 5 Unemployed          1456.    1380.    1532.      518    303252.        276953.
#> 6 Working full time   1895.    1864.    1926.     5162   2869868.       2797833.
#> 7 Working part time   1591.    1542.    1639.     1160    636121.        600709.
#> 8 Total               1703.    1679.    1726.    12107   6757264.       6683738.
#> # ℹ 1 more variable: n_weighted_upp <dbl>

L’objet test.stat comprend les résultats d’un test d’hypothèse prenant en compte le design de l’enquête. Le test pratiqué est dépendant de la statistique calculée. Dans le cas de mean_group(), il s’agit d’une ANOVA avec comme hypothèse nulle l’égalité entre les moyennes de tous les groupes :

eusilc_mean$test.stat
#> Wald test for pl030_rec
#>  in svyglm(formula = fmla, design = data_W)
#> F =  141.5453  on  6  and  5985  df: p= < 2.22e-16

L’objet graph comprend un graphique ggplot présentant les résultats et prêt à être inséré dans une publication :

eusilc_mean$graph

fonctionr comprend plusieurs autres fonctions pour réaliser des opérations similaires, par exemple pour calculer des proportions par groupe avec la fonction prop_group(). On peut à nouveau indiquer directement une expression à partir de laquelle calculer les proportions dans l’argument prop_exp : dans ce cas la proportion à recevoir des revenus du chômage (py090n supérieurs à 0).

eusilc_prop <- prop_group(
  eusilc,
  group = pl030_rec,
  prop_exp = py090n > 0,
  strata = db040,
  ids = db030,
  weight = rb050,
  reorder = T,
  title = "Proportion of individuals receiving income from unemployment in their household",
  subtitle = "Example with austrian SILC data from 'laeken' package"
)

Le résultat contient à nouveau un tableau, le résultat d’un test d’hypothèse et un graphique ggplot. Dans le cas de prop_test(), le test d’hypothèse est un khi2 avec comme hypothèse nulle l’égalité de toutes les proportions.

eusilc_prop$tab
#> # A tibble: 8 × 11
#>   pl030_rec                   prop prop_low prop_upp n_sample n_true_weighted
#>   <fct>                      <dbl>    <dbl>    <dbl>    <int>           <dbl>
#> 1 Fulfilling domestic tasks 0.0485   0.0369   0.0624     1207          31048.
#> 2 Permanently disabled      0.209    0.148    0.282       178          21975.
#> 3 Retired                   0.0177   0.0134   0.0229     3146          31988.
#> 4 Student                   0.0194   0.0106   0.0323      736           7666.
#> 5 Unemployed                0.732    0.690    0.770       518         221878.
#> 6 Working full time         0.0818   0.0741   0.0899     5162         234629.
#> 7 Working part time         0.110    0.0921   0.130      1160          69869.
#> 8 Total                     0.0916   0.0863   0.0971    12107         619054.
#> # ℹ 5 more variables: n_true_weighted_low <dbl>, n_true_weighted_upp <dbl>,
#> #   n_tot_weighted <dbl>, n_tot_weighted_low <dbl>, n_tot_weighted_upp <dbl>
eusilc_prop$test.stat
#> 
#>  Pearson's X^2: Rao & Scott adjustment
#> 
#> data:  NextMethod()
#> F = 475.2, ndf = 5.9608, ddf = 35711.0201, p-value < 2.2e-16
eusilc_prop$graph

Auteurs

Joël Girès est sociologue et travaille à l’Observatoire de la Santé et du Social de la Région de Bruxelles-Capitale.

François Ghesquière est sociologue et travaille à l’Institut wallon de l’évaluation, de la prospective et de la statistique.

Nous sommes ouverts à toute remarque afin d’améliorer notre package.