Logit com variáveis ​​independentes ordinais

18

Em um modelo de logit, existe uma maneira mais inteligente de determinar o efeito de uma variável ordinal independente do que usar variáveis ​​fictícias para cada nível?

fgregg
fonte
Não é dependente de software?
1
Software diferente pode permitir opções diferentes, mas deve haver uma resposta com princípios, não?
fgregg
1
Ok, comentário estúpido, desculpe.

Respostas:

16

Para adicionar à resposta de @ dmk38, "qualquer conjunto de pontuações fornece um teste válido , desde que elas sejam construídas sem consultar os resultados do experimento. Se o conjunto de pontuações for ruim, distorce gravemente uma escala numérica que realmente está subjacente à classificação ordenada, o teste não será sensível. Portanto, as pontuações devem incorporar a melhor percepção disponível sobre a maneira como a classificação foi construída e usada ". (Cochran, 1954, citado por Agresti, 2002, pp. 88-89). Em outras palavras, tratar um fator ordenado como uma variável numerada é apenas um problema de modelagem. Desde que faça sentido, isso afetará apenas a maneira como você interpreta o resultado, e não há uma regra definitiva sobre como escolher a melhor representação para uma variável ordinal.

Considere o seguinte exemplo sobre o consumo materno de álcool e a presença ou ausência de malformação congênita (Agresti, Análise de dados categóricos , Tabela 3.7 p.89):

            0    <1 1-2 3-5 6+
Absent  17066 14464 788 126 37
Present    48    38   5   1  1

Nesse caso em particular, podemos modelar o resultado usando regressão logística ou tabela de associação simples. Vamos fazer isso em R:

tab3.7 <- matrix(c(17066,48,14464,38,788,5,126,1,37,1), nr=2,
                 dimnames=list(c("Absent","Present"),
                               c("0","<1","1-2","3-5","6+")))
library(vcd)
assocstats(tab3.7)

As estatísticas usuais (12,08, p = 0,016751) ou LR (6,20, p = 0,184562) (com 4 df) não representam os níveis ordenados no consumo de álcool.χ2

Tratando ambas as variáveis ​​como ordinais com pontuações igualmente espaçadas (isso não tem impacto para variáveis ​​binárias, como malformação, e escolhemos a linha de base como 0 = ausente), poderíamos testar uma associação linear por linear. Vamos primeiro construir uma versão explodida desta tabela de contingência:

library(reshape)
tab3.7.df <- untable(data.frame(malform=gl(2,1,10,labels=0:1), 
                                alcohol=gl(5,2,10,labels=colnames(tab3.7))), 
                     c(tab3.7))
# xtabs(~malform+alcohol, tab3.7.df) # check

Em seguida, podemos testar uma associação linear usando

library(coin)
#lbl_test(as.table(tab3.7))
lbl_test(malform ~ alcohol, data=tab3.7.df)

que produz com . Observe que essa estatística é simplesmente a correlação entre as duas séries de pontuações (que Agresti chamou ), que é prontamente calculada comop = 0,1764 M 2 = ( n - 1 ) r 2χ2(1)=1.83p=0.1764M2=(n1)r2

cor(sapply(tab3.7.df, as.numeric))[1,2]^2*(32574-1)

Como pode ser visto, não há muita evidência de uma associação clara entre as duas variáveis. Conforme feito por Agresti, se optarmos por recodificar os níveis de álcool como {0,0.5,1.5,4,7}, que está usando valores intermediários para uma escala contínua hipotética, com a última pontuação um tanto puramente arbitrária, concluiríamos para um efeito maior do consumo materno de álcool no desenvolvimento de malformação congênita:

lbl_test(malform ~ alcohol, data=tab3.7.df,         
         scores=list(alcohol=c(0,0.5,1.5,4,7)))

produz uma estatística de teste de 6,57 com um valor de p associado de 0,01037.

Existem esquemas de codificação alternativos, incluindo midranks (nesse caso, recorremos a Spearman vez de Pearson ) que são discutidos pela Agresti, mas espero que você entenda a ideia geral aqui: É melhor selecionar pontuações que realmente reflitam uma medida razoável da distância entre categorias adjacentes de sua variável ordinal e espaçamento igual geralmente é um bom compromisso (na ausência de justificativa teórica).rρr

Usando a abordagem GLM, procederíamos da seguinte maneira. Mas primeiro verifique como o álcool é codificado em R:

class(tab3.7.df$alcohol)

