Корреляция между оценками OLS для перехвата и наклона


25

В простой регрессионной модели,

y=β0+β1x+ε,

оценки OLS и коррелированы.β^0OLSβ^1OLS

Формула для корреляции между двумя оценками (если я вывел ее правильно):

Corr(β^0OLS,β^1OLS)=i=1nxini=1nxi2.

Вопросов:

  1. Что такое интуитивное объяснение наличия корреляции?
  2. Имеет ли наличие корреляции какие-либо важные последствия?

Сообщение было отредактировано, и утверждение, что корреляция исчезает с размером выборки, было удалено. (Спасибо @whuber и @ChristophHanck.)


7
Формула верна, но не могли бы вы объяснить, какую асимптотику вы используете? Ведь во многих случаях корреляция не исчезает - она стабилизируется. Рассмотрим, например , эксперимент, в котором являются двоичными, и предположим, что данные собираются путем чередования x i между 1 и 0 . Тогда Σ х я = Σ х 2 яп / 2 и корреляция всегда будет близка к xixi10xi=xi2n/2, независимотогонасколько великапстановится. 2/20n
whuber

1
Я хотел бы сказать , что это обращается в нуль только тогда , когда : запись Корр ( β O L S 0 , β O L S 1 ) = - 1E(X)=0который склоняется к-E(X)/
Corr(β^0OLS,β^1OLS)=1Ni=1NxiNi=1Nxi2N2=1Ni=1Nxii=1Nxi2N,
. E(X)/E(X2)
Кристоф Ханк,

Действительно, я пропустил один когда выводил поведение корреляции при увеличении n . Так что, и Кристоф Ханк правы. Я все еще заинтересован в интуитивном объяснении того, почему корреляция отлична от нуля, во-первых, и любых полезных последствиях . (Я не говорю, что корреляция должна интуитивно быть нулевой, у меня просто нет никакой интуиции.)nn
Ричард Харди

3
Ваша формула четко показывает, например, что для среднецентрированного регрессора корреляция с перехватом исчезает. x
Майкл М,

Ответы:


16

Позвольте мне попробовать это следующим образом (на самом деле не уверен, что это полезно для интуиции):

Исходя из моего комментария выше, корреляция будет примерно равна Таким образом, еслиE(X)>0вместоE(X)=0, большая часть данных будет сгруппирована справа от нуля. Таким образом, если коэффициент наклона становится больше, формула корреляции утверждает, что пересечение должно стать меньше - что имеет некоторый смысл.

E(X)E(X2)
E(X)>0E(X)=0

Я думаю о чем-то вроде этого:

В синей выборке оценка наклона более плоская, что означает, что оценка пересечения может быть больше. Наклон для золотого образца несколько больше, поэтому пересечение может быть несколько меньше, чтобы компенсировать это.

введите описание изображения здесь

С другой стороны, если , мы можем иметь любой наклон без каких-либо ограничений на пересечение.E(X)=0

Знаменатель формулы также можно интерпретировать следующим образом: если для данного среднего значения изменчивость, измеряемая увеличивается, данные размазываются по оси x , так что они эффективно «выглядят» более средний нуль снова, ослабив ограничения на перехвате для данных среднего значения X .E(X2)xX

Вот код, который, я надеюсь, полностью объясняет рисунок:

n <- 30
x_1 <- sort(runif(n,2,3))
beta <- 2
y_1 <- x_1*beta + rnorm(n) # the golden sample

x_2 <- sort(runif(n,2,3)) 
beta <- 2
y_2 <- x_2*beta + rnorm(n) # the blue sample

xax <- seq(-1,3,by=.001)
plot(x_1,y_1,xlim=c(-1,3),ylim=c(-4,7),pch=19,col="gold",ylab="y",xlab="x")
abline(lm(y_1~x_1),col="gold",lwd=2)
abline(v=0,lty=2)
lines(xax,beta*xax) # the "true" regression line
abline(lm(y_2~x_2),col="lightblue",lwd=2)
points(x_2,y_2,pch=19,col="lightblue")

1
Для практического применения рассмотрим разработку и использование калибровочной кривой для лабораторного прибора. Для разработки калибровки с помощью прибора проверяются известные значения и измеряются выходные значения y прибора с последующей линейной регрессией. Затем неизвестный образец применяется к инструменту, и новое значение y используется для прогнозирования неизвестного x на основе калибровки линейной регрессии. Анализ ошибок оценки неизвестного x будет включать в себя корреляцию между оценками наклона регрессии и перехвата. xyyxx
EdM

