Korelacja między estymatorami OLS dla punktu przecięcia i nachylenia


25

W prostym modelu regresji

y=β0+β1x+ε,

estymatory OLS i są skorelowane.ββ^0OLSβ^1OLS

Wzór na korelację między dwoma estymatorami jest (jeśli poprawnie ją wyprowadziłem):

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

Pytania:

  1. Jakie jest intuicyjne wytłumaczenie obecności korelacji?
  2. Czy obecność korelacji ma jakieś ważne implikacje?

Wpis został zredagowany, a twierdzenie, że korelacja zanika wraz z rozmiarem próbki, zostało usunięte. (Dzięki @whuber i @ChristophHanck.)


7
Wzór jest poprawny, ale czy mógłbyś wyjaśnić, jakich asymptotyków używasz? W końcu w wielu przypadkach korelacja nie zanika - stabilizuje się. Rozważmy np. Eksperyment, w którym są binarne i załóżmy, że dane są gromadzone przez naprzemienne między a . Wtedy a korelacja będzie zawsze zbliżona do , bez względu na to, jak duże będzie . xixi10xi=xi2n/22/20n
whuber

1
Powiedziałbym, że znika tylko, jeśli : wpisz co oznacza -E (X) / \ sqrt {E (X ^ 2)} . E(X)=0-E(X)/
Corr(β^0OLS,β^1OLS)=1Ni=1NxiNi=1Nxi2N2=1Ni=1Nxii=1Nxi2N,
E(X)/E(X2)
Christoph Hanck

Rzeczywiście, pominąłem jeden gdy wyprowadzałem zachowanie korelacji wraz ze wzrostem . Więc Whuber i ChristophHanck mają rację. Nadal interesuje mnie intuicyjne wyjaśnienie, dlaczego korelacja jest niezerowa, i wszelkie użyteczne implikacje . (Ja nie powiedzieć, że korelacja powinna intuicyjnie wynosić zero, po prostu nie mają intuicję tutaj.)nnn
Richard Hardy

3
Twoja formuła starannie pokazuje np., Że w przypadku regresora o wartości średniej korelacja z punktem przecięcia zanika. x
Michael M

Odpowiedzi:


16

Pozwól mi spróbować w następujący sposób (naprawdę nie jestem pewien, czy to przydatna intuicja):

Na podstawie mojego powyższego komentarza korelacja będzie z grubsza wynosić

E(X)E(X2)
Zatem, jeśliE(X)>0zamiastE(X)=0, większość danych zostanie skupiona w prawo od zera. Zatem jeśli współczynnik nachylenia staje się większy, formuła korelacji stwierdza, że ​​punkt przecięcia musi być mniejszy - co ma pewien sens.

Myślę o czymś takim:

W niebieskiej próbce oszacowanie nachylenia jest bardziej płaskie, co oznacza, że ​​ocena przecięcia może być większa. Nachylenie złotej próbki jest nieco większe, więc punkt przecięcia może być nieco mniejszy, aby to zrekompensować.

wprowadź opis zdjęcia tutaj

Z drugiej strony, jeśli , możemy mieć dowolne nachylenie bez żadnych ograniczeń na przecięciu.E(X)=0

Mianownik formuły można również interpretować według tych zasad: jeśli dla danej średniej zmienność mierzona za pomocą wzrasta, dane są rozmazane na osi X , tak że skutecznie „wygląda” więcej średnią zero znowu poluzowanie ograniczeń na przecięcia na dany średnią X .E(X2)xX

Oto kod, który, mam nadzieję, w pełni wyjaśnia rysunek:

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
Aby uzyskać praktyczną implikację, rozważ opracowanie i zastosowanie krzywej kalibracyjnej dla instrumentu laboratoryjnego. W celu opracowania kalibracji znane wartości są testowane za pomocą przyrządu i mierzone są wartości wyjściowe przyrządu y , a następnie regresja liniowa. Następnie na przyrząd nakładana jest nieznana próbka, a nowa wartość y jest używana do przewidywania nieznanego x na podstawie kalibracji regresji liniowej. Analiza błędu oszacowania nieznanego x wymagałaby korelacji między oszacowaniami nachylenia regresji i przecięcia. xyyxx
EdM

17

Możesz podążać za wprowadzeniem Dougherty'ego do ekonometrii , być może biorąc pod uwagę, że jest zmienną niestochastyczną, i określając średnie odchylenie kwadratowe x jako MSD ( x ) = 1xx. Należy zauważyć, że MSD jest mierzony w kwadracie jednostekx(np. Jeślixjest wcm,to MSD jest wcm2), podczas gdy średnie odchylenie kwadratowe pierwiastka,RMSD(x)=MSD(x)=1ni=1n(xix¯)2xxcmcm2 jest w oryginalnej skali. To dajeRMSD(x)=MSD(x)

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

