Compreendendo a banda de confiança a partir de uma regressão polinomial


14

Estou tentando entender o resultado que vejo no meu gráfico abaixo. Normalmente, costumo usar o Excel e obter uma linha de regressão linear, mas no caso abaixo, estou usando R e recebo uma regressão polinomial com o comando:

ggplot(visual1, aes(ISSUE_DATE,COUNTED)) + geom_point() + geom_smooth()

Então, minhas perguntas se resumem a isso:

  1. Qual é a área cinza (seta 1) ao redor da linha de regressão azul? Esse é o desvio padrão da regressão polinomial?

  2. Posso dizer que o que quer que esteja fora da área cinza (seta # 2) é um 'outlier' e o que cai dentro da área cinza (seta # 3) está dentro do desvio padrão?

insira a descrição da imagem aqui

Respostas:


14

A faixa cinza é uma faixa de confiança para a linha de regressão. Não estou familiarizado o suficiente com o ggplot2 para saber com certeza se é uma banda de confiança de 1 SE ou uma faixa de confiança de 95%, mas acredito que seja a primeira ( Edit: evidentemente é um IC de 95% ). Uma faixa de confiança fornece uma representação da incerteza sobre sua linha de regressão. Em certo sentido, você poderia pensar que a verdadeira linha de regressão é tão alta quanto o topo da banda, tão baixa quanto o fundo, ou oscilando de maneira diferente dentro da banda. (Observe que essa explicação pretende ser intuitiva e não é tecnicamente correta, mas a explicação totalmente correta é difícil para a maioria das pessoas.)

Você deve usar a faixa de confiança para ajudá-lo a entender / pensar sobre a linha de regressão. Você não deve usá-lo para pensar nos pontos de dados brutos. Lembre-se de que a linha de regressão representa a média de em cada ponto em X (se você precisar entender isso mais detalhadamente, pode ajudar você a ler minha resposta aqui: Qual é a intuição por trás das distribuições gaussianas condicionais? ). Por outro lado, você certamente não espera que todos os pontos de dados observados sejam iguais à média condicional. Em outras palavras, você não deve usar a faixa de confiança para avaliar se um ponto de dados é externo. YX


( Editar: esta nota é periférica para a questão principal, mas procura esclarecer um ponto para o OP. )

Uma regressão polinomial não é uma regressão não linear, mesmo que o que você recebe não pareça uma linha reta. O termo 'linear' tem um significado muito específico em um contexto matemático, especificamente, de que os parâmetros que você está estimando - os betas - são todos coeficientes. Uma regressão polinomial significa apenas que suas covariáveis ​​são , X 2 , X 3 etc., ou seja, elas têm uma relação não linear entre si, mas seus betas ainda são coeficientes, portanto, ainda é um modelo linear. Se seus betas fossem, digamos, expoentes, você teria um modelo não linear. XX2X3

Em suma, se uma linha parece reta não tem nada a ver com o fato de um modelo ser linear ou não. Quando você ajusta um modelo polinomial (digamos, com e X 2 ), o modelo não 'sabe' que, por exemplo, X 2 é na verdade apenas o quadrado de X 1 . Ele acha que essas são apenas duas variáveis ​​(embora reconheça que existe alguma multicolinearidade). Assim, na verdade, é apropriado um regressão (hetero / liso) avião num espaço tridimensional, em vez de um (curvadas) de regressão linha num espaço bidimensional. Isso não é útil para nós para pensar, e de fato, extremamente difícil ver desde X 2XX2X2X1X2é uma função perfeita de . Como resultado, não nos incomodamos em pensar dessa maneira e nossos gráficos são realmente projeções bidimensionais no plano ( X , Y ) . No entanto, no espaço apropriado, a linha é realmente 'reta' em algum sentido. X(X, Y)

De uma perspectiva matemática, um modelo é linear se os parâmetros que você está tentando estimar forem coeficientes. Para esclarecer melhor, considere a comparação entre o modelo de regressão linear padrão (OLS) e um modelo de regressão logística simples apresentado de duas formas diferentes:
ln ( π ( Y )

Y=β0 0+β1X+ε
em(π(Y)1-π(Y))=β0 0+β1X
π(Y)=exp(β0 0+β1X)1+exp(β0 0+β1X)
βββDiferença entre os modelos logit e probit .)

+1 Os exemplos na documentação sugerem que a confiança é bastante alta, talvez 95%.
whuber

@gung obrigado pela resposta detalhada (você também recebeu um cheque!). Eu li sua primeira declaração e estou um pouco confuso. Você pode elaborar mais sobre isso? Se a linha resultante não é reta (y = mx + b), o que a torna linear? Mais uma vez obrigado pela resposta.
adhg

Os documentos em docs.ggplot2.org/0.9.3.1/stat_smooth.html afirmam que é uma faixa de confiança de 95% para a curva de regressão.
whuber

2
Eu acho que o Loess mais suave padrão em uso aqui, em vez de regressão polinomial?
xan

@ adhg, eu pensei que tinha coberto o linear vs. não linear em outro lugar, mas não consegui encontrá-lo. Então eu adicionei algum material extra aqui. HTH
gung - Restabelecer Monica

11

Para adicionar às respostas já existentes, a banda representa um intervalo de confiança da média, mas a partir da sua pergunta, você claramente está procurando um intervalo de previsão . Intervalos de previsão são um intervalo que, se você desenhar um novo ponto, teoricamente, esse ponto estaria contido no intervalo X% do tempo (onde você pode definir o nível de X).

library(ggplot2)
set.seed(5)
x <- rnorm(100)
y <- 0.5*x + rt(100,1)
MyD <- data.frame(cbind(x,y))

Podemos gerar o mesmo tipo de gráfico que você mostrou na sua pergunta inicial com um intervalo de confiança em torno da média da linha de regressão suavizada (o padrão é um intervalo de confiança de 95%).

ConfiMean <- ggplot(data = MyD, aes(x,y)) + geom_point() + geom_smooth()
ConfiMean

insira a descrição da imagem aqui

Para um exemplo rápido e sujo de intervalos de previsão, aqui eu gero um intervalo de previsão usando regressão linear com splines de suavização (portanto, não é necessariamente uma linha reta). Com os dados da amostra, ele se sai muito bem, para os 100 pontos, apenas 4 estão fora do intervalo (e especifiquei um intervalo de 90% na função de previsão).

#Now getting prediction intervals from lm using smoothing splines
library(splines)
MyMod <- lm(y ~ ns(x,4), MyD)
MyPreds <- data.frame(predict(MyMod, interval="predict", level = 0.90))
PredInt <- ggplot(data = MyD, aes(x,y)) + geom_point() + 
           geom_ribbon(data=MyPreds, aes(x=fit,ymin=lwr, ymax=upr), alpha=0.5)
PredInt

insira a descrição da imagem aqui

Agora mais algumas notas. Eu concordo com Ladislav que você deve considerar os métodos de previsão de séries temporais, já que você tem séries regulares desde 2007 e fica claro em sua trama se você olhar muito para a sazonalidade (conectar os pontos tornaria muito mais claro). Para isso, sugiro verificar a função forecast.stl no pacote de previsão, onde você pode escolher uma janela sazonal e fornecer uma decomposição robusta da sazonalidade e tendência usando Loess. Menciono métodos robustos porque seus dados têm alguns picos perceptíveis.

De maneira mais geral, para dados que não são de séries temporais, consideraria outros métodos robustos se você tiver dados com valores discrepantes ocasionais. Não sei como gerar intervalos de previsão usando Loess diretamente, mas você pode considerar a regressão quantílica (dependendo de quão extremos sejam os intervalos de previsão). Caso contrário, se você quiser apenas ser potencialmente não linear, considere splines para permitir que a função varie sobre x.


4

Bem, a linha azul é uma regressão local suave . Você pode controlar a ondulação da linha pelo spanparâmetro (de 0 a 1). Mas seu exemplo é uma "série temporal", então tente procurar alguns métodos de análise mais adequados do que apenas uma curva suave (que deve servir apenas para revelar possíveis tendências).

De acordo com a documentação de ggplot2(e reserve no comentário abaixo): stat_smooth é um intervalo de confiança do suave mostrado em cinza. Se você deseja desativar o intervalo de confiança, use se = FALSE.


1
(1) Não vejo na sua referência onde afirma que a área cinza é o intervalo de confiança no sentido dos pontos. Parece bastante claro a partir dos exemplos que a área cinza é um intervalo de confiança para a curva . (2) Ninguém declararia razoavelmente a grande proporção de pontos além da área cinzenta como "outliers"; existem muitos deles.
whuber

(1) meu erro, aqui adiciono um livro que se refere ao "intervalo de confiança pontual": Wickham H (2009) ggplot2 Elegant Graphics for Data Analysis. Mídia 212. (página 14). (2) eu concordo.
Ladislav Naďo 17/01

Alguma de suas referências indica em que nível de confiança padrão está definido?
whuber

Não, não consigo encontrar nenhuma referência sobre a configuração padrão.
Ladislav Naďo 17/01

Encontrei o padrão na primeira página da sua referência: "(0,95 por padrão)." Isso significa que esse problema é mais suave ou a sua interpretação da referência está incorreta: porque uma proporção tão grande dos pontos de dados geralmente fica além da área cinza e, assumindo que o código está correto, a área cinza deve ser uma região de confiança para a previsão (curva ajustada) e não uma região de confiança para os pontos.
whuber
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.