Como devo interpretar esse gráfico residual?

8

Não consigo interpretar este gráfico. Minha variável dependente é o número total de ingressos de cinema que serão vendidos para um show. As variáveis ​​independentes são o número de dias que restam antes do show, variáveis ​​fictícias da sazonalidade (dia da semana, mês do ano, feriado), preço, ingressos vendidos até a data, classificação do filme, tipo de filme (suspense, comédia, etc., como manequins ) Além disso, observe que a capacidade da sala de cinema é fixa. Ou seja, ele pode hospedar no máximo x número de pessoas apenas. Estou criando uma solução de regressão linear e ela não está ajustando meus dados de teste. Então, pensei em começar com o diagnóstico de regressão. Os dados são de uma única sala de cinema para a qual eu quero prever a demanda.

O é um conjunto de dados multivariado. Para cada data, há 90 linhas duplicadas, representando dias antes do show. Portanto, para 1 de janeiro de 2016, existem 90 registros. Existe uma variável 'lead_time' que me fornece o número de dias antes do show. Portanto, para 1 de janeiro de 2016, se lead_time tiver o valor 5, significa que os ingressos serão vendidos até 5 dias antes da data do show. Na variável dependente, total de ingressos vendidos, terei o mesmo valor 90 vezes.

Além disso, como observação lateral, existe algum livro que explica como interpretar a plotagem residual e melhorar o modelo posteriormente?

insira a descrição da imagem aqui

Entusiasta
fonte
5
Você pode dizer algo sobre sua situação, os dados e o modelo? Caso contrário, como poderíamos interpretar o gráfico?
gung - Restabelece Monica
1
Expanda o eixo x para fora (ou "aumente o zoom"); Eu acredito que você verá "striping" nos resíduos.
blackeneth
Parece uma versão de stats.stackexchange.com/questions/25068 . Para fornecer respostas úteis, precisamos de mais detalhes.
whuber
Existe um número total fixo de ingressos que poderiam ser vendidos?
gung - Restabelece Monica
@gung, sim, uma vez que a capacidade da sala de cinema é fixa, ou seja, número de assentos. Estou adicionando isso à pergunta agora, pois ela pode explicar melhor a questão. Obrigado!
Entusiasta

Respostas:

4

Como o enredo é muito denso, não é fácil ver todas as tendências que possam existir. Você pode executar testes alternativos para hetorocedasticidade e autocorrelação para obter diagnósticos adicionais.

O que é visível é que, nos primeiros 100 valores, mais ou menos, a variação do resíduo aumenta, o que pode sugerir uma hetorocedasticidade. Posteriormente, a variação parece diminuir novamente. Esse comportamento não linear da variação também pode apontar para a necessidade de uma forma funcional diferente (talvez polinomial em vez de linear). Outra indicação para isso é a tendência nos resíduos observados na extremidade alta dos valores ajustados (não há mais resíduos positivos).

tomka
fonte
O recurso polinomial parece uma idéia razoável e a lógica dada para isso faz sentido. Obrigado!
Entusiasta
E sim, há auto-colinearidade e heteroskedastocity nos dados que estou tentando corrigir agora.
Entusiasta
@ Entusiasta Feliz isso ajudou. Eu seria curioso o que foi o último conjunto de soluções que levaram para resolver este problema (uma vez que você é feito)
Tomka
Na verdade, estou usando a abordagem de diagnóstico de modelo sugerida aqui. stats.stackexchange.com/a/189116/68444
Entusiasta
e aqui está o próximo estágio do meu problema stats.stackexchange.com/questions/235562/…
Enthusiast
12

Sua plotagem residual possui um padrão definido, com várias linhas tendendo para baixo à medida que os valores ajustados aumentam. Esse padrão pode ocorrer se você não considerar os efeitos fixos / aleatórios em seu modelo e os efeitos fixos estiverem correlacionados com variáveis ​​explicativas. Considere o seguinte exemplo:

set.seed(999)

N = 1000
num.groups = 10

alpha = runif(num.groups, -10, 10) #Fixed effects
beta = 10 #Slope parameter
group = sample(num.groups, N, replace = TRUE)

X = rnorm(N, mean = alpha[group], sd = 5) #Mean of X correlated with fixed effect
e = rnorm(N, sd = 1)
y = alpha[group] + X * beta + e

df = data.frame(group = as.factor(group), X, y)

m.no.fe = lm(y ~ X, data = df) #Not including group fixed effects
plot(m.no.fe, which = 1)

Isso resulta no seguinte gráfico residual / ajustado: res_fitted_nofe

Você pode ver algo semelhante se, por exemplo, regredir as pontuações do SAT nos ganhos de entrada para várias escolas secundárias, mas não incluir os efeitos fixos da escola; cada escola terá diferentes ganhos de linha de base (efeitos fixos) e pontuações médias no SAT, que provavelmente estão correlacionadas.

Incluindo efeitos fixos de grupo, obtemos

m.fe = lm(y ~ group + X, data = df) #Now including fixed effects
plot(m.fe, which = 1)

que fornece uma plotagem residual / ajustada muito melhor:

res_fitted_fe

tkmckenzie
fonte
4
Isso pode estar certo, mas eles parecem linhas perfeitamente retas para mim. Meu palpite seria que Y é uma contagem, ou uma contagem de 'sucessos' de um número fixo de tentativas (ou seja, o modelo está incorreto). Não saberemos até que o OP fale mais sobre os dados e o modelo.
gung - Restabelece Monica
@tkmckenzie então você quer dizer que preciso criar mais variáveis ​​no modelo?
Entusiasta
6

O gráfico residual parece incomum do ponto de vista da regressão OLS (linear) padrão. Há, por exemplo, uma indicação de heterocedasticidade, especificamente que a dispersão dos resíduos é maior no meio do que nas duas extremidades. Este não é o problema real, no entanto.

X

yddd+1 (Desculpe, ao reler a pergunta, vejo que você já incluiu os ingressos vendidos até a data da variável.)

Pode haver mais problemas a serem resolvidos na modelagem de seus dados. Esses são tópicos bastante avançados; se você não estiver familiarizado com eles, pode precisar trabalhar com um consultor de estatística.

- Reinstate Monica
fonte
Meus dados têm distribuição gama, como aparece nos resultados de fitdistrplus () e qqplot (). stats.stackexchange.com/questions/234866/…
Entusiasta
fitdistrplus(0 0,)0 03.5