To powinno pomóc zobaczyć jak korelacja ma wpływ zarówno na średnią z (w szczególności, korelacja między nachylenie i przecięcie estymatorów jest usuwany, jeśli x zmienna jest wyśrodkowany), a także przez jego rozprzestrzeniania . (Ten rozkład mógł również uczynić asymptotyki bardziej oczywistymi!)xx

Ponownie podkreślę znaczenie tego wyniku: jeśli nie ma oznaczającego zera, możemy go przekształcić, odejmując ˉ x , aby był teraz wyśrodkowany. Jeśli dopasujemy linię regresji y na x - ˉ x, szacunki nachylenia i przecięcia są nieskorelowane - niedoszacowanie lub przeszacowanie w jednym nie powoduje zwykle niedoszacowania lub przeszacowania w drugim. Ale ta linia regresji jest po prostu tłumaczeniem linii regresji y na x ! Błąd standardowy punktu przecięcia z y na x - ° x linii jest po prostu miarą niepewności yxx¯yxx¯yxyxx¯y^kiedy twoja przetłumaczona zmienna ; gdy ta linia jest tłumaczony z powrotem do jego pierwotnego położenia, ten powraca do stanu błąd standardowy Y przy x = ˉ x . Bardziej ogólnie, błąd standardowy Y w każdej x wartości jest tylko błąd standardowy przecięcia regresji Y w odpowiednio tłumaczone x ; Błąd standardowy y przy x = 0 jest oczywiście błędu standardowego punktu przecięcia w oryginalnych, nie podlegającym translacji regresji.xx¯=0y^x=x¯y^xyxy^x=0

Ponieważ możemy tłumaczyć , w pewnym sensie nie ma nic szczególnego w x = 0 , a zatem nic szczególnego P 0 . Przy odrobinie myślenia, co mam do powiedzenia prace dla Y na każdej wartości x , co jest przydatne, jeśli szukasz wgląd np przedziały ufności dla średnich odpowiedzi od linii regresji. Jednak widzieliśmy, że tam jest coś szczególnego y przy x = ˉ x , bo jest tu, że błędy w szacowanej wysokości linii regresji - co jest oczywiście szacuje się naxx=0β^0y^xy^x=x¯ - a błędy w szacowanym nachyleniu linii regresji nie mają ze sobą nic wspólnego. Szacowany przechwytujący jest β 0= °° y - β 1 ˉ x i błędy w estymacji musi wynikać albo z oszacowania °° Y lub estymacji beta 1(ponieważ uważanyXjak wolny stochastyczny); teraz wiemy, że te dwa źródła błędów są nieskorelowane, algebraicznie jasne jest, dlaczego powinna istnieć ujemna korelacja między szacowanym nachyleniem a przecięciem (przeszacowanie nachylenia będzie miało tendencję do niedoceniania przechwytywania, o ile ˉy¯β^0=y¯β^1x¯y¯β^1x), ale dodatnia korelacja między szacowaną przecięcia i estymowanej odpowiedzi Y = ˉ Y przyx= ˉ x . Ale widzą takie relacje również bez algebry.x¯<0y^=y¯x=x¯

Wyobraź sobie oszacowaną linię regresji jako linijkę. Ten władca musi przejść . Właśnie widzieliśmy, że istnieją dwie zasadniczo niezwiązane ze sobą niepewności w lokalizacji tej linii, które wizualizuję kinestetycznie jako niepewność „drgającą” i „równoległą przesuwającą się”. Zanim otoczysz linijkę, przytrzymaj ją w ( ˉ x , ˉ y )(x¯,y¯)(x¯,y¯)jako czop, a następnie nadaj mu mocny odgłos związany z twoją niepewnością na zboczu. Linijka będzie się dobrze kołysać, bardziej gwałtownie, więc jeśli jesteś bardzo niepewny co do nachylenia (rzeczywiście, poprzednio dodatnie nachylenie będzie całkiem prawdopodobne, że będzie ujemne, jeśli twoja niepewność jest duża), ale zwróć uwagę, że wysokość linii regresji przy pozostaje niezmieniony przez tego rodzaju niepewność, a efekt twangu jest bardziej zauważalny w dalszej odległości od środka, na który patrzysz.x=x¯

