Plotagem QQ e


7

Se meu qqplot é linear, mas o gradiente não é o mesmo da linha de 45 graus, o que isso sugere?QQplot

Estou tentando examinar o ajuste da distribuição laplace aos meus dados de amostra, por isso gerei aleatoriamente observações distribuídas de laplace (com parâmetros estimados a partir da minha amostra) e as plotei contra minha amostra:

qqplot(rand, sample)
abline(0, 1, col = 'red')

Você poderia postar um belo recorte da trama: com um título totalmente visível ou nenhum. Desde já, obrigado.
27418 Jim

@ Jim me livrei do título :)
SugarMarsh

Além disso, adicione algumas informações adicionais, por exemplo, qual R codevocê usou? Qual é o objetivo? Rejeitar uma determinada distribuição? Verifique também gráficos de densidade e histogramas.
27418 Jim

11
@byouness respondeu bem. Resposta curta: as distribuições parecem diferir multiplicativamente.
Nick Cox

2
Agora existem duas respostas para " Se meu qqplot for linear, mas o gradiente não for o mesmo que a linha de 45 graus, o que isso sugere? " Para poder responder " Estou tentando examinar o ajuste da distribuição de laplace à minha amostra" data ... "publique seus dados (no modo de código ).
27718 Jim

Respostas:


5

Devido à falta de dados em sua pergunta, eu uso a distribuição gaussiana vs. uma amostra na minha resposta abaixo (em vez da distribuição Laplace vs. seus dados de amostra).

No que diz respeito aos dois primeiros momentos, a interpretação do que você vê no gráfico qq é a seguinte:

  • Se as distribuições forem idênticas, você espera uma linha :x=y

    x <- rnorm(1000)
    qqnorm(x)
    abline(0, 1, col = 'red')
    

insira a descrição da imagem aqui

  • Se os meios são diferentes, você espera um intercepto , o que significa que ele ficará acima ou abaixo da linha :a0x=y

    x <- rnorm(1000)
    qqnorm(x + 1)
    abline(0, 1, col = 'red')
    

insira a descrição da imagem aqui

  • Se os desvios padrão forem diferentes, você espera uma inclinação :b1

    x <- rnorm(1000)
    qqnorm(x * 1.5)
    abline(0, 1, col = 'red')
    

insira a descrição da imagem aqui

Para entender isso, basta plotar os CDFs no mesmo gráfico. Por exemplo, pegando o último:

lines(seq(-7, 7, by = 0.01), pnorm(seq(-7, 7, by = 0.01)), col = 'red')

Vamos pegar, por exemplo, 3 pontos no eixo y: , , e ver qual valor de (quantil) nos fornece cada valor de CDF.CDF(q)=0.20.50.8q

Você pode ver isso:

Fred1(0.2)>FX1(0.2) (quantile around -1)Fred1(0.5)=FX1(0.5) (quantile = 0)Fred1(0.8)<FX1(0.8) (quantile around 1)

Qual é o que é mostrado pelo qq-plot.

insira a descrição da imagem aqui


4

A linearidade do gráfico QQ sugere apenas que sua amostra segue uma distribuição normal (ou mais especificamente, sua função quantil é a função probit). A inclinação é determinada pelo desvio padrão (para sd = 1, obtemos o popularx=y linha).

Um gráfico em forma de S, algo que parece simétrico em uma rotação de 180 graus, é indicativo de uma distribuição simétrica.

Um raciocínio intuitivo para a forma é assim; para obter uma linha reta, você precisa de uma escala semelhante do espaçamento dos quantis em torno da média. Significando que se dizxth quantil é uma proporção da distância da média quando comparado ao ythquantil, a proporção é conservada, a qual é conservada apenas no caso de uma distribuição normal. A inclinação é mais indicativa da magnitude absoluta dessa proporção, portanto depende do sd. Diferentes formas podem ser pensadas de maneira semelhante, observando essa proporção em diferentes locais ao longo da distribuição.

Aqui estão algumas visualizações.

Nota: Estou plotando a amostra no eixo Y como é a norma e estou assumindo que a maneira como você plotou coloca a amostra no eixo x.

insira a descrição da imagem aqui insira a descrição da imagem aqui insira a descrição da imagem aqui insira a descrição da imagem aqui insira a descrição da imagem aqui insira a descrição da imagem aqui

