Certaines des données que je travaille contiennent des informations sensibles (noms de personnes, dates, emplacements, etc.). Mais je dois parfois partager des "chiffres" avec d'autres personnes pour obtenir de l'aide pour l'analyse statistique ou le traiter sur des machines plus puissantes où je ne peux pas contrôler qui regarde les données. P>
Idéalement, je voudrais travailler comme ceci: p>
Je suppose que cela peut également être utile lorsque vous téléchargez des données pour le traitement "dans le nuage" (Amazon, etc.). P>
Avez-vous été dans cette situation? J'ai d'abord pensé à écrire une fonction "Randomize" moi-même, mais je me suis rendu compte qu'il n'y a pas de fin sur la sophistiquée que cela peut être fait (par exemple, compenser des timbres temporels sans perte de commande). Peut-être qu'il y a déjà une méthode ou un outil défini? P>
Merci à tous ceux qui contribuent à [r] -tag ici au débordement de pile! p>
3 Réponses :
Un moyen de faire cela est avec puis je fais une clé: p> Vous devez enregistrer cette clé évidemment quelque part. Maintenant, je peux coder les personnes: p> si je veux à nouveau les noms de personne, je peux indexer la clé ou utilisez correspondant code>. D'abord, je fais un petit Dataframe: code>: p> Tranform code>, cela fonctionne également si les données sont modifiées tant que l'ID de la personne reste la même: P> foo <-rbind(foo,foo[sample(1:4),],foo[sample(1:4,2),],foo)
foo
person score
1 2 0.3186301
2 1 -0.5817907
3 4 0.7145327
4 3 -0.8252594
21 1 -0.5817907
41 3 -0.8252594
31 4 0.7145327
15 2 0.3186301
32 4 0.7145327
16 2 0.3186301
11 2 0.3186301
12 1 -0.5817907
13 4 0.7145327
14 3 -0.8252594
transform(foo, person=key[person])
person score
1 Mickey 0.3186301
2 Donald -0.5817907
3 Daisy 0.7145327
4 Scrooge -0.8252594
21 Donald -0.5817907
41 Scrooge -0.8252594
31 Daisy 0.7145327
15 Mickey 0.3186301
32 Daisy 0.7145327
16 Mickey 0.3186301
11 Mickey 0.3186301
12 Donald -0.5817907
13 Daisy 0.7145327
14 Scrooge -0.8252594
La solution ci-dessus supprime cependant le nom lorsque je travaille avec des informations sur la santé privée dans la recherche médicale, les noms sont les plus faciles à traiter. Chaque personne est attribuée à un code de sujet d'étude. La date de service, la date de naissance et le code postal sont plus difficiles à traiter.
Pouvez-vous simplement attribuer un GUID à la ligne à partir de laquelle vous avez supprimé toutes les informations sensibles? Tant que vos collègues dépourvus de la clairance de sécurité ne plaisent pas avec le GUID, vous pourrez intégrer des modifications et des ajouts qu'ils peuvent faire simplement en rejoignant le GUID. Ensuite, cela devient simplement une question de génération de valeurs de bogus ersatz pour les colonnes dont vous avez purgé les données. Nom1, lastname2, City1, City2, etc. Modifier: vous auriez une table pour chaque colonne purged, par exemple. Ville, état, zip, prénom, lastname, chacun d'entre eux contenant l'ensemble distinct des valeurs classées réelles dans cette colonne et une valeur entière. Donc, que "Jones" pourrait être représentée dans le jeu de données désinfectée, disons, Nom22, "Schenectady" en tant que City343, "90210" comme ZIPCODE716. Cela donnerait à vos collègues valides de fonctionner avec (par exemple, ils auraient le même nombre de villes distinctes que vos données réelles, juste avec des noms anonymisés) et les interrelations des données anonymisées sont préservées. Edit2: Si l'objectif est de Donnez à vos collègues des données désinfectées toujours statistiquement significatives, alors les colonnes de date nécessiteraient un traitement spécial. Par exemple. Si vos collègues doivent faire des calculs statistiques à l'âge de la personne, vous devez leur donner quelque chose près de la date d'origine, pas si près qu'il pourrait être révélateur, mais pas jusqu'à présent qu'il pouvait incliner l'analyse. P >
C'est ce que je vais suggérer. Un globalide avec des valeurs de domaine d'insertion, de mise à jour, de suppression. Autres champs de suivi possibles serait éditeur, EdiDDate
sonne comme un problème de contrôle de la divulgation statistique. Jetez un coup d'œil à package sdcmicro . P>
Edit: Il suffit de réaliser que vous avez un problème légèrement différent. Le contrôle de la divulgation statistique consiste à «endommager» les données de manière à réduire le risque de divulgation. En "dommageant" des données, vous perdez des informations - c'est le prix que vous payez pour réduire le risque de divulgation. Vos données contiendront moins d'informations. Votre analyse peut donc donner des résultats différents ou moins comme une analyse effectuée sur les données d'origine. P>
dépend de ce que vous allez faire avec vos données. P>
Les dates et les emplacements (analyse spatiale) sont compliqués.