Aby „zsunąć” linijkę, chwyć ją mocno i przesuń w górę i w dół, uważając, aby równolegle do pierwotnej pozycji - nie zmieniać nachylenia! To, jak energicznie przesuwać go w górę i w dół, zależy od tego, jak niepewna jest wysokość linii regresji, gdy przechodzi ona przez punkt średni; pomyśl o tym, jaki byłby standardowy błąd punktu przecięcia, gdyby został przetłumaczony, aby oś y przechodziła przez punkt średni. Alternatywnie, ponieważ szacowana wysokość linii regresji wynosi po prostu ˉ y , jest to również błąd standardowy ˉ y . Zauważ, że ten rodzaj „przesuwającej się” niepewności wpływa na wszystkie punkty linii regresji w jednakowy sposób, w przeciwieństwie do „twangu”.xyy¯y¯

Te dwie niewiadome zastosowanie niezależnie (dobrze, uncorrelatedly, ale jeśli założymy, zazwyczaj dystrybuowane warunki błędach to powinny one być technicznie niezależny) tak Wysokości y wszystkich punktów na linii regresji są dotknięte przez „twanging” niepewności, który jest zero u wredne i coraz gorzej, a „przesuwająca się” niepewność, która jest wszędzie taka sama. (Czy widzisz związek z przedziałami ufności regresji, które obiecałem wcześniej, szczególnie to, że ich szerokość jest węższa przy ˉ x ?)y^x¯

Obejmuje to niepewność y przy x = 0 , co jest w zasadzie to, co rozumiemy przez standardowego błędu P 0 . Załóżmy teraz, że ˉ x jest po prawej stronie x = 0 ; następnie zmiana wykresu na wyższy szacowany spadek ma tendencję do zmniejszania naszego szacowanego punktu przecięcia, co ujawni szybki szkic. Jest to korelacja ujemna przewidywana przez - ˉ xy^x=0β^0x¯x=0 gdyˉxjest dodatnie. I odwrotnie, jeśliˉxjest na lewo odx=0, zobaczysz, że wyższe oszacowane nachylenie ma tendencję do zwiększania naszego szacowanego przecięcia, zgodnie zdodatniąkorelacją, którą twoje równanie przewiduje, gdyˉxjest ujemne. Zauważ, że jeśliˉxjest daleko od zera, ekstrapolacja linii regresji niepewnego gradientu w kierunkuyx¯MSD(x)+x¯2x¯x¯x=0x¯x¯y-osi stają się coraz bardziej niepewne (amplituda „twang” pogarsza się od średniej). Przycisków „twanging” błąd w - perspektywie znacznie przewyższają „ślizgową” błąd w °° a perspektywie więc błąd p 0 jest prawie całkowicie określona przez każdy błąd p 1 . Jak można łatwo zweryfikować algebraicznie, jeśli weźmiemy ˉ x± bez zmiany MSD lub odchylenie standardowe błędy s u , korelacja pomiędzy P 0 iβ^1x¯y¯β^0β^1x¯±suβ^0ma tendencję do1.β^11

Simulated slopes and intercepts

Aby to zilustrować (możesz kliknąć obraz prawym przyciskiem myszy i zapisać go lub wyświetlić go w pełnym rozmiarze w nowej karcie, jeśli ta opcja jest dla Ciebie dostępna). Wybrałem rozważenie powtarzania próbek , gdzie u iN ( 0 , 10 2 ) to iid, w stosunku do ustalonego zestawu wartości x przy ˉ x = 10 , więc E ( ˉ y ) = 25yi=5+2xi+uiuiN(0,102)xx¯=10E(y¯)=25. W tym układzie istnieje dość silna korelacja ujemna między szacowanym nachyleniem i przecięciem, a słabsza dodatnia korelacja między , szacunkową średnią odpowiedzią przy x = ˉ x i oszacowanym przecięciem. Animacja pokazuje kilka symulowanych próbek, z linią regresji próbki (złota) narysowaną nad rzeczywistą (czarną) linią regresji. Drugi rząd pokazuje, jak wyglądałby zbiór oszacowanych linii regresji, gdyby wystąpił błąd tylko w szacowanym ˉ y, a nachylenia pasowały do ​​prawdziwego nachylenia (błąd „przesuwu”); wtedy, jeśli wystąpił błąd tylko na zboczach i ˉ yy¯x=x¯y¯y¯dopasował jego wartość populacji (błąd „wykręcania”); i wreszcie, jak rzeczywiście wyglądał zbiór linii szacunkowych, gdy oba źródła błędów zostały połączone. Zostały one zakodowane kolorami według wielkości faktycznie oszacowanego przechwytywania (nie przechwytywania pokazanego na pierwszych dwóch wykresach, na których wyeliminowano jedno ze źródeł błędów) od niebieskiego dla niskich przechwyceń do czerwonego dla wysokich przechwyceń. Należy pamiętać, że od samych kolorach widzimy, że próbki z niskiego tendencję do wytwarzania obniżyć szacowane przechwytuje, podobnie jak próbki z wysokiegoy¯szacowane stoki. Następny rząd pokazuje symulowane (histogram) i teoretyczne (krzywa normalna) rozkłady prób oszacowań, a ostatni rząd pokazuje wykresy rozrzutu między nimi. Zauważ, że nie ma korelacji między a szacowanym nachyleniem, ujemna korelacja między szacowanym przecięciem a nachyleniem oraz dodatnia korelacja między przecięciem a ˉ y .y¯y¯