Código R:

# Creating different distributions with mean 0
library(rmutil)
set.seed(12345)
normald<-rnorm(10000,sd=2)
normald<-(normald-mean(normald))/sd(normald)
sharperpeak<-rlaplace(10000) #using Laplace distribution
sharperpeak<-(sharperpeak-mean(sharperpeak))/sd(sharperpeak)
heavytail<-rt(10000,5) #using t-distribution
heavytail<-(heavytail-mean(heavytail))/sd(heavytail)
positiveskew<-rlnorm(10000) #using lognormal distribution
positiveskew<-(positiveskew-mean(positiveskew))/sd(positiveskew)
negativeskew<-positiveskew*(-1) #shortcut
negativeskew<-(negativeskew-mean(negativeskew))/sd(negativeskew)

library(ggplot2)
library(gridExtra)

#normal plot
p1<-ggplot(data.frame(dt=normald))+geom_density(aes(x=dt),fill='green',alpha=0.6)+xlab('Normal Distribution')+geom_vline(xintercept=quantile(normald,c(0.25,0.75),color='red',alpha=0.3))
p2<-ggplot(data.frame(dt=normald))+geom_qq(aes(sample=dt))+geom_abline(slope=1,intercept = 0)
grid.arrange(p1,p2,nrow=1)

#sharppeak plot
p1<-ggplot(data.frame(dt=sharperpeak))+geom_density(aes(x=dt),fill='green',alpha=0.6)+xlab('Sharper-peaks')+geom_vline(xintercept=quantile(sharperpeak,c(0.25,0.75),color='red',alpha=0.3))
p2<-ggplot(data.frame(dt=sharperpeak))+geom_qq(aes(sample=dt))+geom_abline(slope=1,intercept = 0)
grid.arrange(p1,p2,nrow=1)

#heaviertails plot
p1<-ggplot(data.frame(dt=heavytail))+geom_density(aes(x=dt),fill='green',alpha=0.6)+xlab('Heavy Tails')+geom_vline(xintercept=quantile(heavytail,c(0.25,0.75),color='red',alpha=0.3))
p2<-ggplot(data.frame(dt=heavytail))+geom_qq(aes(sample=dt))+geom_abline(slope=1,intercept = 0)
grid.arrange(p1,p2,nrow=1)

#positiveskew plot
p1<-ggplot(data.frame(dt=positiveskew))+geom_density(aes(x=dt),fill='green',alpha=0.6)+xlab('Positively skewed Distribution')+geom_vline(xintercept=quantile(positiveskew,c(0.25,0.75),color='red',alpha=0.3))+xlim(-1.5,5)
p2<-ggplot(data.frame(dt=positiveskew))+geom_qq(aes(sample=dt))+geom_abline(slope=1,intercept = 0)
grid.arrange(p1,p2,nrow=1)

#negative skew plot
p1<-ggplot(data.frame(dt=negativeskew))+geom_density(aes(x=dt),fill='green',alpha=0.6)+xlab('Negatively skewed Distribution')+geom_vline(xintercept=quantile(negativeskew,c(0.25,0.75),color='red',alpha=0.3))+xlim(-5,1.5)
p2<-ggplot(data.frame(dt=negativeskew))+geom_qq(aes(sample=dt))+geom_abline(slope=1,intercept = 0)
grid.arrange(p1,p2,nrow=1)

# Normal distributions with different sds
normal1<-rnorm(3000,sd=2)
normal2<-rnorm(3000,sd=4)
normal3<-rnorm(3000,sd=0.5)
normal4<-rnorm(3000,sd=0.25)
final<-c(normal1,normal2,normal3,normal4)
ggplot(data.frame(dt=final,sds=factor(rep(c('2','4','0.5','0.25'),each=3000))),aes(sample=dt,color=sds))+geom_qq()+geom_abline(slope=1,intercept=0)

então isso significaria apenas que minha amostra tem um desvio padrão menor do que eu estimei?
SugarMarsh 28/05

Se o gráfico que você postou possui quantis teóricos no eixo x, parece que sim. Mas o QQ-plot é apenas um método visual / aproximado para deduzir a normalidade. Talvez você possa executar um teste shapiro-wilk para ter uma idéia melhor.
stochastic13
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.