Eu tenho uma variável dependente que pode variar de 0 a infinito, com 0s sendo realmente observações corretas. Entendo que os modelos de censura e Tobit só se aplicam quando o valor real de é parcialmente desconhecido ou ausente, caso em que os dados são considerados truncados. Mais algumas informações sobre dados censurados neste segmento .
Mas aqui 0 é um valor verdadeiro que pertence à população. A execução do OLS nesses dados tem o problema irritante específico de levar estimativas negativas. Como devo modelar ?
> summary(data$Y)
Min. 1st Qu. Median Mean 3rd Qu. Max.
0.00 0.00 0.00 7.66 5.20 193.00
> summary(predict(m))
Min. 1st Qu. Median Mean 3rd Qu. Max.
-4.46 2.01 4.10 7.66 7.82 240.00
> sum(predict(m) < 0) / length(data$Y)
[1] 0.0972098
Desenvolvimentos
Depois de ler as respostas, estou relatando o ajuste de um modelo de barreira gama usando funções de estimativa ligeiramente diferentes. Os resultados são bastante surpreendentes para mim. Primeiro, vamos olhar para o DV. O que é aparente são os dados de cauda extremamente gordos. Isso tem algumas conseqüências interessantes na avaliação do ajuste que irei comentar abaixo:
quantile(d$Y, probs=seq(0, 1, 0.1))
0% 10% 20% 30% 40% 50% 60% 70% 80% 90% 100%
0.000000 0.000000 0.000000 0.000000 0.000000 0.000000 0.286533 3.566165 11.764706 27.286630 198.184818
Criei o modelo de obstáculos Gamma da seguinte maneira:
d$zero_one = (d$Y > 0)
logit = glm(zero_one ~ X1*log(X2) + X1*X3, data=d, family=binomial(link = logit))
gamma = glm(Y ~ X1*log(X2) + X1*X3, data=subset(d, Y>0), family=Gamma(link = log))
Finalmente, avaliei o ajuste dentro da amostra usando três técnicas diferentes:
# logit probability * gamma estimate
predict1 = function(m_logit, m_gamma, data)
{
prob = predict(m_logit, newdata=data, type="response")
Yhat = predict(m_gamma, newdata=data, type="response")
return(prob*Yhat)
}
# if logit probability < 0.5 then 0, else logit prob * gamma estimate
predict2 = function(m_logit, m_gamma, data)
{
prob = predict(m_logit, newdata=data, type="response")
Yhat = predict(m_gamma, newdata=data, type="response")
return(ifelse(prob<0.5, 0, prob)*Yhat)
}
# if logit probability < 0.5 then 0, else gamma estimate
predict3 = function(m_logit, m_gamma, data)
{
prob = predict(m_logit, newdata=data, type="response")
Yhat = predict(m_gamma, newdata=data, type="response")
return(ifelse(prob<0.5, 0, Yhat))
}
Inicialmente, eu estava avaliando o ajuste pelas medidas usuais: AIC, desvio nulo, erro absoluto médio etc. Mas, observando os erros absolutos quantílicos das funções acima, destacamos alguns problemas relacionados à alta probabilidade de um resultado 0 e ao extremo cauda gorda. Obviamente, o erro cresce exponencialmente com valores mais altos de Y (também existe um valor Y muito grande em Max), mas o mais interessante é que depender muito do modelo de logit para estimar 0 produz um melhor ajuste de distribuição (eu não não sei como descrever melhor esse fenômeno):
quantile(abs(d$Y - predict1(logit, gamma, d)), probs=seq(0, 1, 0.1))
0% 10% 20% 30% 40% 50% 60% 70% 80% 90% 100%
0.00320459 1.45525439 2.15327192 2.72230527 3.28279766 4.07428682 5.36259988 7.82389110 12.46936416 22.90710769 1015.46203281
quantile(abs(d$Y - predict2(logit, gamma, d)), probs=seq(0, 1, 0.1))
0% 10% 20% 30% 40% 50% 60% 70% 80% 90% 100%
0.000000 0.000000 0.000000 0.000000 0.000000 0.309598 3.903533 8.195128 13.260107 24.691358 1015.462033
quantile(abs(d$Y - predict3(logit, gamma, d)), probs=seq(0, 1, 0.1))
0% 10% 20% 30% 40% 50% 60% 70% 80% 90% 100%
0.000000 0.000000 0.000000 0.000000 0.000000 0.307692 3.557285 9.039548 16.036379 28.863912 1169.321773
fonte
Respostas:
Censurado x inflado x obstáculo
Os modelos censurados, com obstáculos e inflados funcionam adicionando uma massa pontual sobre uma densidade de probabilidade existente. A diferença está em onde a massa é adicionada e como. Por enquanto, considere adicionar uma massa de pontos em 0, mas o conceito generaliza facilmente para outros casos.
Todos eles implicam um processo de geração de dados em duas etapas para alguma variável :Y
Modelos inflados e com obstáculos
Os modelos inflados (geralmente inflados a zero) e os obstáculos funcionam especificando explicita e separadamente , de modo que o DGP se torne:Pr( Y= 0 ) = π
Em um modelo inflado, . Em um modelo de obstáculo, Pr ( Y ∗ = 0 ) = 0 . Essa é a única diferença .Pr( Y∗= 0 ) > 0 Pr( Y∗= 0 ) = 0
Ambos os modelos levam a uma densidade com a seguinte forma:
onde sou uma função indicadora. Ou seja, uma massa pontual é simplesmente adicionada a zero e, nesse caso, essa massa é simplesmente Pr ( Z = 0 ) = 1 - π . Você pode estimar p diretamente ou definir g ( π ) = X β para algum g invertível, como a função logit. D ∗ também pode depender de X β . Nesse caso, o modelo funciona "estratificando" uma regressão logística para Z sob outro modelo de regressão para Y ∗ .Eu Pr( Z= 0 ) = 1 - π p g( π) = Xβ g D∗ Xβ Z Y∗
Modelos censurados
e pode ser facilmente estendido.
Juntar as peças
Qual deles você deve usar?
Se você tem uma "história de censura" atraente, use um modelo censurado. Um uso clássico do modelo Tobit - o nome econométrico para regressão linear gaussiana censurada - é para modelar respostas de pesquisas que são "codificadas de topo". Os salários são frequentemente relatados desta maneira, onde todos os salários acima de algum limite, digamos 100.000, são apenas codificados como 100.000. Esta não é a mesma coisa que a truncagem , onde os indivíduos com salários acima de 100.000 não são observadas em tudo . Isso pode ocorrer em uma pesquisa que é administrada apenas a indivíduos com salários abaixo de 100.000.
Caso contrário, um obstáculo ou modelo inflado é uma escolha segura. Geralmente, não é errado sugerir um processo geral de geração de dados em duas etapas e pode oferecer algumas informações sobre os dados que você talvez não tivesse.
Truncamento
Editar: removido, porque esta solução estava incorreta
fonte
Deixe-me começar dizendo que a aplicação do OLS é totalmente possível; muitos aplicativos da vida real fazem isso. Causa (às vezes) o problema com o qual você pode terminar com valores ajustados menores que 0 - presumo que seja com isso que você está preocupado? Mas se apenas muito poucos valores ajustados estiverem abaixo de 0, não me preocuparia com isso.
O modelo de tobit pode (como você diz) ser usado no caso de modelos censurados ou truncados. Mas isso também se aplica diretamente ao seu caso, na verdade o modelo de tobit foi inventado. Y "se acumula" em 0 e, de outra forma, é irregular de maneira irregular. É importante lembrar que o modelo de tobit é difícil de interpretar, você precisaria confiar no APE e no PEA. Veja os comentários abaixo.
Você também pode aplicar o modelo de regressão de possessão, que tem uma interpretação quase como OLS - mas é normalmente usado com dados de contagem. Wooldridge 2012, capítulo 17, contém uma discussão muito clara sobre o assunto.
fonte