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.
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")
Avant toute utilisation, il faut bien entendu charger le package :
library(fonctionr)
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
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.