Ricardo Alves de Olinda
ricardo.estat@yahoo.com.br
http://lattes.cnpq.br/7767223263366578
Universidad del Estado de Paraíba
http://departamentos.uepb.edu.br/estatistica/corpo-docente/
Use R!
¿Por qué regresión logística y no lineal para variables cualitativas?
Si una variable cualitativa con dos niveles se codifica como \(1\) y \(0\), es posible ajustar un modelo de regresión lineal. Al hacerlo, se estaría obteniendo la probabilidad de que la variable dependiente \(Y\) pertenezca al nivel de referencia empleado por el modelo dado un determinado valor del predictor \(X\). El principal problema de esta aproximación es que al tratarse de una recta, para valores extremos del predictor, se obtienen valores de \(Y\) menores que \(0\) o mayores que \(1\), lo que entra en contradicción con el hecho de que las probabilidades siempre están dentro del rango \([0,1]\). En el siguiente ejemplo se modela la probabilidad de fraude por impago (default) en función del balance de la cuenta bancaria (balance).
require(ISLR)
## Loading required package: ISLR
levels(Default$default) <- c("0", "1")
Default$default <- as.character(Default$default)
Default$default <- as.numeric(Default$default)
modelo_lineal <- lm(default ~ balance, data = Default)
plot(x = Default$balance, y = Default$default , col = "darkblue",
main = "probabilidad de default en función del balance",
xlab = "Balance", ylab = "Probabilidad de default")
abline(modelo_lineal, lwd = 2.5, col = "firebrick")
En el caso de que existan múltiples observaciones de la variable dependiente cualitativa para cada valor de la variable independiente continua, se puede calcular la proporción de eventos verdaderos en cada valor y realizar una regresión lineal entre la nueva variable continua (proporción) y el predictor. Sin embargo, esta aproximación tiene la limitación de no tener en cuenta el número de observaciones en cada caso (no se le debe dar el mismo peso a una proporción de \(0.5\) que proceda de \(2/4\) que a una de \(8/16\)).
Concentraciones de hidrocarburos aromáticos policíclicos en muestras de hígado de jóvenes tortugas marinas verdes de Brasil: ¿Pueden estos compuestos desempeñar un papel en el desarrollo de la fibropapilomatosis?
Comienza cargando las librerías y preparando los datos a utilizar.
library(car)
library(hnp)
## Loading required package: MASS
library(MASS)
Análise da planilha: Presença/Ausência de tumores en Turtugas
tumor <- read.table("Individuais.txt",header=TRUE)
head(tumor)
## FPS Naph Acen Fluor Phena Anth Benzo_b Benzo_a Indeno Total
## 1 0 0.0 1.4 9.3 0.0 0 0.5 0 0 11.2
## 2 0 0.0 0.8 0.0 0.0 0 0.0 0 0 0.8
## 3 0 7.5 0.0 4.0 5.9 2 0.0 0 0 19.3
## 4 0 0.0 0.8 0.0 0.0 0 0.0 0 0 0.8
## 5 0 12.2 0.0 2.8 8.0 2 0.0 0 0 25.1
## 6 0 0.0 1.8 0.0 0.0 0 0.0 0 0 1.8
Regresando al discusión…
Para evitar estos problemas, la regresión logística modela la probabilidad de \(Y\) usando una función cuyo resultado está siempre comprendido entre \(0\) y \(1\) para todos los posibles valores del predictor \(X\).
Dada una variable respuesta categórica con dos niveles, la regresión logística modela la probabilidad de que \(Y\) pertenezca a una categoría o nivel particular, dados los valores de un único predictor \(X\). La clasificación depende del límite o threshold
que se establezca. \[
P[Y=k|X=x]
\]
\(P[Y=k|X=x]\) puede interpretarse como: la probabilidad de que la variable cualitativa \(Y\) adquiera el valor \(k\) (el nivel de referencia, comúnmente codificado como \(1\)), dado que el predictor \(X\) tiene el valor \(x\).
modelo_logistico <- glm(default ~ balance, data = Default, family = "binomial")
plot(x = Default$balance, y = Default$default , col = "darkblue",
main = "probabilidad de default en función del balance", xlab = "Balance",
ylab = "Probabilidad de default")
curve(predict(modelo_logistico, data.frame(balance = x), type = "response"),
add = TRUE, col = "firebrick", lwd = 2.5)
En regresión logística utilizamos la función logística: \[ p(X)=\frac{e^{\beta_0+\beta_1X}}{1+e^{\beta_0+\beta_1X}} \]
que siempre producirá una curva en forma de S, comprendiéndose los valores de \(Y\) entre \([0, 1]\). La ecuación anterior puede reestructurarse como \[
\frac{p(X)}{1-p(X)}=e^{\beta_0+\beta_1X}
\] donde \(p(X)/[1 - p(X)]\) corresponde a los odds
, pudiendo tomar cualquier valor entre \(0\) (muy baja probabilidad de éxito) y \(\infty\) (muy alta probabilidad de éxito). Este ratio, pues, indica cuanto más probable es el éxito que el fracaso.
Introduciendo el logaritmo en ambos lados de la ecuación, obtenemos una función lineal \[ log\left(\frac{p(X)}{1-p(X)} \right)=\beta_0+\beta_1X \]
La parte izquierda de la ecuación es lo que se conoce como logaritmo de odds (log-odds) o logit.
La transformación de probabilidad a odds es monotónica, lo que significa que los odds aumentan conforme aumenta la probabilidad, y viceversa:
Todas estas transformaciones se implementan para evitar la restricción del rango de probabilidad \([0, 1]\) en la variable respuesta, ya que transformación logística (logaritmo de odds) permite mapear desde menos infinito hasta más infinito.
Concepto de ODDS o razón de probabilidad, ratio de ODDS y logaritmo de ODDS
En el caso de la regresión lineal, se modela el valor de la variable dependiente \(Y\) en función del valor de la variable independiente \(X\). En la regresión logística se modela la probabilidad de que la variable respuesta \(Y\) pertenezca al nivel elegido como referencia en función del valor que adquieran los predictores, mediante el uso de LOG of ODD’s.
Supóngase que la probabilidad de que un evento sea verdadero es de \(0.8\), por lo que la probabilidad de evento falso es de \(1 - 0.8 = 0.2\). Los odds o razón de probabilidad de verdadero se definen como el ratio entre la probabilidad de evento verdadero y la probabilidad de evento falso \(\frac{p}{q}\). En este caso los odds de verdadero son \(0.8/0.2 = 4\), lo que equivale a decir que se esperan \(4\) eventos verdaderos por cada evento falso.
Interpretación de los coeficientes de regresión
Mientras que en regresión lineal \(\beta_1\) se corresponde con el cambio promedio en \(Y\) asociado a un incremento de una unidad en \(X\), en regresión logística \(\beta_1\) es el valor que indica cuanto cambia el logaritmo de odds cuando \(X\) se incrementa en una unidad, o equivalentemente, multiplica los odds por \(e^{\beta_1}\). La cantidad con la que \(p(X)\) cambia debido a un cambio en \(X\) dependerá del valor actual de \(X\), pero independientemente de ello, si \(\beta_1\) es positivo, entonces aumentar \(X\) provocará un aumento de \(p(X)\). La intersección \(\beta_0\) corresponde con el resultado predicho para el nivel de referencia.
Estimación de los coeficientes de regresión
Una vez obtenida la relación lineal entre el logaritmo de los odds y la variable predictora \(X\) se tienen que estimar los parámetros \(\beta_0\) y \(\beta_1\). Para ello se recurre al maximum likelihood method (en regresión lineal se emplea mínimos cuadrados). El método de maximum likelihood (ML) es un proceso computacional/matemático que busca el valor de los parámetros \(\beta_0\) y \(\beta_1\) para los cuales se maximiza la probabilidad de obtener las observaciones.
El método de maximum likelihood, traducido como máxima verosimilitud, está ampliamente extendido en la estadística aunque su interpretación no siempre es trivial. En el enlace http://statgen.iop.kcl.ac.uk/bgim/mle/sslike_1.html se puede obtener una descripción muy buena sobre este concepto.
Los coeficientes estimados por el modelo para las variables se corresponden al valor del logaritmo de odds, o lo que es lo mismo, multiplica los odds por \(e_1^{\beta}\)
Podemos medir la precisión de los coeficientes estimados a partir de sus errores estándar. Además, en este modelo se emplea el estadístico Z para obtener el nivel de significancia del predictor (p-value), a diferencia del estadístico t en regresión lineal, aunque juegan el mismo papel. Por ejemplo, el estadístico \(z\) asociado a \(\beta_1\) sería igual a \[ \hat{\beta_1}/SE(\hat{\beta_1}) \]
Un valor alto (absoluto) de \(Z\) indica la evidencia en contra de la hipótesis nula \[ H_0 : \beta_1 = 0\\ vs\\ H_1 : \beta_1 \neq 0 \]
la cual implica que la probabilidad de éxito no depende de la variable independiente \(X\): \[ p(X)=\frac{e^{\beta_0}}{1+e^{\beta_0}} \]
Si el p-value es menor que el nivel de significancia establecido, podemos deducir que hay una relación entre el predictor \(X\) y la probabilidad de éxito.
La ordenada en el origen \(\beta_1\) estimada en el modelo no suele ser de interés.
La regresión logística múltiple es una extensión del modelo de regresión logística simple en el que se predice una respuesta binaria en función de múltiples predictores, que pueden ser tanto continuos como categóricos. La ecuación con la que podemos obtener las predicciones en este caso es \[
p(X)=\frac{e^{\beta_0+\beta_1X_1+\beta_2X_2+\cdots+\beta_pX_p}}{1+e^{\beta_0+\beta_1X_1+\beta_2X_2+\cdots+\beta_pX_p}}
\]
\[ log \left(\frac{p(X)}{1-p(X)} \right)= \beta_0+\beta_1X_1+\beta_2X_2+\cdots+\beta_pX_p \] donde \(X=(X_1, \ldots, X_p)\) son los \(p\) predictores
De nuevo usamos el método de máxima verosimilitud para estimar los coeficientes \(\beta_0, \beta_1, \beta_2, \cdots, \beta_p\). Cada coeficiente se interpreta manteniendo fijos al resto.
Regresando al ejemplo…
La comparación de algunos modelos GLM considerando la distribución binomial
fit1 <- glm(FPS~Naph+Acen+Fluor+Phena+Anth+Benzo_b+Benzo_a+Indeno,
family=quasibinomial(link ="logit"), data=tumor)
summary(fit1)
##
## Call:
## glm(formula = FPS ~ Naph + Acen + Fluor + Phena + Anth + Benzo_b +
## Benzo_a + Indeno, family = quasibinomial(link = "logit"),
## data = tumor)
##
## Deviance Residuals:
## Min 1Q Median 3Q Max
## -2.30667 -0.07428 0.00000 0.00583 1.12062
##
## Coefficients:
## Estimate Std. Error t value Pr(>|t|)
## (Intercept) -1.8532 0.9212 -2.012 0.0520 .
## Naph -1.2525 0.6482 -1.932 0.0614 .
## Acen -3.8536 3.6468 -1.057 0.2979
## Fluor -2.1739 1.1903 -1.826 0.0763 .
## Phena 5.6311 2.7633 2.038 0.0492 *
## Anth -9.6198 5.5997 -1.718 0.0947 .
## Benzo_b -1.5757 5.0620 -0.311 0.7574
## Benzo_a -0.9108 6.3309 -0.144 0.8864
## Indeno 4.9126 379.3903 0.013 0.9897
## ---
## Signif. codes: 0 '***' 0.001 '**' 0.01 '*' 0.05 '.' 0.1 ' ' 1
##
## (Dispersion parameter for quasibinomial family taken to be 0.4687672)
##
## Null deviance: 60.633 on 43 degrees of freedom
## Residual deviance: 10.375 on 35 degrees of freedom
## AIC: NA
##
## Number of Fisher Scoring iterations: 18
fit2 <- glm(FPS~Naph+Acen+Fluor+Phena+Anth+Benzo_b+Benzo_a,
family=quasibinomial(link ="logit"), data=tumor)
summary(fit2)
##
## Call:
## glm(formula = FPS ~ Naph + Acen + Fluor + Phena + Anth + Benzo_b +
## Benzo_a, family = quasibinomial(link = "logit"), data = tumor)
##
## Deviance Residuals:
## Min 1Q Median 3Q Max
## -2.6735 -0.2392 0.0000 0.1075 1.4462
##
## Coefficients:
## Estimate Std. Error t value Pr(>|t|)
## (Intercept) -3.5402 1.5056 -2.351 0.0243 *
## Naph -0.7853 0.4741 -1.656 0.1063
## Acen 1.0902 0.8888 1.227 0.2280
## Fluor -1.2065 0.7646 -1.578 0.1233
## Phena 3.6541 1.9141 1.909 0.0643 .
## Anth -4.5937 3.4128 -1.346 0.1867
## Benzo_b -2.0161 4.3075 -0.468 0.6426
## Benzo_a -1.0455 5.9689 -0.175 0.8619
## ---
## Signif. codes: 0 '***' 0.001 '**' 0.01 '*' 0.05 '.' 0.1 ' ' 1
##
## (Dispersion parameter for quasibinomial family taken to be 1.080843)
##
## Null deviance: 60.633 on 43 degrees of freedom
## Residual deviance: 13.589 on 36 degrees of freedom
## AIC: NA
##
## Number of Fisher Scoring iterations: 9
fit3 <- glm(FPS~Naph+Acen+Fluor+Phena+Anth+Benzo_b,
family=quasibinomial(link ="logit"),data=tumor)
summary(fit3)
##
## Call:
## glm(formula = FPS ~ Naph + Acen + Fluor + Phena + Anth + Benzo_b,
## family = quasibinomial(link = "logit"), data = tumor)
##
## Deviance Residuals:
## Min 1Q Median 3Q Max
## -2.6698 -0.2345 0.0000 0.1088 1.4550
##
## Coefficients:
## Estimate Std. Error t value Pr(>|t|)
## (Intercept) -3.5799 1.4679 -2.439 0.0197 *
## Naph -0.7804 0.4635 -1.684 0.1007
## Acen 1.0907 0.8746 1.247 0.2202
## Fluor -1.1981 0.7503 -1.597 0.1188
## Phena 3.6401 1.8807 1.936 0.0606 .
## Anth -4.5648 3.3545 -1.361 0.1818
## Benzo_b -2.0444 4.0718 -0.502 0.6186
## ---
## Signif. codes: 0 '***' 0.001 '**' 0.01 '*' 0.05 '.' 0.1 ' ' 1
##
## (Dispersion parameter for quasibinomial family taken to be 1.043656)
##
## Null deviance: 60.633 on 43 degrees of freedom
## Residual deviance: 13.626 on 37 degrees of freedom
## AIC: NA
##
## Number of Fisher Scoring iterations: 9
fit4 <- glm(FPS~Naph+Acen+Fluor+Phena+Anth,
family=quasibinomial(link ="logit"),data=tumor)
summary(fit4)
##
## Call:
## glm(formula = FPS ~ Naph + Acen + Fluor + Phena + Anth, family = quasibinomial(link = "logit"),
## data = tumor)
##
## Deviance Residuals:
## Min 1Q Median 3Q Max
## -2.70673 -0.23032 0.00000 0.09488 1.43520
##
## Coefficients:
## Estimate Std. Error t value Pr(>|t|)
## (Intercept) -3.7834 1.5166 -2.495 0.0171 *
## Naph -0.7322 0.4647 -1.576 0.1234
## Acen 1.0006 0.8232 1.215 0.2317
## Fluor -1.1342 0.7391 -1.535 0.1332
## Phena 3.5245 1.8712 1.884 0.0673 .
## Anth -4.3335 3.2829 -1.320 0.1947
## ---
## Signif. codes: 0 '***' 0.001 '**' 0.01 '*' 0.05 '.' 0.1 ' ' 1
##
## (Dispersion parameter for quasibinomial family taken to be 1.115343)
##
## Null deviance: 60.633 on 43 degrees of freedom
## Residual deviance: 14.016 on 38 degrees of freedom
## AIC: NA
##
## Number of Fisher Scoring iterations: 9
fit5 <- glm(FPS~Naph+Fluor+Phena+Anth,
family=quasibinomial(link ="logit"),data=tumor)
summary(fit5)
##
## Call:
## glm(formula = FPS ~ Naph + Fluor + Phena + Anth, family = quasibinomial(link = "logit"),
## data = tumor)
##
## Deviance Residuals:
## Min 1Q Median 3Q Max
## -2.66879 -0.32010 0.00041 0.16958 1.38323
##
## Coefficients:
## Estimate Std. Error t value Pr(>|t|)
## (Intercept) -2.9457 1.1671 -2.524 0.0158 *
## Naph -0.4786 0.3175 -1.507 0.1399
## Fluor -0.6149 0.4047 -1.519 0.1367
## Phena 2.2874 1.0617 2.154 0.0374 *
## Anth -2.1305 1.9057 -1.118 0.2704
## ---
## Signif. codes: 0 '***' 0.001 '**' 0.01 '*' 0.05 '.' 0.1 ' ' 1
##
## (Dispersion parameter for quasibinomial family taken to be 1.042266)
##
## Null deviance: 60.633 on 43 degrees of freedom
## Residual deviance: 16.376 on 39 degrees of freedom
## AIC: NA
##
## Number of Fisher Scoring iterations: 8
fit6 <- glm(FPS~Naph+Fluor+Phena,
family=quasibinomial(link ="logit"),data=tumor)
summary(fit6)
##
## Call:
## glm(formula = FPS ~ Naph + Fluor + Phena, family = quasibinomial(link = "logit"),
## data = tumor)
##
## Deviance Residuals:
## Min 1Q Median 3Q Max
## -2.41590 -0.31185 0.00535 0.23319 1.74942
##
## Coefficients:
## Estimate Std. Error t value Pr(>|t|)
## (Intercept) -2.9992 0.9447 -3.175 0.00288 **
## Naph -0.3834 0.2232 -1.718 0.09348 .
## Fluor -0.3293 0.1911 -1.723 0.09259 .
## Phena 1.4327 0.4044 3.543 0.00102 **
## ---
## Signif. codes: 0 '***' 0.001 '**' 0.01 '*' 0.05 '.' 0.1 ' ' 1
##
## (Dispersion parameter for quasibinomial family taken to be 0.7028679)
##
## Null deviance: 60.633 on 43 degrees of freedom
## Residual deviance: 17.908 on 40 degrees of freedom
## AIC: NA
##
## Number of Fisher Scoring iterations: 7
fit7 <- glm(FPS~Fluor+Phena,
family=quasibinomial(link ="logit"),data=tumor)
summary(fit7)
##
## Call:
## glm(formula = FPS ~ Fluor + Phena, family = quasibinomial(link = "logit"),
## data = tumor)
##
## Deviance Residuals:
## Min 1Q Median 3Q Max
## -2.8849 -0.2994 0.0194 0.3426 0.9897
##
## Coefficients:
## Estimate Std. Error t value Pr(>|t|)
## (Intercept) -3.0823 1.5180 -2.030 0.0488 *
## Fluor -0.1671 0.2090 -0.800 0.4285
## Phena 0.9620 0.3705 2.596 0.0130 *
## ---
## Signif. codes: 0 '***' 0.001 '**' 0.01 '*' 0.05 '.' 0.1 ' ' 1
##
## (Dispersion parameter for quasibinomial family taken to be 1.829386)
##
## Null deviance: 60.633 on 43 degrees of freedom
## Residual deviance: 21.039 on 41 degrees of freedom
## AIC: NA
##
## Number of Fisher Scoring iterations: 6
fit8 <- glm(FPS~Phena,
family=quasibinomial(link ="logit"),data=tumor)
summary(fit8)
##
## Call:
## glm(formula = FPS ~ Phena, family = quasibinomial(link = "logit"),
## data = tumor)
##
## Deviance Residuals:
## Min 1Q Median 3Q Max
## -2.85599 -0.30226 0.02224 0.40526 1.08065
##
## Coefficients:
## Estimate Std. Error t value Pr(>|t|)
## (Intercept) -3.0631 1.4013 -2.186 0.03445 *
## Phena 0.8906 0.3253 2.737 0.00904 **
## ---
## Signif. codes: 0 '***' 0.001 '**' 0.01 '*' 0.05 '.' 0.1 ' ' 1
##
## (Dispersion parameter for quasibinomial family taken to be 1.725165)
##
## Null deviance: 60.633 on 43 degrees of freedom
## Residual deviance: 22.058 on 42 degrees of freedom
## AIC: NA
##
## Number of Fisher Scoring iterations: 6
Qualidade del ajuste de lo modelo
1-pchisq(22.058/1.725165,42)
## [1] 0.9999962
(X2 <- sum(resid(fit8, ty="deviance")^2)); 1-pchisq(X2, df.residual(fit8))
## [1] 22.05802
## [1] 0.9951933
hnp(fit8, print=TRUE,verb=TRUE,xlab="Theoretical quantile",ylab="Residual deviance")
## Quasi-binomial model
## Simulation 1 out of 99
## Simulation 2 out of 99
## Simulation 3 out of 99
## Simulation 4 out of 99
## Simulation 5 out of 99
## Simulation 6 out of 99
## Simulation 7 out of 99
## Simulation 8 out of 99
## Simulation 9 out of 99
## Simulation 10 out of 99
## Simulation 11 out of 99
## Simulation 12 out of 99
## Simulation 13 out of 99
## Simulation 14 out of 99
## Simulation 15 out of 99
## Simulation 16 out of 99
## Simulation 17 out of 99
## Simulation 18 out of 99
## Simulation 19 out of 99
## Simulation 20 out of 99
## Simulation 21 out of 99
## Simulation 22 out of 99
## Simulation 23 out of 99
## Simulation 24 out of 99
## Simulation 25 out of 99
## Simulation 26 out of 99
## Simulation 27 out of 99
## Simulation 28 out of 99
## Simulation 29 out of 99
## Simulation 30 out of 99
## Simulation 31 out of 99
## Simulation 32 out of 99
## Simulation 33 out of 99
## Simulation 34 out of 99
## Simulation 35 out of 99
## Simulation 36 out of 99
## Simulation 37 out of 99
## Simulation 38 out of 99
## Simulation 39 out of 99
## Simulation 40 out of 99
## Simulation 41 out of 99
## Simulation 42 out of 99
## Simulation 43 out of 99
## Simulation 44 out of 99
## Simulation 45 out of 99
## Simulation 46 out of 99
## Simulation 47 out of 99
## Simulation 48 out of 99
## Simulation 49 out of 99
## Simulation 50 out of 99
## Simulation 51 out of 99
## Simulation 52 out of 99
## Simulation 53 out of 99
## Simulation 54 out of 99
## Simulation 55 out of 99
## Simulation 56 out of 99
## Simulation 57 out of 99
## Simulation 58 out of 99
## Simulation 59 out of 99
## Simulation 60 out of 99
## Simulation 61 out of 99
## Simulation 62 out of 99
## Simulation 63 out of 99
## Simulation 64 out of 99
## Simulation 65 out of 99
## Simulation 66 out of 99
## Simulation 67 out of 99
## Simulation 68 out of 99
## Simulation 69 out of 99
## Simulation 70 out of 99
## Simulation 71 out of 99
## Simulation 72 out of 99
## Simulation 73 out of 99
## Simulation 74 out of 99
## Simulation 75 out of 99
## Simulation 76 out of 99
## Simulation 77 out of 99
## Simulation 78 out of 99
## Simulation 79 out of 99
## Simulation 80 out of 99
## Simulation 81 out of 99
## Simulation 82 out of 99
## Simulation 83 out of 99
## Simulation 84 out of 99
## Simulation 85 out of 99
## Simulation 86 out of 99
## Simulation 87 out of 99
## Simulation 88 out of 99
## Simulation 89 out of 99
## Simulation 90 out of 99
## Simulation 91 out of 99
## Simulation 92 out of 99
## Simulation 93 out of 99
## Simulation 94 out of 99
## Simulation 95 out of 99
## Simulation 96 out of 99
## Simulation 97 out of 99
## Simulation 98 out of 99
## Simulation 99 out of 99
influenceIndexPlot(fit8,vars=c('Studentized','Cook','Hat'),id.n=2)
Calculo del intervalo de confianza
confint(fit8)
## Waiting for profiling to be done...
## 2.5 % 97.5 %
## (Intercept) -7.1895614 -1.014511
## Phena 0.4044643 1.817368
OR2=exp(fit8$coefficients[-1])
Los intervalos del 95% de confianza para los parámetros del modelo, basados en la estadística de Wald:
ICbeta2=confint.default(fit8,level=0.95);ICbeta2
## 2.5 % 97.5 %
## (Intercept) -5.8097177 -0.3165542
## Phena 0.2529302 1.5281706
Los intervalos de confianza para las razones de probabilidad (odds ratio - OR), fijando el nivel de confianza del 95%:
ICOR2=exp(ICbeta2);ICOR2
## 2.5 % 97.5 %
## (Intercept) 0.002998276 0.7286555
## Phena 1.287793329 4.6097362
A través del comando a seguir los resultados de interés son condensados, para facilitar la interpretación de las medidas de razón de probabilidad y el análisis sobre la significancia de la asociación entre cada variable explicativa y la probabilidad del individuo de reportar un estado de salud no bueno.
round(cbind(OR2,ICOR2),3)
## OR2 2.5 % 97.5 %
## (Intercept) 2.436 0.003 0.729
## Phena 2.436 1.288 4.610
ilogit <- function (l) {
exp(l) / ( 1 + exp(l) )
}
fakelogit <- function (l) {
ifelse(l>.5, 1e6, -1e6)
}
ilogit <- function (l) { exp(l) / ( 1 + exp(l) ) } fakelogit <- function (l) { ifelse(l>.5, 1e6, -1e6) }
attach(tumor)
r <- glm(FPS~Phena, family=binomial,data=tumor)
plot(FPS~Phena,data=tumor,xlab="Phenantherene")
xx <- seq(min(Phena), max(Phena), length=200)
yy <- predict(r, data.frame(Phena=xx), type='response')
lines(xx,yy, col='blue', lwd=5, lty=2)
lines(xx, ilogit(r$coef[1]+xx*r$coef[2]))
legend( .60*par('usr')[1]+.40*par('usr')[2],
.4,
c('prediction with "predict"',
"prediction with the coefficients"),
col=c('blue', par('fg')),
lty=c(2,1), lwd=c(1,1))
title(main='Regresión Logística para FPS')
r <- glm(FPS~Fluor, family=binomial,data=tumor)
plot(FPS~Fluor,data=tumor,xlab="Fluoreno")
xx <- seq(min(Fluor), max(Fluor), length=200)
yy <- predict(r, data.frame(Fluor=xx), type='response')
lines(xx,yy, col='blue', lwd=5, lty=2)
lines(xx, ilogit(r$coef[1]+xx*r$coef[2]))
legend( .60*par('usr')[1]+.40*par('usr')[2],
.4,
c('predição com "previsão"',
"predição com os coeficientes"),
col=c('blue', par('fg')),
lty=c(2,1), lwd=c(1,1))
title(main='Regressão Logística para FPS')
r <- glm(FPS~Naph, family=binomial,data=tumor)
plot(FPS~Naph,data=tumor,xlab="Naphthalene")
xx <- seq(min(Naph), max(Naph), length=200)
yy <- predict(r, data.frame(Naph=xx), type='response')
lines(xx,yy, col='blue', lwd=5, lty=2)
lines(xx, ilogit(r$coef[1]+xx*r$coef[2]))
legend( .60*par('usr')[1]+.40*par('usr')[2],
.4,
c('predição com "previsão"',
"predição com os coeficientes"),
col=c('blue', par('fg')),
lty=c(2,1), lwd=c(1,1))
title(main='Regressão Logística para FPS')