Como apresentar o ganho na variância explicada graças à correlação de Y e X?


11

Estou pesquisando como (visualmente) explicar correlação linear simples para alunos do primeiro ano.

A maneira clássica de visualizar seria fornecer um gráfico de dispersão Y ~ X com uma linha de regressão reta.

Recentemente, tive a idéia de estender esse tipo de gráfico adicionando ao gráfico mais 3 imagens, deixando-me com: o gráfico de dispersão de y ~ 1, depois de y ~ x, resid (y ~ x) ~ x e por último de resíduos (y ~ x) ~ 1 (centrado na média)

Aqui está um exemplo dessa visualização: texto alternativo

E o código R para produzi-lo:

set.seed(345)
x <- runif(50) * 10
y <- x +rnorm(50)


layout(matrix(c(1,2,2,2,2,3 ,3,3,3,4), 1,10))
plot(y~rep(1, length(y)), axes = F, xlab = "", ylim = range(y))
points(1,mean(y), col = 2, pch = 19, cex = 2)
plot(y~x, ylab = "", )
abline(lm(y~x), col = 2, lwd = 2)

plot(c(residuals(lm(y~x)) + mean(y))~x, ylab = "", ylim = range(y))
abline(h =mean(y), col = 2, lwd = 2)

plot(c(residuals(lm(y~x)) + mean(y))~rep(1, length(y)), axes = F, xlab = "", ylab = "", ylim = range(y))
points(1,mean(y), col = 2, pch = 19, cex = 2)

O que me leva à minha pergunta: eu gostaria de receber sugestões sobre como esse gráfico pode ser aprimorado (com texto, marcas ou qualquer outro tipo de visualização relevante). Adicionar código R relevante também será bom.

Uma direção é adicionar algumas informações do R ^ 2 (seja por texto ou de alguma forma adicionando linhas que apresentem a magnitude da variação antes e depois da introdução de x). Outra opção é destacar um ponto e mostrar como ele é "melhor". explicou "graças à linha de regressão. Qualquer entrada será apreciada.


1
Ao mesmo tempo em que você mostra como a regressão linear pode ser boa, mostre também ao seu público como ela falha em situações em que os relacionamentos não são bem descritos por linhas retas:require(mlbench) ; cor( mlbench.smiley()$x ); plot(mlbench.smiley()$x)
DWin

Vai fazer Dwin ... :-)
Tal Galili

Respostas:


4

Aqui estão algumas sugestões (sobre o seu gráfico, não sobre como eu ilustraria a análise de correlação / regressão):

  • Os dois gráficos univariados que você mostra nas margens direita e esquerda podem ser simplificados com uma chamada para rug();
  • Acho mais informativo mostrar um gráfico de densidade de e ou um boxplot, correndo o risco de evocar a ideia de uma suposição de bi-normalidade que não faz sentido nesse contexto;YXY
  • Além da linha de regressão, vale a pena mostrar uma estimativa não paramétrica da tendência, como um loess (essa é uma boa prática e altamente informativa sobre possíveis não linearidades locais);
  • Os pontos podem ser destacados (com cores ou tamanhos variados) de acordo com o efeito Alavancar ou distâncias de Cook, ou seja, qualquer uma das medidas que mostram o quão influentes são os valores individuais na linha de regressão estimada. Vou colocar em segundo comentário o @ DWin e acho melhor destacar como pontos individuais "degradam" a qualidade do ajuste ou induzem algum tipo de afastamento da suposição de linearidade.

É importante notar que este gráfico assume que X e Y são dados não emparelhados; caso contrário, eu me ateria a um gráfico de Bland-Altman ( contra ), além do gráfico de dispersão.( X + Y ) / 2(XY)(X+Y)/2


1

Não respondendo à sua pergunta exata, mas o seguinte pode ser interessante visualizando uma possível armadilha das correlações lineares com base na resposta de stackoveflow :

par(mfrow=c(2,1))

set.seed(1)
x <- rnorm(1000)
y <- rnorm(1000)
plot(y~x, ylab = "", main=paste('1000 random values (r=', round(cor(x,y), 4), ')',  sep=''))
abline(lm(y~x), col = 2, lwd = 2)

x <- c(x, 500)
y <- c(y, 500)
cor(x,y)
plot(y~x, ylab = "", main=paste('1000 random values and (500, 500) (r=', round(cor(x,y), 4), ')',  sep=''))
abline(lm(y~x), col = 2, lwd = 2)

texto alternativo

As respostas de Gavin Simpson e @ bill_080 também incluem bons gráficos de correlação no mesmo tópico.


1

Eu teria dois gráficos de dois painéis, ambos com o gráfico xy à esquerda e um histograma à direita. No primeiro gráfico, uma linha horizontal é colocada na média de y e as linhas se estendem disso para cada ponto, representando os resíduos dos valores de y da média. O histograma com isso simplesmente plota esses resíduos. Em seguida, no próximo par, o gráfico xy contém uma linha representando o ajuste linear e novamente as linhas verticais representando os resíduos, representados em um histograma à direita. Mantenha o eixo x dos histogramas constante para destacar a mudança para valores mais baixos no ajuste linear em relação ao "ajuste" médio.


1

Eu acho que o que você propõe é bom, mas eu faria isso em três exemplos diferentes

1) X e Y são completamente independentes. Simplesmente remova "x" do código r que gera y (y1 <-rnorm (50))

2) O exemplo que você postou (y2 <- x + rnorm (50))

3) Os X são Y são a mesma variável. Simplesmente remova "rnorm (50)" do código r que gera y (y3 <-x)

Isso mostraria mais explicitamente como o aumento da correlação diminui a variabilidade nos resíduos. Você só precisa garantir que o eixo vertical não mude a cada plotagem, o que pode acontecer se você estiver usando a escala padrão.

Então você pode comparar três parcelas r1 x, r2 x e r3 x. Estou usando "r" para indicar os resíduos do ajuste usando y1, y2 e y3, respectivamente.

Minhas habilidades de R em plotagem são completamente inúteis, então não posso oferecer muita ajuda aqui.

Ao utilizar nosso site, você reconhece que leu e compreendeu nossa Política de Cookies e nossa Política de Privacidade.
Licensed under cc by-sa 3.0 with attribution required.