17

Возможно, вы захотите следовать введению Даугерти в эконометрику , возможно, учитывая, что является нестохастической переменной, и определив среднеквадратичное отклонение x как MSD ( x ) = 1xx. Обратите внимание, что MSD измеряется в квадрате единицx(например, еслиxвсм,MSD всм2), а среднеквадратичное отклонение,RMSD(x)=MSD(x)=1ni=1n(xix¯)2xxcmcm2 в исходном масштабе. Это даетRMSD(x)=MSD(x)

Corr(β^0OLS,β^1OLS)=x¯MSD(x)+x¯2

Это должно помочь вам увидеть, как корреляция зависит как от среднего значения (в частности, корреляция между оценками вашего наклона и перехвата удаляется, если переменная x центрирована), а также ее разбросом . (Это разложение также могло бы сделать асимптотику более очевидной!)xx

Я еще раз подчеркну важность этого результата: если не имеет среднего нуля, мы можем преобразовать его, вычтя ˉ x, так что теперь он отцентрирован. Если мы подгоним линию регрессии y на x - ˉ x, то оценки наклона и перехвата не будут коррелированными - занижение или завышение одного значения не приводит к занижению или завышению другого. Но эта линия регрессии - просто перевод линии регрессии y на x ! Стандартная ошибка интерсепта у на й - ° х линий просто мера неопределенности уxx¯yxx¯yxyxx¯y^когда ваша переведенная переменная ; когда эта линия переведена обратно в исходное положение, это возвращается к быть стандартная ошибка у при х = ˉ х . В более общем плане , стандартная ошибка у в любом й значении является только стандартной ошибкой перехвата регрессии у на соответствующий образ переведенного х ; стандартная ошибка у при й = 0 , конечно , стандартной ошибке перехвата в исходной, нетранслированной регрессии.xx¯=0y^x=x¯y^xyxy^x=0

Так как мы можем перевести , в некотором смысле нет ничего особенного х = 0 и , следовательно , ничего особенного р 0 . С небольшим количеством мысли, что я собираюсь сказать , произведения для у при любом значении х , что полезно , если вы ищете понимание например , доверительные интервалы для средних ответов от вашей линии регрессии. Тем не менее, мы видим , что там есть что - то особенное у при х = ˉ х , потому что здесь , что ошибки в расчетной высоты линии регрессии - что, конечно , по оценкам,xx=0β^0y^xy^x=x¯ - и ошибки в оценочном наклоне линии регрессии не имеют ничего общего друг с другом. Ваши оценки перехвата является β 0= ° у - β 1 ˉ х и ошибки в его оценка должна стволовые либо из оценки ° у или оценок р 1(такмы считалихкак нестохастический); теперь мы знаем, что эти два источника ошибок некоррелированы. Алгебраически понятно, почему должна быть отрицательная корреляция между оцененным наклоном и перехватом (переоценка наклона будет приводить к недооценке перехвата, если ˉy¯β^0=y¯β^1x¯y¯β^1x)но положительная корреляция между расчетным перехватом и расчетной средней реакцией у = ˉ у прий= ˉ х . Но можно видеть такие отношения и без алгебры.x¯<0y^=y¯x=x¯

Представьте себе предполагаемую линию регрессии как линейку. Этот правитель должен пройти через . Мы только что увидели, что есть две по существу не связанные неопределенности в расположении этой линии, которые я кинестетически представляю как неопределенность «колебания» и неопределенность «параллельного скольжения». Перед тем, как Twang линейки, удерживайте ее в ( ˉ х , ˉ у )(x¯,y¯)(x¯,y¯)как опорный пункт, затем сделайте сердечный поворот, связанный с вашей неуверенностью на склоне. Линейка будет иметь хорошее колебание, более сильное, поэтому, если вы очень не уверены относительно наклона (действительно, ранее положительный наклон вполне может быть представлен отрицательным, если ваша неопределенность велика), но обратите внимание, что высота линии регрессии в не изменяется в результате такого рода неопределенности, и эффект удара становится заметнее по мере того, как вы смотрите.x=x¯