É um fator simples e não ordenado ( "factor"), portanto, um preditor nominal. Agora, aqui estão três modelos nos quais consideramos o álcool como um preditor nominal, ordinal ou contínuo.

summary(mod1 <- glm(malform ~ alcohol, data=tab3.7.df, 
                    family=binomial))
summary(mod2 <- glm(malform ~ ordered(alcohol), data=tab3.7.df, 
                    family=binomial))
summary(mod3 <- glm(malform ~ as.numeric(alcohol), data=tab3.7.df, 
                    family=binomial))

O último caso assume implicitamente uma escala de intervalo igual e o é interpretado como @ dmk38: reflete o efeito de um aumento de uma unidade de álcool no resultado através do link logit, que é o aumento da probabilidade de observar uma malformação (comparada com nenhuma malformação, isto é, o odds ratio) é . O teste de Wald não é significativo no nível usual de 5%. Nesse caso, a matriz de projeto inclui apenas 2 colunas: a primeira é uma coluna constante de 1 para a interceptação, a segunda é o valor numérico (1 a 5) para o preditor, como em uma regressão linear simples. Em suma, este modelo testa um efeito linear do álcool no resultado (na escala logit). exp( θ )=exp(0,228)=1,256β^exp(θ^)=exp(0.228)=1.256

No entanto, nos dois outros casos ( mod1e mod2), obtemos resultados diferentes porque a matriz de design usada para modelar o preditor difere, como pode ser verificado usando:

model.matrix(mod1)
model.matrix(mod2)

Podemos ver que a matriz de design associada para mod1inclui variáveis ​​fictícias para os níveis de álcool (0 é sempre a linha de base) após o termo de interceptação na primeira coluna, enquanto que no caso temos quatro colunas de efeitos codificados por contraste (após a coluna de 1 para a interceptação). O coeficiente para a categoria "3-5" é estimado em 1.03736 abaixo , mas 0.01633 abaixo . Observe que a AIC e outras medidas baseadas em probabilidade permanecem, no entanto, idênticas entre esses dois modelos.k1mod2mod1mod2

Você pode tentar atribuir novas pontuações ao Álcool e ver como isso afetará a probabilidade prevista de uma malformação.

chl
fonte
3
(+1) resposta muito completa. Eu acrescentaria apenas que é possível obter testes que assumem apenas a monotonicidade da relação dose-resposta sem atribuir pontuações à variável ordinal usando regressão isotônica., Embora geralmente sejam necessários métodos de simulação ou permutação para obter a distribuição da estatística do teste sob o nulo. Veja Salanti & Ulm 2003 dx.doi.org/10.1002/bimj.200390012 .
onestop
@onestop Obrigado por esta referência. Eu vou dar uma olhada.
chl 12/12
6

é perfeitamente bom usar um preditor categórico em um modelo de regressão logit (ou OLS) se os níveis forem ordinais. Mas se você tiver um motivo para tratar cada nível como discreto (ou se de fato sua variável categórica for nominal e não ordinal), então, como alternativa à codificação fictícia, você também poderá usar a codificação de contraste ortogonal. Para uma discussão muito completa e acessível, consulte Judd, CM, McClelland, GH & Ryan, Análise de dados do CS: uma abordagem de comparação de modelos, Edn. 2nd. (Routledge / Taylor e Francis, Nova York, NY; 2008), ou apenas "codificação de contraste" do google

dmk38
fonte
Você está dizendo que não há problema em tratar dados ordinais como dados de intervalo no modelo? Nesse caso, como posso interpretar o coeficiente se não souber a "distância" entre os níveis?
fgregg
3
Sim. O coeficiente reflete a alteração nas chances de log para cada incremento de alteração no preditor ordinal. Essa especificação de modelo (muito comum) pressupõe que o preditor tenha um impacto linear em seus incrementos. Para testar a suposição, você pode comparar um modelo no qual você usa a variável ordinal como um único preditor com aquele em que discretiza as respostas e as trata como múltiplos preditores (como faria se a variável fosse nominal); se o último modelo não resultar em um ajuste significativamente melhor, é razoável tratar cada incremento como tendo um efeito linear.
dmk38
Dou-lhe +1 porque esta resposta parece boa e acho que @fgregg faria o mesmo (com repetição suficiente).
chl
Eu também acho que este é um exemplo perfeito, porque a mudança nas probabilidades de log pode ser interpretada com variáveis ​​ordinais.
SmallChess