Para entender por que "[a] resposta é uma 0
ou 1
[mas] as previsões são probabilidades entre 0
- 1
", você precisa entender o tipo de modelo com o qual está trabalhando. Afaste os métodos de penalização e a validação cruzada, e você está executando uma regressão logística básica. Os parâmetros são adequados para as probabilidades de log / escala logística. Isso é chamado de "preditor linear". (Para saber mais sobre isso, pode ser útil ler minha resposta aqui: Diferença entre os modelos logit e probit .) Se você inserisse um valor x e simplificasse, o valor seria o logaritmo natural previsto do modelo para as chances de 'sucesso' ( 1
) Se você exponenciaria esse valor, teria as probabilidades previstas do modelode sucesso'. Para obter uma probabilidade prevista , você precisará converter as probabilidades em uma probabilidade via probabilidades / (1 + probabilidades). (Para saber mais sobre isso, pode ser útil ler minha resposta aqui: Interpretação de previsões simples para razões de chances na regressão logística .) Isso ainda não o leva a uma classe prevista . Para conseguir isso, você precisaria comparar sua probabilidade prevista com algum limite e, se for menor que o limite, prever 'falha' ( 0
), ou 'sucesso' ( 1
). O limite padrão mais comum é 0,5, mas esse geralmente não é o ideal. A predict.glm()
função de R permitirá que você usetype="link"
, que gera previsões na escala do preditor linear (ou seja, antes de todas as transformações acima), mas isso não ajudará nesse contexto. Usar type="response"
fornece as probabilidades previstas.
Ao tentar avaliar até que ponto um modelo de regressão binário (por exemplo, logística) prevê uma resposta, você tem várias opções:
- A primeira e mais intuitiva é comparar a classe prevista com a classe observada e calcular a porcentagem correta. Embora seja intuitivo, tem problemas. Depende, em parte, do limiar ser ideal, além de outros aspectos do modelo serem adequados. Ele também descarta muitas informações (ou seja, a que distância do limite está a probabilidade prevista), o que não é uma boa coisa a se fazer.
- Sua próxima opção é usar a área sob a curva ROC (Receiver Operating Characteristic). A maioria das pessoas usa essa opção; é consideravelmente melhor do que usar a porcentagem correta. A coisa sobre a AUC que a maioria das pessoas não percebe é que ela está realmente medindo a ordem apropriada de suas previsões, não a precisão real. Ou seja, se você tivesse previsto probabilidades para quatro observações de
.2, .4, .6, .8
e adicionado 0,01 a todas elas ( .21, .41, .61, .81
), a AUC seria a mesma, mesmo que os dois conjuntos de probabilidades previstas não possam ser igualmente precisos.
- A terceira maneira de avaliar seu modelo seria usar uma função de pontuação adequada. Talvez a função de pontuação mais popular em seu contexto seja a pontuação de Brier . Como observa o @fcoppens, o método no seu código é a pontuação Brier. Ele avaliará não apenas se o modelo prevê adequadamente que uma observação tem mais probabilidade de ser um 'sucesso' do que outra observação, mas se a probabilidade prevista do modelo está realmente correta.
É lamentável que a pontuação de Brier seja menos conhecida e usada. Embora a relativa intuitividade desses métodos seja: porcentagem correta> AUC> pontuação de Brier, sua verdadeira informatividade é o oposto: pontuação Brier> AUC> porcentagem correta. Se você deseja apenas uma medida simples do desempenho do seu modelo, a distinção entre esses métodos é menos importante, mas se você deseja usar esses métodos para otimizar um modelo ou selecionar um modelo, usar um método inferior levará a um desempenho pior .