Чтобы «сдвинуть» линейку, крепко возьмитесь за нее и сдвиньте ее вверх и вниз, стараясь держать ее параллельно исходному положению - не меняйте уклон! Насколько энергично сдвинуть его вверх и вниз, зависит от того, насколько вы не уверены относительно высоты линии регрессии, когда она проходит через среднюю точку; Подумайте о том, какой была бы стандартная ошибка перехвата, если бы было переведено так, чтобы ось Y прошла через среднюю точку. В качестве альтернативы, поскольку предполагаемая высота линии регрессии здесь просто ˉ y , это также стандартная ошибка ˉ y . Обратите внимание, что этот вид «скользящей» неопределенности одинаково влияет на все точки на линии регрессии, в отличие от «перегиба».xyy¯y¯

Эти две неопределенности применяются самостоятельно (хорошо, uncorrelatedly, но если мы будем считать , как правило , распределенные условия ошибки , то они должны быть технически независимыми) , так Высоты у всех точек на вашей линии регрессии страдают от «twanging» неопределенности , которая равна нулю на Я имею в виду, и от этого становится хуже, и "скользящая" неопределенность, которая везде одинакова. (Можете ли вы увидеть связь с доверительными интервалами регрессии, которые я обещал ранее, особенно то, как их ширина является самой узкой при ˉ x ?)y^x¯

Это включает в себя неопределенность в у при х = 0 , которая, по существу , мы имеем в виду то , что с помощью стандартной ошибки в р 0 . Теперь предположим, что ˉ x справа от x = 0 ; затем поворот графика к более высокому оцененному наклону имеет тенденцию уменьшать наш предполагаемый перехват, как показывает быстрый набросок. Это отрицательная корреляция предсказан - ˉ хy^x=0β^0x¯x=0 , когдаˉхположительна. И наоборот, еслиˉxслева отx=0,вы увидите, что более высокий предполагаемый наклон имеет тенденцию к увеличению нашего оцененного перехвата, что согласуется сположительнойкорреляцией, которую ваше уравнение предсказывает, когдаˉxявляется отрицательным. Обратите внимание, что еслиˉxдалеко от нуля, экстраполяция линии регрессии с неопределенным градиентом кyx¯MSD(x)+x¯2x¯x¯x=0x¯x¯yось становится все более неустойчивой (амплитуда «звона» ухудшается от среднего значения). «Twanging» ошибка в - термин будет массово перевешивают «скользящий» ошибка в ° у термина, так что ошибка в & beta ; 0 почти полностью определяется какой - либо ошибки в р 1 . Как вы можете легко проверить алгебраически, если мы возьмем ˉ х → & plusmn ; без изменения MSD или стандартное отклонение ошибки s ˙U , корреляция между р 0 иβ^1x¯y¯β^0β^1x¯±suβ^0стремится к1.β^11

Simulated slopes and intercepts

Чтобы проиллюстрировать это (вы можете щелкнуть правой кнопкой мыши на изображении и сохранить его или просмотреть его в полном размере на новой вкладке, если вам доступна эта опция), я решил рассмотреть повторные выборки , где u iN ( 0 , 10 2 ) - iid для фиксированного набора значений x с ˉ x = 10 , поэтому E ( ˉ y ) = 25yi=5+2xi+uiuiN(0,102)xx¯=10E(y¯)=25, В этой конфигурации существует довольно сильная отрицательная корреляция между оцененным наклоном и перехватом, и более слабая положительная корреляция между , оцененным средним откликом при x = ˉ x и оцененным перехватом. Анимация показывает несколько смоделированных сэмплов с линией регрессии образца (золото), проведенной над истинной (черной) линией регрессии. Второй ряд показывает , что совокупность оценочных линий регрессии выглядела бы, если бы там была ошибка только в сметных ° у и наклоны соответствуют истинному наклону ( «скольжение» ошибка); затем, если были ошибки только на склонах и ˉ yy¯x=x¯y¯y¯соответствует значению его популяции (ошибка "зависания"); и, наконец, как фактически выглядел набор оценочных линий, когда оба источника ошибок были объединены. Они имеют цветовую кодировку по размеру фактически оцененного перехвата (а не перехвата, показанного на первых двух графиках, где был устранен один из источников ошибок): от синего для низких перехватов до красного для высоких перехватов. Обратите внимание , что только из цветов , мы можем видеть , что образцы с низким , как правило, производит снижение сметных перехватов, как и образцы с высотойy¯предполагаемые склоны. В следующей строке показаны смоделированные (гистограмма) и теоретические (нормальная кривая) выборочные распределения оценок, а в последней строке показаны графики рассеяния между ними. Обратите внимание , как не существует никакой корреляции между и оцененной наклон, отрицательная корреляция между расчетной перехватывать и наклона, а также положительной корреляции между перехватом и ··· у .y¯y¯

