Regressão logística com R


7

Estou realizando uma regressão logística. Criei os seguintes dados de teste (os dois preditores e o critério são variáveis ​​binárias):

   UV1 UV2 AV
1    1   1  1
2    1   1  1
3    1   1  1
4    1   1  1
5    1   1  1
6    1   1  1
7    1   1  1
8    0   0  1
9    0   0  1
10   0   0  1
11   1   1  0
12   1   1  0
13   1   0  0
14   1   0  0
15   1   0  0
16   1   0  0
17   1   0  0
18   0   0  0
19   0   0  0
20   0   0  0

AV =dependentvariablecriterion

UV1UV2=bothindependantvariablespredictors

Para medir o efeito dos UVs no AV, é necessária uma regressão logística, pois o AV é uma variável binária. Por isso, usei o seguinte código

> lrmodel <- glm(AV ~ UV1 + UV2, data = lrdata, family = "binomial")

incluindo "family =" binomial "" . Isso está correto?

Em relação aos meus dados de teste, eu estava pensando em todo o modelo, especialmente nos estimadores e na significância:

> summary(lrmodel)


Call:
glm(formula = AV ~ UV1 + UV2, family = "binomial", data = lrdata)

Deviance Residuals: 
    Min       1Q   Median       3Q      Max  
-1.7344  -0.2944   0.3544   0.7090   1.1774  

Coefficients:
              Estimate Std. Error z value Pr(>|z|)
(Intercept) -4.065e-15  8.165e-01   0.000    1.000
UV1         -1.857e+01  2.917e+03  -0.006    0.995
UV2          1.982e+01  2.917e+03   0.007    0.995

(Dispersion parameter for binomial family taken to be 1)

    Null deviance: 27.726  on 19  degrees of freedom
Residual deviance: 17.852  on 17  degrees of freedom
AIC: 23.852

Number of Fisher Scoring iterations: 17
  1. Por que o UV2 não é significativo. Veja, portanto, que, para o grupo AV = 1, existem 7 casos com UV2 = 1, e para o grupo AV = 0, existem apenas 3 casos com UV2 = 1. Eu esperava que o UV2 fosse um discriminador significativo.

  2. Apesar da não significância dos UVs, os estimadores são - na minha opinião - muito altos (por exemplo, para UV2 = 1,982e + 01). Como isso é possível?

  3. Por que o intercepto não é 0,5 ?? Temos 5 casos com AV = 1 e 5 casos com AV = 0.

Além disso: criei o UV1 como um preditor que eu esperava não ser significativo: para o grupo AV = 1, existem 5 casos com UV1 = 1, e para o grupo AV = 0, existem 5 casos com UV1 = 1 também.

Toda a "imagem" que ganhei com a logística está me confundindo ...

O que estava me consumindo mais: quando executo uma regressão "NÃO logística" (omitindo "family =" binomial " )

> lrmodel <- glm(AV ~ UV1 + UV2, data = lrdata,)

Eu recebo os resultados esperados

Call:
glm(formula = AV ~ UV1 + UV2, data = lrdata)

Deviance Residuals: 
    Min       1Q   Median       3Q      Max  
-0.7778  -0.1250   0.1111   0.2222   0.5000  

Coefficients:
            Estimate Std. Error t value Pr(>|t|)   
(Intercept)   0.5000     0.1731   2.889  0.01020 * 
UV1          -0.5000     0.2567  -1.948  0.06816 . 
UV2           0.7778     0.2365   3.289  0.00433 **
---
Signif. codes:  0 ‘***’ 0.001 ‘**’ 0.01 ‘*’ 0.05 ‘.’ 0.1   1

(Dispersion parameter for gaussian family taken to be 0.1797386)

    Null deviance: 5.0000  on 19  degrees of freedom
Residual deviance: 3.0556  on 17  degrees of freedom
AIC: 27.182

Number of Fisher Scoring iterations: 2
  1. UV1 não é significativo! :-)
  2. UV2 tem um efeito positivo em AV = 1! :-)
  3. A interceptação é de 0,5! :-)

Minha pergunta geral: por que a regressão logística (incluindo "family =" binomial ") não está produzindo resultados conforme o esperado, mas uma regressão" NOT-logistic "(não incluindo" family = "binomial") produz?

Atualização: são as observações descritas acima devido à correlação de UV1 e UV 2. Corr = 0,56 Após manipular os dados do UV2

AV: 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0

UV1: 1, 1, 1, 1, 1, 1, 1, 0, 0, 0, 1, 1, 1, 1, 1, 1, 1, 0, 0, 0