Co robi MSD w mianowniku ? Rozkładanie zakresxwartości zmierzyć się jest dobrze znany, co pozwala na bardziej precyzyjne oszacowanie nachylenia, a intuicja jest jasne od szkicu, ale nie pozwalają oszacowaćˉylepiej. Sugeruję wizualizację zbliżenia MSD do zera (tj. Punkty próbkowania tylko bardzo blisko średniejx), aby twoja niepewność na zboczu stała się ogromna: pomyśl wielkie wielkie twangi, ale bez zmiany niepewności poślizgu. Jeśli twojaośyjest jakąkolwiek odległością odˉx(innymi słowy, jeśliˉx0x¯MSD(x)+x¯2xy¯xyx¯x¯0) przekonasz się, że niepewność w twoim punkcie przechwytywania całkowicie zdominowana jest przez błąd skrętu związany ze spadkiem. W przeciwieństwie do tego, jeśli zwiększysz rozpiętość swoich pomiarów , bez zmiany średniej, znacznie poprawisz precyzję oszacowania nachylenia i potrzebujesz tylko delikatnych twangów do linii. Wysokość przechwytywania jest teraz zdominowana przez niepewność poślizgu, która nie ma nic wspólnego z szacowanym nachyleniem. Jest to zgodne z faktem algebraicznym, że korelacja między szacowanym nachyleniem i przecięciem dąży do zera jako MSD ( x ) ± ∞, a gdy ˉ x0 , w kierunku ± 1xMSD(x)±x¯0±1(znak jest przeciwieństwem znaku ) jako MSD ( x ) 0 .x¯MSD(x)0

Korelacja estymatorów nachylenia i przecięcia była funkcją zarówno i MSD (lub RMSD) x , więc w jaki sposób zwiększają się ich względne udziały? W rzeczywistości liczy się tylko stosunek ˉ x do RMSD x . Zgodnie z intuicją geometryczną RMSD daje nam rodzaj „jednostki naturalnej” dla x ; jeśli przeskalujemy oś x za pomocą w i = x i / RMSD ( x ), to jest to odcinek poziomy, który pozostawia szacowany punkt przecięcia i ˉ y bez zmian, daje nam nowyx¯xx¯xxxwi=xi/RMSD(x)y¯ i mnoży szacunkowe nachylenie przez RMSD x . Wzór na korelację między nowymi estymatorami nachylenia i przecięcia dotyczy tylko RMSD ( w ) , który wynosi jeden, i ˉ w , który jest stosunkiem ˉ xRMSD(w)=1xRMSD(w)w¯ . Ponieważ oszacowanie przecięcia pozostało niezmienione, a oszacowanie nachylenia zostało jedynie pomnożone przez stałą dodatnią, korelacja między nimi nie uległa zmianie: stąd korelacja międzypierwotnymnachyleniem a przecięciem musi również zależeć tylko od ˉ xx¯RMSD(x)x¯RMSD(x)x¯MSD(x)+x¯2RMSD(x)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
The "twang" and "slide" are my terms. This is my own visual intuition, and not one I have ever seen in any textbook, though the basic ideas here are all standard material. Goodness knows if there is a more technical name than "twang" and "slide"! I based this answer, from memory, on an answer to a related question that I never quite got round to finishing and posting. That had more instructive graphs, which (if I can track down the R code on my old computer, or find the time to reproduce) I will add.
Silverfish

1
What a job! Thank you very much! Now my understanding must be in much better shape.
Richard Hardy

@RichardHardy I have put a simulation animation in, which ought to make things a bit clearer.
Silverfish
Korzystając z naszej strony potwierdzasz, że przeczytałeś(-aś) i rozumiesz nasze zasady używania plików cookie i zasady ochrony prywatności.
Licensed under cc by-sa 3.0 with attribution required.