Что делает MSD в знаменателе ? Разводя диапазонхзначений, измеряющих над хорошо известно, позволяют оценить наклон более точно, а интуиция ясно из эскиза, но это не позволяет оценитьˉулучше. Я предлагаю вам визуализировать приближение MSD к нулю (то есть к точкам выборки, только очень близким к среднему значениюx), чтобы ваша неопределенность на склоне стала огромной: подумайте о больших больших отклонениях, но без изменений в вашей неопределенности скольжения. Если вашаосьYнаходится на любом расстоянии отˉx(другими словами, еслиˉx0x¯MSD(x)+x¯2xy¯xyx¯x¯0) вы обнаружите, что неопределенность в вашем перехвате становится всецело доминируемой из-за ошибки при наклоне, связанной с уклоном Напротив, если вы увеличите разброс ваших измерений , не меняя среднего значения, вы значительно улучшите точность оценки наклона, и вам нужно будет лишь слегка коснуться линии. На высоте вашего перехвата теперь доминирует неопределенность скольжения, которая не имеет никакого отношения к вашему предполагаемому уклону. Это согласуется с алгебраическим фактом, что корреляция между оцененным наклоном и пересечением стремится к нулю как MSD ( x ) ± и, когда ˉ x0 , к ± 1xMSD(x)±x¯0±1(знак противоположен знаку ) при MSD ( x ) 0 .x¯MSD(x)0

x¯xx¯xxxwi=xi/RMSD(x)y¯RMSD(w)=1xRMSD(w), which is one, and w¯, which is the ratio x¯RMSD(x). As the intercept estimate was unchanged, and the slope estimate merely multiplied by a positive constant, then the correlation between them has not changed: hence the correlation between the original slope and intercept must also only depend on x¯RMSD(x). Algebraically we can see this by dividing top and bottom of x¯MSD(x)+x¯2 by RMSD(x) to obtain Corr(β^0,β^1)=(x¯/RMSD(x))1+(x¯/RMSD(x))2.

To find the correlation between β^0 and y¯, consider Cov(β^0,y¯)=Cov(y¯β^1x¯,y¯). By bilinearity of Cov this is Cov(y¯,y¯)x¯Cov(β^1,y¯). The first term is Var(y¯)=σu2n while the second term we established earlier to be zero. From this we deduce

Corr(β^0,y¯)=11+(x¯/RMSD(x))2

So this correlation also depends only on the ratio x¯RMSD(x). Note that the squares of Corr(β^0,β^1) and Corr(β^0,y¯) sum to one: we expect this since all sampling variation (for fixed x) in β^0 is due either to variation in β^1 or to variation in y¯, and these sources of variation are uncorrelated with each other. Here is a plot of the correlations against the ratio x¯RMSD(x).

Correlation of intercept and slope, and intercept and mean y, against ratio of mean x to RMSD

The plot clearly shows how when x¯ is high relative to the RMSD, errors in the intercept estimate are largely due to errors in the slope estimate and the two are closely correlated, whereas when x¯ is low relative to the RMSD, it is error in the estimation of y¯ that predominates, and the relationship between intercept and slope is weaker. Note that the correlation of intercept with slope is an odd function of the ratio x¯RMSD(x), so its sign depends on the sign of x¯ and it is zero if x¯=0, whereas the correlation of intercept with y¯ is always positive and is an even function of the ratio, i.e. it doesn't matter what side of the y-axis that x¯ is. The correlations are equal in magnitude if x¯ is one RMSD away from the y-axis, when Corr(β^0,y¯)=120.707 and Corr(β^0,β^1)=±12±0.707 where the sign is opposite that of x¯. In the example in the simulation above, x¯=10 and RMSD(x)5.16 so the mean was about 1.93 RMSDs from the y-axis; at this ratio, the correlation between intercept and slope is stronger, but the correlation between intercept and y¯ is still not negligible.

