Identificeren van de uitbijters in een dataset in R

Dus ik heb een dataset en weet hoe ik de samenvatting van vijf cijfers kan krijgen met behulp van de samenvattingsopdracht. Nu moet ik de instanties boven de Q3 + 1.5IQR of onder de Q1 – 1.5IQR krijgen, aangezien dit slechts getallen zijn – hoe zou ik de instanties van een dataset retourneren die boven het getal of onder het getal liggen?


Antwoord 1, autoriteit 100%

Je kunt dit verkrijgen met behulp van boxplot. Als uw variabele x is,

OutVals = boxplot(x)$out
which(x %in% OutVals)

Als je je ergert aan de plot, kun je

. gebruiken

OutVals = boxplot(x, plot=FALSE)$out

Antwoord 2, autoriteit 16%

Als uw dataset xis, kunt u die nummers verkrijgen met

summary(x)[["1st Qu."]]

en

summary(x)[["3rd Qu."]]

Vervolgens vergelijk je met die getallen om de gewenste getallen te krijgen.


Antwoord 3, autoriteit 11%

Je kunt hierverwijzen naar de functie remove_outliersin dit antwoord. Het doet precies wat je wilt.

remove_outliers <- function(x, na.rm = TRUE, ...) {
    qnt <- quantile(x, probs=c(.25, .75), na.rm = na.rm, ...)
    H <- 1.5 * IQR(x, na.rm = na.rm)
    y <- x
    y[x < (qnt[1] - H)] <- NA
    y[x > (qnt[2] + H)] <- NA
    y
}

Antwoord 4

Als u de uitbijters in uw dataset probeert te identificeren met behulp van de 1.5 * IQR-standaard, is er een eenvoudige functie die u het rijnummer geeft voor elk geval dat een uitbijter is op basis van uw groeperingsvariabele (zowel onder Q1 als onder Q1 en boven Q3). Het zal ook een Boxplot van uw gegevens maken die inzicht geeft in de distributie van uw gegevens.

library(car)
Boxplot(DV ~ IV, data = datafile)

Waar:

DV = measured variable
IV = grouping variable

Other episodes