Imaginez vos données avant de les collecter.


La traduction a été préparée pour les étudiants du cours «Applied Analytics on R» .




En tant que scientifique des données, nous recevons souvent un ensemble de données et nous sommes invités à l'utiliser pour obtenir des informations. Nous utilisons R pour le traitement, la visualisation, la modélisation, la préparation de tableaux et de graphiques pour partager les résultats ou les publier. Si nous regardons les données de cette façon, peu importe d'où elles proviennent. La taille de l'échantillon, l'ensemble des fonctionnalités et leurs échelles sont fixes. Cependant, les procédures utilisées pour collecter ou générer des données sont extrêmement importantes pour une analyse future, ainsi que pour la qualité des informations que nous pouvons finalement obtenir. Le processus de collecte de données influence la façon dont les données doivent être analysées. Pour les études qui mesurent la causalité, il est important de savoir quelles données doivent être prises en compte et lesquelles ne le sont pas.


Étant donné que ces processus sont très importants, nous voulions créer un outil qui aiderait les scientifiques et autres chercheurs à présenter (émuler) leurs données avant qu'elles ne soient collectées, afin que tout changement dans la phase de collecte de données puisse être effectué avant qu'il ne soit trop tard.


Si les données sont déjà collectées, l'outil vous permet d'imaginer vos données avant de les analyser. Lorsque nous prenons des décisions sur le traitement et la modélisation des données en fonction des résultats que nous obtenons de chaque opération, ou que nous utilisons des modèles statistiques, nous sommes inconsciemment vulnérables à des biais tels que le «jardin de chemins divergents» ou le piratage informatique , qui peuvent nous amener à choisir la procédure d'analyse qui donnera le meilleur résultat. Nous utilisons des données réelles parce que nous n'avons pas de bonne alternative: il n'y a pas de données avec la même structure et les mêmes caractéristiques que nous avons collectées.


Cet article présente le package fabricatr (de la suite de packages DeclareDesign ), dont le rôle est de modéliser la structure et les fonctionnalités des données. Voir une revue DeclareDesign sur RViews décrivant sa philosophie. Fabricatr vous aide à réfléchir à vos données avant de commencer l'analyse ou même la collecte. Quel genre de données? Comment sont-ils structurés? Quelles mesures allez-vous prendre? Quelles sont leurs gammes et comment sont-elles corrélées? fabricatr peut vous aider à simuler des données factices avant de collecter des données réelles et à tester diverses stratégies d'évaluation sans vous soucier de modifier vos hypothèses.


Imaginez votre structure de données


Dans le cas le plus simple, fabricatr créera une structure de données à un niveau avec une quantité donnée.


library(fabricatr) fabricate(N = 100, temp_fahrenheit = rnorm(N, mean = 80, sd = 20)) ## Warning: `is_lang()` is deprecated as of rlang 0.2.0. ## Please use `is_call()` instead. ## This warning is displayed once per session. ## Warning: `lang_name()` is deprecated as of rlang 0.2.0. ## Please use `call_name()` instead. ## This warning is displayed once per session. 

IdentifiantTEMP_FAHRENHEIT
00156,6
00246,3
00390,5
00475,1
00585,1
006102,8

Les données sociologiques sont souvent hiérarchisées . Par exemple, dans les écoles, il y a des classes, dans les classes, il y a des élèves. En utilisant la commande add_level, fabricatr résoudra également ce problème. Par défaut, les nouveaux niveaux sont imbriqués dans des niveaux supérieurs.


 library(fabricatr) fabricate( # five schools school = add_level(N = 5, n_classrooms = sample(10:15, N, replace = TRUE)), # 10 to 15 classrooms per school classroom = add_level(N = n_classrooms), # 15 students per classroom student = add_level(N = 15) ) ## Warning: `lang_modify()` is deprecated as of rlang 0.2.0. ## Please use `call_modify()` instead. ## This warning is displayed once per session. 

ÉCOLEN_CLASSROOMSSALLE DE CLASSEÉTUDIANT
11201001
11201002
11201003
11201004
11201005
11201006

Dans le monde réel, des hiérarchies erratiques et se chevauchant apparaissent souvent. Par exemple, les données sur les élèves peuvent être obtenues à la fois au lycée et au lycée. Dans ce cas, les élèves seront dans deux écoles différentes et ces écoles ne seront pas connectées entre elles. Vous trouverez ci-dessous un exemple de création de données "croisées". Le paramètre rho détermine le degré de corrélation entre primary_rank et second_rank .


 dat <- fabricate( primary_schools = add_level(N = 5, primary_rank = 1:N), secondary_schools = add_level(N = 6, secondary_rank = 1:N, nest = FALSE), students = link_levels(N = 15, by = join(primary_rank, secondary_rank, rho = 0.9)) ) ## `link_levels()` calls are faster if the `mvnfast` package is installed. ggplot(dat, aes(primary_rank, secondary_rank)) + geom_point(position = position_jitter(width = 0.1, height = 0.1), alpha = 0.5) + theme_bw() 


De même, vous pouvez générer des données longitudinales via cross_levels :


 fabricate( students = add_level(N = 2), years = add_level(N = 20, year = 1981:2000, nest = FALSE), student_year = cross_levels(by = join(students, years)) ) 

ÉTUDIANTSANSAnnéeSTUDENT_YEAR
101198101
201198102
102198203
202198204
103198305
203198306

Imaginez vos signes


R possède de nombreux excellents outils de modélisation des fonctionnalités. Cependant, dans certains cas, les types habituels de variables sont étonnamment difficiles à modéliser. Fabricatr possède un petit nombre de fonctions avec une syntaxe simple pour créer des attributs avec des types couramment utilisés. Nous décrivons ici deux exemples, le reste est dans l' article .


Attributs avec corrélation intraclasse


À l'aide des outils décrits ci-dessus, vous pouvez créer des données présentant des variations intra-bloc et inter-bloc, par exemple des variations dans les salles de classe et des variations entre les salles de classe. Dans de nombreux cas, il est nécessaire d'établir plus précisément le niveau de corrélation intra-classe (ICC). Ici, draw_normal_icc et draw_binary_icc vous aideront.


 dat <- fabricate( N = 1000, clusters = sample(LETTERS, N, replace = TRUE), Y1 = draw_normal_icc(clusters = clusters, ICC = .2), Y2 = draw_binary_icc(clusters = clusters, ICC = .2) ) ICC::ICCbare(clusters, Y1, dat) ## [1] 0.09726701 ICC::ICCbare(clusters, Y2, dat) ## [1] 0.176036 

Résultats ordonnés


Nous avons également des outils pour les variables aléatoires discrètes (y compris les résultats ordonnés). Nous prenons une variable latente (par exemple test_ability ) et la convertissons en un attribut ordonné ( test_score ).


 dat <- fabricate( N = 100, test_ability = rnorm(N), test_score = draw_ordered(test_ability, breaks = c(-.5, 0, .5)) ) ggplot(dat, aes(test_ability, test_score)) + geom_point() + theme_bw() 


fabricatr est compatible avec presque toutes les fonctions de création de variables R. Dans cet article, nous avons décrit quelques packages R impressionnants qui aident à imiter les attributs liés à la sociologie.


Où aller ensuite


Cet article est un aperçu de haut niveau des fonctionnalités de fabricatr . Pour un examen plus approfondi, consultez l'article Premiers pas avec fabricatr .


Vous pouvez installer fabricatr via CRAN:


 install.packages("fabricatr") library(fabricatr) 



Vous avez une question? Écrivez dans les commentaires!

Source: https://habr.com/ru/post/fr460187/


All Articles