Twój podręcznik jest zdezorientowany. Bardzo niewiele osób lub oprogramowania definiuje kwartyle w ten sposób. (Zwykle pierwszy kwartyl jest zbyt mały, a trzeci kwartyl zbyt duży).
Ta quantile
funkcja R
implementuje dziewięć różnych sposobów obliczania kwantyli! Aby zobaczyć, który z nich, jeśli w ogóle, odpowiada tej metodzie, zacznijmy od jej wdrożenia. Z opisu możemy napisać algorytm, najpierw matematycznie, a następnie w R
:
x1≤ x2)≤ ⋯ ≤ xn
Dla każdego zestawu danych mediana jest jego wartością środkową, gdy występuje nieparzysta liczba wartości; w przeciwnym razie jest to średnia z dwóch średnich wartości, gdy występuje parzysta liczba wartości. R
„S median
oblicza tego.
m = ( n + 1 ) / 2( xl+ xu) / 2lummxml = m - 1u = m + 1lu
xjai ≤ l( xja)i ≥ u
Oto implementacja. Pomoże ci to wykonywać ćwiczenia w tym podręczniku.
quart <- function(x) {
x <- sort(x)
n <- length(x)
m <- (n+1)/2
if (floor(m) != m) {
l <- m-1/2; u <- m+1/2
} else {
l <- m-1; u <- m+1
}
c(Q1=median(x[1:l]), Q3=median(x[u:n]))
}
Na przykład dane wyjściowe są quart(c(6,7,8,9,10,15,16,16,20,20,23,33,50,58,104))
zgodne z tekstem:
Q1 Q3
9 33
Obliczmy kwartyle dla niektórych małych zestawów danych, używając wszystkich dziesięciu metod: dziewięciu w R
i podręcznika:
y <- matrix(NA, 2, 10)
rownames(y) <- c("Q1", "Q3")
colnames(y) <- c(1:9, "Quart")
for (n in 3:5) {
j <- 1
for (i in 1:9) {
y[, i] <- quantile(1:n, probs=c(1/4, 3/4), type=i)
}
y[, 10] <- quart(1:n)
cat("\n", n, ":\n")
print(y, digits=2)
}
Po uruchomieniu i sprawdzeniu okaże się, że wartości podręcznika nie zgadzają się z żadnym z R
wyników dla wszystkich trzech wielkości próbek. (Schemat nieporozumień trwa w cyklach trzeciego okresu, co pokazuje, że problem utrzymuje się bez względu na to, jak duża może być próbka.)
9.528
quantile
typy 1, 2 i 6 odtworzą je dla zestawu danych o tym konkretnym rozmiarze . Żadna zR
metod nie odpowiada twojemu podręcznikowi. (Można się zastanawiać nad jakością tego tekstu ...)