La manipulation manquant/le manque de données dans R--est-il de la fonction de masque, mais pas supprimer NAs?
Que vous attendez d'un DSL visant à l'analyse de données, R poignées manquantes ou de données incomplètes très bien, par exemple:
De nombreuses fonctions R ont une na.rm drapeau que lorsque la valeur VRAI, retirez le NAs:
>>> v = mean( c(5, NA, 6, 12, NA, 87, 9, NA, 43, 67), na.rm=T)
>>> v
(5, 6, 12, 87, 9, 43, 67)
Mais si vous voulez traiter avec NAs avant l'appel de la fonction, vous avez besoin de faire quelque chose comme ceci:
pour supprimer chaque 'NA' partir d'un vecteur:
vx = vx[!is.na(a)]
pour supprimer chaque 'NA' partir d'un vecteur et de le remplacer w/un '0':
ifelse(is.na(vx), 0, vx)
pour enlever la totalité de chaque ligne qui contient " NA " à partir d'une trame de données:
dfx = dfx[complete.cases(dfx),]
Toutes ces fonctions de façon permanente supprimer 'NA' ou les lignes avec un " NA " en eux.
Parfois, ce n'est pas tout à fait ce que vous voulez bien--faire un 'NA'-excisée copie de la trame de données peut être nécessaire pour la prochaine étape dans le flux de travail, mais dans les étapes suivantes vous souhaitez souvent les lignes arrière (par exemple, pour calculer les colonnes de statistiques pour une colonne qui a de lignes manquantes causée par un appel précédent à "remplir les cas" pourtant, cette colonne n'a pas de " NA " valeurs).
d'être aussi clair que possible sur ce que je suis à la recherche de: python/numpy a une classe, masqué tableau, avec un masque méthode, qui permet de dissimuler--mais pas le supprimer--NAs lors d'un appel de fonction. Est-il une fonction analogue dans la R?
Vous devez vous connecter pour publier un commentaire.
Exactement quoi faire avec des données manquantes -- ce qui peut être signalé comme
NA
si nous savons qu'il est manquant -- diffèrent d'un domaine à l'autre.Pour prendre un exemple en matière de temps de la série, où vous pouvez l'ignorer, ou de remplissage, ou d'interpoler ou d'interpoler différemment, ... est-ce que juste la (très utile et populaire) zoo a toutes ces fonctions liées à la
NA
manipulation:permettant de rapprocher (à l'aide de différents algorithmes), de report en avant ou en arrière, utiliser la spline d'interpolation ou de garniture.
Un autre exemple serait les nombreux disparus de l'imputation des paquets sur CRAN -- souvent spécifiques à un domaine de solutions. [ Donc, si vous appelez R a LIS, qu'est-ce que cela? "Sous-domaine des solutions spécifiques pour le domaine des langues spécifiques" ou SDSSFDSL? Tout à fait qu'une bouchée 🙂 ]
Mais pour votre question: non, je ne suis pas au courant d'un bit indicateur de niveau dans la base de R qui vous permet de marquer les observations que pour être exclu". Je présume que la plupart de la R des utilisateurs ont recours à des fonctions telles que
na.omit()
et al ou de l'utilisation de lana.rm=TRUE
option que vous avez mentionné.package=...
, paspackages=...
. Maintenant corrigé, merci.C'est une bonne pratique de regarder les données, donc en déduire sur le type de valeurs manquantes: est-il MCAR (manque complet et aléatoire), MAR (missing at random) ou MNAR (manquant pas au hasard)? Sur la base de ces trois types, vous pouvez l'étude de la structure sous-jacente des valeurs manquantes et de conclure si l'imputation est dans tous les cas (vous avez de la chance si ce n'est pas MNAR, parce que, dans ce cas, les valeurs manquantes sont considérées comme des non-ignorable, et sont liées à une inconnue influence, facteur de processus, variable... quoi que).
Chapitre 3. dans "Dynamiques et Interactifs Graphiques pour l'Analyste de Données avec R et GGobi" par Di Cuire et Deborah Swayne est une grande référence à ce sujet.
Vous verrez
norm
paquet dans l'action dans ce chapitre, maisHmisc
paquet de données de l'imputation des routines. Voir aussiAmelia
,cat
(pour catégorique missings imputation),mi
,mitools
,VIM
,vmv
(pour la visualisation des données manquantes).Honnêtement, je ne comprends toujours pas très bien compris votre question est au sujet des statistiques, ou sur R de l'imputation des données manquantes capacités? Je pense que j'ai de bonnes références sur la deuxième, et sur la première: vous pouvez remplacer votre de NA soit avec la tendance centrale (moyenne, médiane, ou similaire), par conséquent, de réduire la variabilité, ou aléatoire constante "sorti" de l'observé (enregistré) des cas, ou vous pouvez appliquer l'analyse de régression avec variable qui contient NA des critères, et d'autres variables comme variables explicatives, puis affecter les résidus de NA... c'est une élégante façon de traiter avec NA, mais très souvent, il ne serait pas aller facile sur votre CPU (j'ai Celeron 1.1 GHz, donc je dois être doux).
C'est un problème d'optimisation... il n'y a pas de réponse définitive, vous devez décider quoi/pourquoi êtes-vous de coller avec un peu de méthode. Mais il est toujours préférable de regarder les données! =)
Assurez-vous de vérifier Cook & Swayne - c'est un excellent, habilement écrit le guide. "Modèles linéaires avec R" par Lointain contient également un chapitre sur les valeurs manquantes.
Donc.
Bonne chance! =)
La fonction
na.exclude()
sonne comme ce que vous voulez, même si c'est seulement une option pour certains (important) de fonctions.Dans le contexte de côté et de travailler avec des modèles, R a une famille de fonctions génériques pour traiter les NAs:
na.fail()
,na.pass()
,na.omit()
, etna.exclude()
. Ceux-ci sont, à leur tour, les arguments de certains de R-clés de la modélisation de fonctions, telles quelm()
,glm()
, etnls()
ainsi que des fonctions de MASSE, rpart, et la survie des paquets.Tous les quatre fonctions génériques de coeur agissent comme des filtres.
na.fail()
ne transmettre les données à travers si il n'y a pas de NAs, sinon elle échoue.na.pass()
passe tous les cas à travers.na.omit()
etna.exclude()
permettra à la fois de laisser de côté les cas avec NAs et de passer les autres cas, en. Maisna.exclude()
a un autre attribut qui indique les fonctions de traitement de l'objet résultant de prendre en compte le NAs. Vous avez pu voir cet attribut si vous n'avezattributes(na.exclude(some_data_frame))
. Voici une démonstration de la façon dontna.exclude()
modifie le comportement depredict()
dans le cadre d'un modèle linéaire.Par défaut de votre na.d'action, en passant, est déterminé par
options("na.action")
et commence commena.omit()
mais vous pouvez le régler.