As an aside, I like to think of the formula for the standard error of the intercept,

s.e.(β^0OLS)=su2(1n+x¯2nMSD(x))

as sliding error+twanging error, and ditto for the formula for the standard error of y^ at x=x0 (used for confidence intervals for the mean response, and of which the intercept is just a special case as I explained earlier via a translation argument),

s.e.(y^)=su2(1n+(x0x¯)2nMSD(x))

R code for plots

require(graphics)
require(grDevices)
require(animation

#This saves a GIF so you may want to change your working directory
#setwd("~/YOURDIRECTORY")
#animation package requires ImageMagick or GraphicsMagick on computer
#See: http://www.inside-r.org/packages/cran/animation/docs/im.convert
#You might only want to run up to the "STATIC PLOTS" section
#The static plot does not save a file, so need to change directory.

#Change as desired
simulations <- 100 #how many samples to draw and regress on
xvalues <- c(2,4,6,8,10,12,14,16,18) #used in all regressions
su <- 10 #standard deviation of error term
beta0 <- 5 #true intercept
beta1 <- 2 #true slope
plotAlpha <- 1/5 #transparency setting for charts
interceptPalette <- colorRampPalette(c(rgb(0,0,1,plotAlpha),
            rgb(1,0,0,plotAlpha)), alpha = TRUE)(100) #intercept color range
animationFrames <- 20 #how many samples to include in animation

#Consequences of previous choices
n <- length(xvalues) #sample size
meanX <- mean(xvalues) #same for all regressions
msdX <- sum((xvalues - meanX)^2)/n #Mean Square Deviation
minX <- min(xvalues)
maxX <- max(xvalues)
animationFrames <- min(simulations, animationFrames)

#Theoretical properties of estimators
expectedMeanY <- beta0 + beta1 * meanX
sdMeanY <- su / sqrt(n) #standard deviation of mean of Y (i.e. Y hat at mean x)
sdSlope <- sqrt(su^2 / (n * msdX))
sdIntercept <- sqrt(su^2 * (1/n + meanX^2 / (n * msdX)))


data.df <- data.frame(regression = rep(1:simulations, each=n),
                      x = rep(xvalues, times = simulations))

data.df$y <- beta0 + beta1*data.df$x + rnorm(n*simulations, mean = 0, sd = su) 

regressionOutput <- function(i){ #i is the index of the regression simulation
  i.df <- data.df[data.df$regression == i,]
  i.lm <- lm(y ~ x, i.df)
  return(c(i, mean(i.df$y), coef(summary(i.lm))["x", "Estimate"],
          coef(summary(i.lm))["(Intercept)", "Estimate"]))
}

estimates.df <- as.data.frame(t(sapply(1:simulations, regressionOutput)))
colnames(estimates.df) <- c("Regression", "MeanY", "Slope", "Intercept")

perc.rank <- function(x) ceiling(100*rank(x)/length(x))
rank.text <- function(x) ifelse(x < 50, paste("bottom", paste0(x, "%")), 
                                paste("top", paste0(101 - x, "%")))
estimates.df$percMeanY <- perc.rank(estimates.df$MeanY)
estimates.df$percSlope <- perc.rank(estimates.df$Slope)
estimates.df$percIntercept <- perc.rank(estimates.df$Intercept)
estimates.df$percTextMeanY <- paste("Mean Y", 
                                    rank.text(estimates.df$percMeanY))
estimates.df$percTextSlope <- paste("Slope",
                                    rank.text(estimates.df$percSlope))
estimates.df$percTextIntercept <- paste("Intercept",
                                    rank.text(estimates.df$percIntercept))

#data frame of extreme points to size plot axes correctly
extremes.df <- data.frame(x = c(min(minX,0), max(maxX,0)),
              y = c(min(beta0, min(data.df$y)), max(beta0, max(data.df$y))))

#STATIC PLOTS ONLY

par(mfrow=c(3,3))

#first draw empty plot to reasonable plot size
with(extremes.df, plot(x,y, type="n", main = "Estimated Mean Y"))
invisible(mapply(function(a,b,c) { abline(a, b, col=c) }, 
                 estimates.df$Intercept, beta1, 
                 interceptPalette[estimates.df$percIntercept]))

with(extremes.df, plot(x,y, type="n", main = "Estimated Slope"))
invisible(mapply(function(a,b,c) { abline(a, b, col=c) }, 
                 expectedMeanY - estimates.df$Slope * meanX, estimates.df$Slope, 
                 interceptPalette[estimates.df$percIntercept]))

with(extremes.df, plot(x,y, type="n", main = "Estimated Intercept"))
invisible(mapply(function(a,b,c) { abline(a, b, col=c) }, 
                 estimates.df$Intercept, estimates.df$Slope, 
                 interceptPalette[estimates.df$percIntercept]))

with(estimates.df, hist(MeanY, freq=FALSE, main = "Histogram of Mean Y",
                        ylim=c(0, 1.3*dnorm(0, mean=0, sd=sdMeanY))))
curve(dnorm(x, mean=expectedMeanY, sd=sdMeanY), lwd=2, add=TRUE)

with(estimates.df, hist(Slope, freq=FALSE, 
                        ylim=c(0, 1.3*dnorm(0, mean=0, sd=sdSlope))))
curve(dnorm(x, mean=beta1, sd=sdSlope), lwd=2, add=TRUE)

with(estimates.df, hist(Intercept, freq=FALSE, 
                        ylim=c(0, 1.3*dnorm(0, mean=0, sd=sdIntercept))))
curve(dnorm(x, mean=beta0, sd=sdIntercept), lwd=2, add=TRUE)

with(estimates.df, plot(MeanY, Slope, pch = 16,  col = rgb(0,0,0,plotAlpha), 
                        main = "Scatter of Slope vs Mean Y"))

with(estimates.df, plot(Slope, Intercept, pch = 16, col = rgb(0,0,0,plotAlpha),
                        main = "Scatter of Intercept vs Slope"))

with(estimates.df, plot(Intercept, MeanY, pch = 16, col = rgb(0,0,0,plotAlpha),
                        main = "Scatter of Mean Y vs Intercept"))


#ANIMATED PLOTS

makeplot <- function(){for (i in 1:animationFrames) {

  par(mfrow=c(4,3))

  iMeanY <- estimates.df$MeanY[i]
  iSlope <- estimates.df$Slope[i]
  iIntercept <- estimates.df$Intercept[i]

  with(extremes.df, plot(x,y, type="n", main = paste("Simulated dataset", i)))
  with(data.df[data.df$regression==i,], points(x,y))
  abline(beta0, beta1, lwd = 2)
  abline(iIntercept, iSlope, lwd = 2, col="gold")

  plot.new()
  title(main = "Parameter Estimates")
  text(x=0.5, y=c(0.9, 0.5, 0.1), labels = c(
    paste("Mean Y =", round(iMeanY, digits = 2), "True =", expectedMeanY),
    paste("Slope =", round(iSlope, digits = 2), "True =", beta1),
    paste("Intercept =", round(iIntercept, digits = 2), "True =", beta0)))

  plot.new()
  title(main = "Percentile Ranks")
  with(estimates.df, text(x=0.5, y=c(0.9, 0.5, 0.1),
                          labels = c(percTextMeanY[i], percTextSlope[i],
                                     percTextIntercept[i])))


  #first draw empty plot to reasonable plot size
  with(extremes.df, plot(x,y, type="n", main = "Estimated Mean Y"))
  invisible(mapply(function(a,b,c) { abline(a, b, col=c) }, 
                   estimates.df$Intercept, beta1, 
                   interceptPalette[estimates.df$percIntercept]))
  abline(iIntercept, beta1, lwd = 2, col="gold")

  with(extremes.df, plot(x,y, type="n", main = "Estimated Slope"))
  invisible(mapply(function(a,b,c) { abline(a, b, col=c) }, 
                expectedMeanY - estimates.df$Slope * meanX, estimates.df$Slope, 
                interceptPalette[estimates.df$percIntercept]))
  abline(expectedMeanY - iSlope * meanX, iSlope,
         lwd = 2, col="gold")

  with(extremes.df, plot(x,y, type="n", main = "Estimated Intercept"))
  invisible(mapply(function(a,b,c) { abline(a, b, col=c) }, 
                   estimates.df$Intercept, estimates.df$Slope, 
                   interceptPalette[estimates.df$percIntercept]))
  abline(iIntercept, iSlope, lwd = 2, col="gold")

  with(estimates.df, hist(MeanY, freq=FALSE, main = "Histogram of Mean Y",
                          ylim=c(0, 1.3*dnorm(0, mean=0, sd=sdMeanY))))
  curve(dnorm(x, mean=expectedMeanY, sd=sdMeanY), lwd=2, add=TRUE)
  lines(x=c(iMeanY, iMeanY),
        y=c(0, dnorm(iMeanY, mean=expectedMeanY, sd=sdMeanY)),
        lwd = 2, col = "gold")

  with(estimates.df, hist(Slope, freq=FALSE, 
                          ylim=c(0, 1.3*dnorm(0, mean=0, sd=sdSlope))))
  curve(dnorm(x, mean=beta1, sd=sdSlope), lwd=2, add=TRUE)
  lines(x=c(iSlope, iSlope), y=c(0, dnorm(iSlope, mean=beta1, sd=sdSlope)),
        lwd = 2, col = "gold")

  with(estimates.df, hist(Intercept, freq=FALSE, 
                          ylim=c(0, 1.3*dnorm(0, mean=0, sd=sdIntercept))))
  curve(dnorm(x, mean=beta0, sd=sdIntercept), lwd=2, add=TRUE)
  lines(x=c(iIntercept, iIntercept),
        y=c(0, dnorm(iIntercept, mean=beta0, sd=sdIntercept)),
        lwd = 2, col = "gold")

  with(estimates.df, plot(MeanY, Slope, pch = 16,  col = rgb(0,0,0,plotAlpha), 
                          main = "Scatter of Slope vs Mean Y"))
  points(x = iMeanY, y = iSlope, pch = 16, col = "gold")

  with(estimates.df, plot(Slope, Intercept, pch = 16, col = rgb(0,0,0,plotAlpha),
                          main = "Scatter of Intercept vs Slope"))
  points(x = iSlope, y = iIntercept, pch = 16, col = "gold")

  with(estimates.df, plot(Intercept, MeanY, pch = 16, col = rgb(0,0,0,plotAlpha),
                          main = "Scatter of Mean Y vs Intercept"))
  points(x = iIntercept, y = iMeanY, pch = 16, col = "gold")

}}

saveGIF(makeplot(), interval = 4, ani.width = 500, ani.height = 600)

For the plot of correlation versus ratio of x¯ to RMSD:

require(ggplot2)

numberOfPoints <- 200
data.df  <- data.frame(
  ratio = rep(seq(from=-10, to=10, length=numberOfPoints), times=2),
  between = rep(c("Slope", "MeanY"), each=numberOfPoints))
data.df$correlation <- with(data.df, ifelse(between=="Slope",
  -ratio/sqrt(1+ratio^2),
  1/sqrt(1+ratio^2)))

ggplot(data.df, aes(x=ratio, y=correlation, group=factor(between),
                    colour=factor(between))) +
  theme_bw() + 
  geom_line(size=1.5) +
  scale_colour_brewer(name="Correlation between", palette="Set1",
                      labels=list(expression(hat(beta[0])*" and "*bar(y)),
                              expression(hat(beta[0])*" and "*hat(beta[1])))) +
  theme(legend.key = element_blank()) +
  ggtitle(expression("Correlation of intercept estimates with slope and "*bar(y))) +
  xlab(expression("Ratio of "*bar(X)/"RMSD(X)")) +
  ylab(expression(paste("Correlation")))

1
«Танг» и «слайд» - мои термины. Это моя собственная визуальная интуиция, которую я никогда не видел ни в одном учебнике, хотя основные идеи здесь - стандартный материал. Боже мой знает, есть ли более техническое имя, чем «удар» и «слайд»! Я основал этот ответ, основываясь на памяти, на ответе на связанный вопрос, который я так и не удосужился завершить и опубликовать. Там были более поучительные графики, которые (если я смогу отследить код R на моем старом компьютере или найти время для воспроизведения) я добавлю.
Серебряная

1
What a job! Thank you very much! Now my understanding must be in much better shape.
Ричард Харди

@RichardHardy I have put a simulation animation in, which ought to make things a bit clearer.
Silverfish
Используя наш сайт, вы подтверждаете, что прочитали и поняли нашу Политику в отношении файлов cookie и Политику конфиденциальности.
Licensed under cc by-sa 3.0 with attribution required.