UV2: 0, 0, 0, 1, 1, 1, 1, 1, 1, 1 , 1, 1, 0, 0, 0, 0, 0, 0, 0, 0

(Alterei as posições dos três 0s com os três 1s no UV2 para obter uma correlação <0,1 entre UV1 e UV2).

UV1 UV2 AV
1    1   0  1
2    1   0  1
3    1   0  1
4    1   1  1
5    1   1  1
6    1   1  1
7    1   1  1
8    0   1  1
9    0   1  1
10   0   1  1
11   1   1  0
12   1   1  0
13   1   0  0
14   1   0  0
15   1   0  0
16   1   0  0
17   1   0  0
18   0   0  0
19   0   0  0
20   0   0  0

para evitar correlação, meus resultados se aproximam das minhas expectativas:

Call:
glm(formula = AV ~ UV1 + UV2, family = "binomial", data = lrdata)

Deviance Residuals: 
     Min        1Q    Median        3Q       Max  
-1.76465  -0.81583  -0.03095   0.74994   1.58873  

Coefficients:
            Estimate Std. Error z value Pr(>|z|)  
(Intercept)  -1.1248     1.0862  -1.036   0.3004  
UV1           0.1955     1.1393   0.172   0.8637  
UV2           2.2495     1.0566   2.129   0.0333 *
---
Signif. codes:  0 ‘***’ 0.001 ‘**’ 0.01 ‘*’ 0.05 ‘.’ 0.1   1

(Dispersion parameter for binomial family taken to be 1)

    Null deviance: 27.726  on 19  degrees of freedom
Residual deviance: 22.396  on 17  degrees of freedom
AIC: 28.396

Number of Fisher Scoring iterations: 4

Mas por que a correlação influencia os resultados da regressão logística e não os resultados da regressão "não logística"?


2
Quando você não sabe como a resposta foi gerada pelos regressores, seus dados serão quase inúteis para o teste. Por que não gerar AV de acordo com um modelo especificado baseado em UV1 e UV2 (com coeficientes conhecidos)? Então você terá dados que vale a pena examinar e aprender.
whuber

thx para esta sugestão, mas: Eu sei como gerar os valores para AV de acordo com os coeficientes conhecidos para UV1 e UV2 para uma regressão linear / múltipla . Seria fácil definir, por exemplo, y = 5 + 10 * UV1 + 20 * UV2 (para a equação da regressão linear y = b0 + b1 * UV1 + b2 * UV2) e, com base nessa equação, criar um conjunto de dados para X e Y. Mas aqui está tudo sobre uma regressão logística .
flobrr

Como posso adaptar esse procedimento a uma regressão logística, especialmente considerando que uma regressão logística é t calculating an exact y-value but an value which can be defined as the probability to be part of group AV = 1 (and not part of group AV = 0); and this value isnt exata 0 ou 1, mas está entre 0 e 1 e é necessário escolher um limite para o seu modelo, para atribuir um caso ao grupo AV = 1, quando o limite é excedido. Portanto, existe um valor mais "abstrato" na regressão logística e não um valor y claro, como na regressão linear. Como lidar com isso?
flobrr

A regressão logística usa um modelo matemático específico que descreve exatamente como gerar dados. Postei um Rexemplo de trabalho em uma solução em stats.stackexchange.com/a/40609/919 : veja a linha de código abaixo do comentário "Conduzir uma simulação".
whuber

Respostas:


1

Minha pergunta geral: por que a regressão logística (incluindo "family =" binomial ") não está produzindo resultados conforme o esperado, mas uma regressão" NOT-logistic "(não incluindo" family = "binomial") produz?

Você obtém resultados diferentes, pois os modelos lineares minimizam

i=1n(yiηi)2
considerando que a regressão logística minimiza:

i=1nyilog(11+exp(ηi))+(1yi)log(111+exp(ηi))
Onde
ηi=β0+β1UV1+β2UV2

Não há razão para que os resultados sejam os mesmos.

Mas por que a correlação influencia os resultados da regressão logística e não os resultados da regressão "não logística"?

Isso afetará ambos. Presumo que você também veja Std. Errors mais baixos no modelo linear. Esse é um problema com multicolinearidade, embora você não possa chamar essa multicolinearidade quando tiver apenas duas variáveis ​​com correlação.56.

Ao utilizar nosso site, você reconhece que leu e compreendeu nossa Política de Cookies e nossa Política de Privacidade.
Licensed under cc by-sa 3.0 with attribution required.