Q-Q график в базовом пакете R

Кроме гистограмм, еще одним тестом на нормальность распределения является Q-Q график, или график Квантиль-Квантиль. Данный график позволяет сравнить рапределение исследуемой переменной с теоретическим нормальным распределением.

В базовом пакете R график Квантиль-Квантиль построить очень просто при помощи функции qqnorm():

library(car)
qqnorm(Prestige$income)

plot of chunk график-Квантиль-Квантиль

Q-Q график в пакете “car”: qqPlot()

Интерпретация графика qqnorm()затруднительна. Более наглядным является Q-Q график, построенный с помощью функции qqPlot() из пакета car.

qqPlot(Prestige$income)

plot of chunk Q-Q-график

Интерпретация такого графика достаточно проста:

  • Прямая красная непрерывная линия символизирует теоретическое нормальное распределение: если бы тестируемое распределение (отображается на графике круглыми точками) было нормальным, оно бы в точности легло на эту линию.
  • Пунктирные красные линии ограничивают допустимые отклонения от нормального распределения в пределах 95% доверительного интервала (по умолчанию).
  • Точки за границами пунктирных линий говорят о том, что тестируемое распределение не является нормальным, или о наличии выбросов (outliers).

Аргументы функции qqPlot()

methods(qqPlot)
## [1]qqPlot.default* qqPlot.glm*     qqPlot.lm*     
## 
##    Non-visible functions are asterisked
args(car:::qqPlot.default)
## function (x, distribution = "norm", ..., ylab = deparse(substitute(x)), 
##     xlab = paste(distribution, "quantiles"), main = NULL, las = par("las"), 
##     envelope = 0.95, col = palette()[1], col.lines = palette()[2], 
##     lwd = 2, pch = 1, cex = par("cex"), line = c("quartiles", 
##         "robust", "none"), labels = if (!is.null(names(x))) names(x) else seq(along = x), 
##     id.method = "y", id.n = if (id.method[1]== "identify") Inf else 0, 
##     id.cex = 1, id.col = palette()[1], grid = TRUE) 
## NULL

Помимо таких параметров как main=, xlab=, ylab=, с помощью которых можно задать название графика и осей, важными с точки зрения интерпретации результатов являются следующие аргументы:

  • id.n= – параметр показывает количество точек-выбросов, которые должны быть снабжены “ярлыком”
  • labels= – указывает значение ярлыка, которым должна быть помечена точка-выброс на графике, например номер ряда, где возник выброс, или его название.
qqPlot(Prestige$income,
       main="График Квантиль-Квантиль",
       xlab="Квантили нормального распределения",
       ylab="Доход, $",
       labels=rownames(Prestige),
       id.n = 3)

plot of chunk Q-Q-график-в-пакете-car

## general.managers       physicians          lawyers 
##              102              101              100

Q-Q график для распределения Стьюдента (t), Хи-квадрат (Chi-squared), и других распределений

Помимо нормального распределения, qqPlot() позволяет визуально сравнивать распределение под вопросом с другими распространенными распределениями, задавая параметр distribution. Помимо "norm", которое является значением distribution по умолчанию (см. аргументы qqPlot() выше), distribution может принимать следующие значения: "t", "chisq", "pois", "binom", "f" и "unif".

Соответственно, Квантиль-Квантиль график с 95% доверительным интервалом относительно t распределения Стьюдента будет выглядеть следующим образом:

# рассчитаем количество степеней свободы
nPredictors <- length(colnames(Prestige)) - 1
nObservations <- nrow(Prestige)
dFreedoms <- nObservations - nPredictors -1 # df=n-k-1
# построим Q-Q график
qqPlot(Prestige$income,
       distribution = "t",
       df=dFreedoms, 
       main="График Квантиль-Квантиль для t распределения Стьюдента",
       xlab="Квантили t распределения",
       ylab="Доход, $",
       labels=rownames(Prestige), id.n = 3)

plot of chunk Q-Q-график-для-t-распределения-Стьюдента

## general.managers       physicians          lawyers 
##              102              101              100

Как мы видим, визуально, результаты тестирования дохода участников выборки относительно нормального рапределения и рапределения Стьюдента с числом степеней свободы 96 практически ничем не отличается: результат, который можно было предвидеть теоретически.

© 2014 In R we trust.
Top
Follow us: