Função de custo para validar modelos de regressão de Poisson

11

Para dados de contagem que eu coletei, uso a regressão de Poisson para construir modelos. Eu faço isso usando a glmfunção em R, onde eu uso family = "poisson". Para avaliar possíveis modelos (tenho vários preditores), uso o AIC. Por enquanto, tudo bem. Agora eu quero executar a validação cruzada. Eu já consegui fazer isso usando a cv.glmfunção do bootpacote. A partir da documentação de cv.glmeu ver que por exemplo, para dados binomiais você precisa usar uma função de custo específica para obter um erro de predição significativa. No entanto, ainda não tenho idéia para qual função de custo é apropriada family = poissone uma extensa pesquisa no Google não produziu resultados específicos. Minha pergunta é: alguém tem alguma luz para lançar sobre qual função de custo é apropriada cv.glmno caso de poisson glm?

Paul Hiemstra
fonte
1
A função cv.glmnetno pacote glmnetusa type.measure="deviance"para a família Poisson.
rcs
Estritamente, a documentação mostra que faz sentido usar uma função de custo específica para dados binários.
Corone 31/01
@corone of não são dados contínuos, nem dados binários. Então, eu estava procurando por uma função de custo apropriada para os dados da contagem.
Paul Hiemstra
1
Eu não acho que a discrição dos dados faça uma grande diferença aqui, a menos que suas contagens sejam muito pequenas. A questão é bastante sobre a distribuição dos dados. Para dados binários, a previsão é uma probabilidade contínua entre 0 e 1, mas a resposta é sempre 0 ou 1. No exemplo deles, a força é que o custo está "certo" ou "errado" e conta o número de erros e erros. Você está particularmente preocupado com a continuidade? Vou adicionar um PS à minha resposta para resolver a continuidade
Corone

Respostas:

12

Supondo que nada de especial no seu caso em particular, acho que há um bom argumento para usar o padrão (Mean Square Error) ou usar a média do erro dos logs ou mesmo o erro do qui-quadrado.

O objetivo da função de custo é expressar o quão "chateado" você está com previsões erradas, especificamente o que "errado" o incomoda mais. Isso é particularmente importante para respostas binárias, mas pode ser importante em qualquer situação.

Erro quadrado médio (de respostas)

C=1ni(YiY^i)2

Usando o MSE, você é igualmente sensível a erros de cima e de baixo e igualmente sensível a previsões grandes e pequenas. Isso é uma coisa bastante padrão a se fazer e, portanto, não acho que seria desaprovado na maioria das situações.

Erro do quadrado médio (de respostas do log)

C=1ni(lnYilnY^i)2

Como você está trabalhando com dados de contagem, pode-se argumentar que você não é simétrico nem indiferente ao tamanho. Estar fora de 10 contagens para uma previsão de 10 é muito diferente de uma previsão de 1000. Essa é uma função de custo um tanto "canônica", porque você correspondeu os custos até a função de link. Isso garante que esses custos correspondam à distribuição de variação assumida no modelo.

Erro Qui-quadrado

C=1ni(YiY^i)2Y^i

Uma terceira maneira seria usar o erro do qui-quadrado. Isso pode ser particularmente atraente se você estiver comparando seu GLM com outros modelos baseados em contagem - principalmente se houver fatores no seu GLM. Semelhante às respostas do log de erros, ele será dimensionado com o tamanho, mas é simétrico em torno da contagem prevista. Agora você está avaliando a qualidade do ajuste com base no erro percentual.


Sobre a discrição

A pergunta cita o exemplo da documentação em que eles têm uma variável de resposta binária, portanto, use uma função de custo diferente. O problema para uma resposta binária é que o GLM preverá um número real entre 0 e 1, mesmo que a resposta seja sempre exatamente 0 ou 1. É perfeitamente válido dizer que quanto mais próximo o número da resposta correta, melhor previsão, mas muitas vezes as pessoas não querem isso. O raciocínio é que muitas vezes é preciso agir como se fosse 0 ou 1 e, portanto, levará menos de 0,5 como uma previsão para 0. Nesse caso, faz sentido simplesmente contar o número de previsões "erradas". O argumento aqui é que, para uma pergunta Verdadeiro / Falso, você só pode estar certo ou errado - não há gradação de erro.

No seu caso, você tem dados de contagem. Aqui é muito mais comum aceitar previsões que não têm o mesmo suporte que a resposta. Uma previsão de 2,4 filhos por família, por exemplo, ou 9,7 mortes por ano. Normalmente, não se tenta fazer nada a respeito, porque não se trata de estar "certo" ou "errado", o mais próximo possível. Porém, se você realmente precisa ter uma previsão que seja um número inteiro, talvez porque tenha uma taxa de contagem muito muito baixa, não há motivo para não arredondar a previsão primeiro e contar o "número inteiro" ou o erro. Nesse caso, as três expressões acima ainda se aplicam, mas você simplesmente precisa arredondar primeiro.Y^

Corone
fonte
Em vez de trabalhar com erro quadrado médio do erro quadrado médio da resposta transformada em log, pode ser melhor para os GLMs usar o erro quadrado médio ponderado usando pesos de 1 / variância (fornecidos pelo slot $ weights da saída glm de R, para poisson = 1 / E (Y)). Isso funciona, acredito, para qualquer tipo de GLM.
Tom Wenseleers