Я не буду восстанавливать распространение в отличном ответе @ Alecos (это стандартный результат, см.Здесьдля другого хорошего обсуждения), но я хочу заполнить более подробно о последствиях! Во-первых, как выглядит нулевое распределениеR2для диапазона значенийnиk? График в ответе @ Alecos достаточно репрезентативен для того, что происходит в практических множественных регрессиях, но иногда понимание легче получить из небольших случаев. Я включил среднее значение, режим (где он существует) и стандартное отклонение. График / таблица заслуживают хорошего глазного яблока:лучше всего просматривать в полном размере. Я мог бы включить меньше аспектов, но картина была бы менее ясной; Я добавилBeta(k−12,n−k2)R2nkR
код, чтобы читатели могли экспериментировать с различными подмножествами и k .nk
Значения параметров формы
Цветовая схема графика показывает, является ли каждый параметр формы меньше одного (красного), равно одному (синему) или больше одного (зеленого). Левая часть показывает значение тогда как β справа. Поскольку α = k - 1αβ , его значение увеличивается в арифметической прогрессии на общую разницу1α=k−12 по мере продвижения вправо от столбца к столбцу (добавить регрессор к нашей модели)тогда как при фиксированномп,& beta=п-к12n уменьшается на1β=n−k2 . Итогоα+β=n-112 фиксируется для каждой строки (для данного размера выборки). Если вместо этого мы фиксируемkи перемещаемся вниз по столбцу (увеличиваем размер выборки на 1), тоαостается постоянным, аβувеличивается на1α+β=n−12kαβ . В терминах регрессииα- это половина числа регрессоров, включенных в модель, аβ- это половина остаточных степеней свободы. Для определения формы распределения нас особенно интересует, гдеαилиβравны единице.12αβαβ
Алгебра проста для : k - 1αтак чтоk=3. Это действительно единственный столбец фасетного графика, заполненный синим цветом слева. Точно так жеα<1дляk<3(столбецk=2слева красный) иα>1дляk>3(начиная сстолбцаk=4, левая сторона зеленого цвета).k−12=1k=3α<1k<3k=2α>1k>3k=4
Для имеем n - kβ=1следовательно,k=n-2. Обратите внимание, как эти случаи (отмеченные синей правой стороной) разрезают диагональную линию поперек фасетного графика. Приβ>1получаемk<n-2(графики с зеленой левой стороной лежат слева от диагональной линии). Дляβ<1нам нужноk>n-2, что включает в себя только самые правые случаи на моем графике: приn=kмы имеемβ=0и распределение вырождено, ноnn−k2=1k=n−2β>1k<n−2β<1k>n−2n=kβ=0 где β = 1n=k−1 нанесено (правая сторона красного цвета).β=12
Так как PDF это f(x;α,β)∝xα−1(1−x)β−1α<1f(x)→∞x→0β<1f(x)→∞x→1
Симметрии
Одна из наиболее привлекательных особенностей графика - это уровень симметрии, но когда используется бета-распределение, это не должно удивлять!
α=βn=2k−1(k=2,n=3)(k=3,n=5)(k=4,n=7)(k=5,n=9)R2=0.5k=n+12R2R2=0R2=1k
n(k=3,n=9)(k=7,n=9)Beta(α,β)Beta(β,α)x=0.5αk,n=k−12βk,n=n−k2k′=n−k+1
αk′,n=(n−k+1)−12=n−k2=βk,n
βk′,n=n−(n−k+1)2=k−12=αk,n
k′=k
nYR2k−11−R2k−1
Специальные распределения
k=nβ=0β→0P(R2=1)=1
k=2n=3Beta(12,12)α=βα<1β<1
Beta(1,1)R2knα=β=1k=3n=5
α>1β=1f(x;α,β)∝xα−1(1−x)β−1=xα−1k=n−2k>3k=3n>5R2H0α=1β>1
(k=5,n=7)(k=3,n=7)αβ2−1=1
Режим
α>1β>1f(x;α,β)f(0)=f(1)=0α−1α+β−2knk>3n>k+2k−3n−5
β=1k=n−2k>3n>5(n−2)−3n−5=1α=1β>1k=3n>53−3n−5=0α=β=1k=3n=53−35−5=00
n=kβ<1n=k−1f(x)→∞x→1α<1k=2f(x)→∞x→0k=2n=3
Означать
R2k−1n−1k=nαα+βnα+βα
αα+β=(k−1)/2(k−1)/2+(n−k)/2=k−1n−1
Код для участков
require(grid)
require(dplyr)
nlist <- 3:9 #change here which n to plot
klist <- 2:8 #change here which k to plot
totaln <- length(nlist)
totalk <- length(klist)
df <- data.frame(
x = rep(seq(0, 1, length.out = 100), times = totaln * totalk),
k = rep(klist, times = totaln, each = 100),
n = rep(nlist, each = totalk * 100)
)
df <- mutate(df,
kname = paste("k =", k),
nname = paste("n =", n),
a = (k-1)/2,
b = (n-k)/2,
density = dbeta(x, (k-1)/2, (n-k)/2),
groupcol = ifelse(x < 0.5,
ifelse(a < 1, "below 1", ifelse(a ==1, "equals 1", "more than 1")),
ifelse(b < 1, "below 1", ifelse(b ==1, "equals 1", "more than 1")))
)
g <- ggplot(df, aes(x, density)) +
geom_line(size=0.8) + geom_area(aes(group=groupcol, fill=groupcol)) +
scale_fill_brewer(palette="Set1") +
facet_grid(nname ~ kname) +
ylab("probability density") + theme_bw() +
labs(x = expression(R^{2}), fill = expression(alpha~(left)~beta~(right))) +
theme(panel.margin = unit(0.6, "lines"),
legend.title=element_text(size=20),
legend.text=element_text(size=20),
legend.background = element_rect(colour = "black"),
legend.position = c(1, 1), legend.justification = c(1, 1))
df2 <- data.frame(
k = rep(klist, times = totaln),
n = rep(nlist, each = totalk),
x = 0.5,
ymean = 7.5,
ymode = 5,
ysd = 2.5
)
df2 <- mutate(df2,
kname = paste("k =", k),
nname = paste("n =", n),
a = (k-1)/2,
b = (n-k)/2,
meanR2 = ifelse(k > n, NaN, a/(a+b)),
modeR2 = ifelse((a>1 & b>=1) | (a>=1 & b>1), (a-1)/(a+b-2),
ifelse(a<1 & b>=1 & n>=k, 0, ifelse(a>=1 & b<1 & n>=k, 1, NaN))),
sdR2 = ifelse(k > n, NaN, sqrt(a*b/((a+b)^2 * (a+b+1)))),
meantext = ifelse(is.nan(meanR2), "", paste("Mean =", round(meanR2,3))),
modetext = ifelse(is.nan(modeR2), "", paste("Mode =", round(modeR2,3))),
sdtext = ifelse(is.nan(sdR2), "", paste("SD =", round(sdR2,3)))
)
g <- g + geom_text(data=df2, aes(x, ymean, label=meantext)) +
geom_text(data=df2, aes(x, ymode, label=modetext)) +
geom_text(data=df2, aes(x, ysd, label=sdtext))
print(g)