Formas de ajustar una regresión logística con datos agrupados
Cuando se tiene datos agrupados a partir de una tabla de contingencia con dos variables binarias (por ejemplo, Hepatitis B (si, no) y Cirrosis (si, no). Se usa un dataframe con variable binaria y pesos (weight) (Aplicación 1)
Si no tienes datos binarios por fila sino solo conteos agrupados, usar la forma con cbind() es más directa. (Aplicación 2)
Se tiene un estudio para analizar la relación entre el virus de la Hepatitis B y la cirrosis hepática, a partir de un diseño de casos y control. Los resultados de una muestra de 400 pacientes se presentan en la tabla.
| Tipo | Cirrosis | No cirrosis | Totales |
|---|---|---|---|
| Hepatitis B (+) | 51 | 9 | 60 |
| Hepatitis B (−) | 149 | 191 | 340 |
| Totales | 200 | 200 | 400 |
Ajuste los datos a una regresión logística binaria con función de enlace logit.
Nota: Esta es una regresión logística binaria con datos agrupados por celdas de frecuencia.
Variable respuesta:
\(Y = \text{Grupo paciente (1 = Cirrosis, 0 =
No cirrosis)}\)
\(\pi = P(Y = 1) = P(\text{paciente con
cirrosis})\)
Variable explicativa:
\(X = \text{Hepatitis (1 = (+), 0 =
(−))}\)
Componente aleatorio:
\(Y \sim \text{Binomial}(n,
\pi)\)
Componente sistemático:
\(\eta = X'\beta = \beta_0 + \beta_1
X_1\)
Función de enlace:
Logit (logístico)
\[ P(Y = 1) = \pi_i = \frac{\exp(\beta_0 + \beta_1 X)}{1 + \exp(\beta_0 + \beta_1 X)} = \frac{1}{1 + \exp(-(\beta_0 + \beta_1 X))} \]
\[ \text{logit}(P(Y = 1)) = \text{logit}(\pi_i) = \log\left(\frac{\pi_i}{1 - \pi_i}\right) = \beta_0 + \beta_1 X \]
Cuando se tiene una tabla de frecuencias (datos agrupados), lo mejor es construir un dataframe resumido por celdas, que contenga:
Paso 1: Identifica las combinaciones de variables (Tienes 4 combinaciones posibles entre Hepatitis y Cirrosis. siempre es el producto de la cantidad de clases)
Paso 2: Asocia las frecuencias (n) (Usa los datos de la tabla original para indicar cuántas veces aparece cada combinación)
Paso 3: Construye el DataFrame en R
# Entrada de datos
Datos1 <- data.frame(
Y_Cirro = c(1, 1, 0, 0), #El primer registro: tiene hepatitis y cirrosis 51...
X_Hepa = c(1, 0, 1, 0),
n = c(51, 149, 9, 191)
)
Datos1
Y_Cirro X_Hepa n
1 1 1 51
2 1 0 149
3 0 1 9
4 0 0 191
# Estimación de los coeficientes de regresión. se coloca n por que la data viene de una tabla agrupada
Modelo1<-glm(Y_Cirro~X_Hepa,weight=n,family=binomial,data=Datos1)
summary(Modelo1)
Call:
glm(formula = Y_Cirro ~ X_Hepa, family = binomial, data = Datos1,
weights = n)
Coefficients:
Estimate Std. Error z value Pr(>|z|)
(Intercept) -0.2483 0.1093 -2.272 0.0231 *
X_Hepa 1.9829 0.3777 5.250 1.52e-07 ***
---
Signif. codes: 0 '***' 0.001 '**' 0.01 '*' 0.05 '.' 0.1 ' ' 1
(Dispersion parameter for binomial family taken to be 1)
Null deviance: 554.52 on 3 degrees of freedom
Residual deviance: 516.86 on 2 degrees of freedom
AIC: 520.86
Number of Fisher Scoring iterations: 5
Intrepretación de los coeficientes: log-odds
Intercepto (β₀ = -0.2483): Cuando la variable X_Hepa vale 0 (es decir, en ausencia del antecedente de hepatitis), el log-odds de que una persona tenga cirrosis hepática es -0.2483. Esto corresponde a una probabilidad base de aproximadamente 0.438, bajo esta condición.
X_Hepa (β₁ = 1.9829): Si la persona tiene antecedentes de hepatitis, el log-odds de tener cirrosis hepática aumenta en 1.9829 unidades, lo que implica un aumento en la probabilidad, manteniendo constantes las demás variables
# Cálculo de los Odds Ratios
exp(coef(Modelo1))
(Intercept) X_Hepa
0.7801047 7.2639821
Interpretacion de los odds-ratio:
Intercepto (OR = 0.7801): Cuando la variable X_Hepa vale 0 (el paciente no presenta antecendes de hepatitis), las odds de tener cirrosis hepática son aproximadamente 0.7801, lo que indica un nivel base moderado de probabilidad de cirrosis en estas condiciones. Esto corresponde a una probabilidad base de aproximadamente 0.7801 / (1 + 0.7801) ≈ 0.438, es decir, 43.8%.
X_Hepa (X1 = 7.2640): Si la persona tiene antecedentes de hepatitis, las odds de tener cirrosis hepática se multiplican por 7.2640 (es decir, aumentan un 626.40%), manteniendo constantes las demás variables.
Interpretación en términos de probabilidad:
La probabilidad estimada de tener cirrosis es de aproximadamente 43.8% para pacientes que no tuvieron hepatitis B y aumenta a aproximadamente 85.0% para quienes sí la tuvieron.
La probabilidad de tener cirrosis aumenta en un 94.1% en pacientes con hepatitis B comparado con quienes no la tuvieron.
85/43.8 = 1.94 . es 0.94
Esto representa un aumento relativo cercano al 100%, es decir, la probabilidad de tener cirrosis casi se duplica en los pacientes que han tenido hepatitis B.
Cálculo de probabilidades
\[ \eta = -0.2483 + 1.9829 \cdot 0 = -0.2483 \]
\[ P(Y = 1 \mid X = 0) = \frac{e^{-0.2483}}{1 + e^{-0.2483}} \approx \frac{0.7801}{1 + 0.7801} \approx 0.438 \]
\[ \eta = -0.2483 + 1.9829 \cdot 1 = 1.7346 \]
\[ P(Y = 1 \mid X = 1) = \frac{e^{1.7346}}{1 + e^{1.7346}} \approx \frac{5.66}{1 + 5.66} \approx 0.850 \]
Interpretación en términos de probabilidad:
La probabilidad estimada de tener cirrosis es de aproximadamente 43.8% para pacientes que no tuvieron hepatitis B y aumenta a aproximadamente 85.0% para quienes sí la tuvieron.
La probabilidad de tener cirrosis aumenta en un 94.1% en pacientes con hepatitis B comparado con quienes no la tuvieron.
Esto representa un aumento relativo cercano al 100%, es decir, la probabilidad de tener cirrosis casi se duplica en los pacientes que han tenido hepatitis B.
calculo del aumento relativo*
Tenemos:
\[ \text{Aumento relativo} = \frac{p_1 - p_0}{p_0} = \frac{0.850 - 0.438}{0.438} = \frac{0.412}{0.438} \approx 0.941 \]
\[ 0.941 \times 100 = 94.1\% \]
# IC para los coeficientes
NC=0.95
confint.default(Modelo1, level=NC)
2.5 % 97.5 %
(Intercept) -0.4625559 -0.03409838
X_Hepa 1.2426280 2.72322835
Para \(\beta_1\):
\[ IC(\beta_1) = b_1 \pm Z_{1-\frac{\alpha}{2}} \cdot S_{b_1} = 1.983 \pm 1.96 \times 0.377 \implies (1.24, 2.72) \]
# Nivel de significancia
alpha <- 0.05
# Punto crítico para el intervalo de confianza (IC) al 95%
z <- qnorm(1 - alpha / 2)
# Parámetros del modelo
b1 <- 1.983
sb1 <- 0.377
# Cálculo del intervalo de confianza
ic_lower <- b1 - z * sb1
ic_upper <- b1 + z * sb1
# Resultado
c(ic_lower, ic_upper)
[1] 1.244094 2.721906
Interpretación
Con un nivel de confianza del 95%:
Intercepto: El coeficiente de regresión \(\beta_0\) está entre -0.463 y -0.034, indicando un efecto negativo significativo en el log-odds, ya que el intervalo no incluye cero.
X_Hepa: El coeficiente de regresión \(\beta_1\) está entre 1.243 y 2.723, indicando un efecto positivo significativo de la variable X_Hepa sobre el log-odds, ya que el intervalo no incluye cero.
# IC para los OR
NC=0.95
exp(confint.default(Modelo1, level=NC))
2.5 % 97.5 %
(Intercept) 0.6296722 0.9664764
X_Hepa 3.4647068 15.2294089
NC <- 0.95 # Nivel de confianza
alpha <- 1 - NC
z <- qnorm(1 - alpha / 2) # Valor crítico para el nivel de confianza
b1 <- coef(Modelo1)[2] # Asumiendo que el coeficiente de interés es el segundo
sb1 <- sqrt(diag(vcov(Modelo1)))[2] # Error estándar del mismo coeficiente
ic_logit <- c(b1 - z * sb1, b1 + z * sb1)
ic_or <- exp(ic_logit)
ic_or
X_Hepa X_Hepa
3.464707 15.229409
Interpretación:
Hipotesis
summary(Modelo1)
Call:
glm(formula = Y_Cirro ~ X_Hepa, family = binomial, data = Datos1,
weights = n)
Coefficients:
Estimate Std. Error z value Pr(>|z|)
(Intercept) -0.2483 0.1093 -2.272 0.0231 *
X_Hepa 1.9829 0.3777 5.250 1.52e-07 ***
---
Signif. codes: 0 '***' 0.001 '**' 0.01 '*' 0.05 '.' 0.1 ' ' 1
(Dispersion parameter for binomial family taken to be 1)
Null deviance: 554.52 on 3 degrees of freedom
Residual deviance: 516.86 on 2 degrees of freedom
AIC: 520.86
Number of Fisher Scoring iterations: 5
# Prueba de significación del modelo de regresión
Alfa=0.05
#chi2 critico
Chi_Tab=qchisq(1-Alfa,Modelo1$df.residual); Chi_Tab
[1] 5.991465
# Prueba de Bondad de Ajuste (Goodness-of-Fit):
#Objetivo: Verificar si el modelo actual se ajusta bien a los datos (sin sobre/subestimación). : Usa directamente la Residual Deviance (516.86) con sus gl residuales (2).
p_valor=1-pchisq(Modelo1$deviance,Modelo1$df.residual); p_valor
[1] 0
Conclusión
# Cálculo del Coeficiente de determinación
R2= (1-Modelo1$deviance/Modelo1$null.deviance)*100; R2
[1] 6.79042
Interpretación:
| Valor de pseudo R² | Calidad del ajuste del modelo | Interpretación general |
|---|---|---|
| 0.00 – 0.10 | Muy bajo | El modelo explica muy poca variabilidad. Poca capacidad predictiva. |
| 0.10 – 0.20 | Bajo | Ajuste pobre. El modelo tiene información útil, pero limitada. |
| 0.20 – 0.40 | Moderado | Ajuste aceptable. El modelo explica una proporción razonable de la variabilidad. |
| > 0.40 | Bueno | Ajuste fuerte. El modelo explica bien la variabilidad en los datos. |
Prueba estadistica
\[ Z_c = \frac{\hat{\beta}_1 - \beta_1}{S_{\hat{\beta}_1}} \]
# Coeficiente estimado
b1 <- coef(Modelo1)[2]
# Error estándar
sb1 <- sqrt(diag(vcov(Modelo1)))[2]
# Valor hipotético bajo H0 (usualmente 0)
beta_0 <- 0
# Cálculo del estadístico Z con la resta explícita
Zc <- (b1 - beta_0) / sb1
Zc
X_Hepa
5.249854
# Cálculo del p-valor (dos colas)
p_value <- 2 * (1 - pnorm(abs(Zc)))
cat("p-valor:", p_value)
p-valor: 1.522198e-07
#cat(sprintf("p-valor: %.8f\n", p_value))
Interpretación:
Con un nivel de significación de 0.05, se puede afirmar que la presencia hepatitis B permite explicar la existencia de cirrosis. La hepatitis B, es significativa la modelo
Todos los coeficientes, incluyendo el intercepto, son evaluados con la misma hipótesis nula estándar: que su valor es 0 (se le resta cero)
# Estimación de valores predecidos (Probabilidades)
Xo=c(1,1); #La probabilida de tener cirrocis si tiene hepatitis
P_Xo=sum(Xo*coef(Modelo1))
P1=1/(1+exp(-(P_Xo))); P1
[1] 0.85
Xo=c(1,0); P_Xo=sum(Xo*coef(Modelo1)) #La probabilida de tener cirrocis si no tiene hepatitis
P2=1/(1+exp(-(P_Xo))); P2
[1] 0.4382353
Interpretación:
X_Hepa=c(1);
value_pred=predict(Modelo1,newdata = as.data.frame(X_Hepa))
#Probabilida de tener cirrocis cuando se tiene hepatitis
exp(value_pred)/(1+(exp(value_pred)))
1
0.85
Se comparan dos probabilidades obtenidas a partir del modelo de regresión logística:
\(P(Y = 1 \mid X = 1) = 0.850\): Probabilidad de tener cirrosis si el paciente ha tenido hepatitis B.
\(P(Y = 1 \mid X = 0) = 0.438\): Probabilidad de tener cirrosis si el paciente no ha tenido hepatitis B.
Conclusión
Forma: conteos y fracasos
Se ha realizado un estudio con la finalidad de establecer una relación entre la edad y la mortalidad por cardiopatía isquémica (CI) en pacientes diabéticos. Para el estudio se evaluó a 100 pacientes fallecidos, estableciéndose los rangos de edades y la causa del fallecimiento (CI: Cardiopatía isquémica u otra causa). Los datos se presentan en la siguiente tabla:
| Edad | Causa de muerte: Otra | Causa de muerte: CI | Total (n) |
|---|---|---|---|
| 20–29 | 9 | 1 | 10 |
| 30–34 | 13 | 2 | 15 |
| 35–39 | 9 | 3 | 12 |
| 40–44 | 10 | 5 | 15 |
| 45–49 | 7 | 6 | 13 |
| 50–54 | 3 | 5 | 8 |
| 55–59 | 4 | 13 | 17 |
| 60–69 | 2 | 8 | 10 |
| Total | 57 | 43 | 100 |
Variable dependiente:
Variable predictora:
\[ Y_i \sim \text{Binomial}(n_i, \pi_i), \quad \text{con: } \mu_i = \mathbb{E}(Y_i) = n_i \pi_i, \quad V(Y_i) = n_i \pi_i (1 - \pi_i) \quad \text{para } i = 1, 2, \dots, n \]
Dónde:
\[
\pi_i = P(\text{Muerte por CI})
\]
\[ \eta_i = X_i' \beta = \beta_0 + \beta_1 x_i \]
\[ g(\mu_i) = \text{logit}(\pi_i) = \log\left(\frac{\pi_i}{1 - \pi_i}\right) = \eta_i \]
\[ \log\left(\frac{\pi_i}{1 - \pi_i}\right) = \beta_0 + \beta_1 x_i \]
[ P(Y = 1) = _i = _
Edad<-c(25,32,37,42,47,52,57,65) #marca de clase
CI<-c(1,2,3,5,6,5,13,8)
n<-c(10,15,12,15,13,8,17,10)
Datos2<-data.frame(CI=CI,Edad=Edad,n=n)
# Estimación de los coeficientes de regresión
Modelo2<-glm(cbind(CI,n-CI)~Edad,family=binomial(link=logit))
summary(Modelo2)
Call:
glm(formula = cbind(CI, n - CI) ~ Edad, family = binomial(link = logit))
Coefficients:
Estimate Std. Error z value Pr(>|z|)
(Intercept) -5.02979 1.08306 -4.644 3.42e-06 ***
Edad 0.10471 0.02301 4.551 5.35e-06 ***
---
Signif. codes: 0 '***' 0.001 '**' 0.01 '*' 0.05 '.' 0.1 ' ' 1
(Dispersion parameter for binomial family taken to be 1)
Null deviance: 28.70152 on 7 degrees of freedom
Residual deviance: 0.55876 on 6 degrees of freedom
AIC: 25.696
Number of Fisher Scoring iterations: 4
\[ P(Y = 1) = \hat{\pi}_i = \frac{\exp(-5.029 + 0.105X)}{1 + \exp(-5.029 + 0.105X)} \]
\[ \text{logit}(\hat{\pi}_i) = \log\left(\frac{\hat{\pi}_i}{1 - \hat{\pi}_i}\right) = -5.029 + 0.105X \] Intrepretación de los coeficientes: log-odds
Intercepto (β₀ = -5.0298): Cuando la edad es 0 años, el log-odds de tener CI es -5.0298, lo que indica una probabilidad base muy baja de CI en estas condiciones.
Edad (β₁ = 0.1047): Por cada año adicional de edad, el log-odds de tener complicaciones isquémicas (CI) aumenta en 0.1047 unidades, lo que implica un aumento en la probabilidad, manteniendo constantes las demás variables.
# Cálculo de los Odds Ratios
exp(coef(Modelo2))
(Intercept) Edad
0.006540202 1.110388795
Intepretacion: OR
Intercepto (OR = 0.0066): Cuando la edad es 0 años, las odds de tener CI son aproximadamente 0.0066, lo que corresponde a una probabilidad aproximadamente de: 0.0065/1+0.0065 = 0.0065
Edad (X1 = 1.1104): Por cada año adicional de edad, las odds de tener CI se multiplican por 1.1104 (es decir, aumentan un 11.04%), manteniendo constantes las demás variables.
Para calcular el OR por cada 5 años, multiplicamos el coeficiente 0.105 por 5, lo que da 0.525, y luego calculamos e elevado a 0.525, que es aproximadamente 1.690; por lo tanto, por cada 5 años adicionales, las odds de morir por CI aumentan un 69% (no 11%).
Tener en consideracón No es correcto hacer: exp(0.105) × 5 porque el OR por unidad (un año) es e^(0.105), pero para 5 unidades (5 años) el OR es: e^(0.105 × 5) = e^(0.525) ≈ 1.690. Multiplicar el OR de 1 año por 5 no tiene sentido porque los OR se multiplican de forma exponencial, no lineal.
# IC para los coeficientes
NC=0.95
confint.default(Modelo2, level=NC)
2.5 % 97.5 %
(Intercept) -7.15253746 -2.9070369
Edad 0.05961165 0.1498088
Interpertación:
Con un nivel de confianza del 95%:
Intercepto: El coeficiente de regresión \(\beta_0\) está entre -7.15 y -2.91, indicando un efecto negativo significativo en el log-odds, ya que el intervalo no incluye cero.
Edad: El coeficiente de regresión \(\beta_1\) está entre 0.06 y 0.15, indicando un efecto positivo significativo de la variable Edad sobre el log-odds, ya que el intervalo no incluye cero.
# IC para OR
NC=0.95
exp(confint.default(Modelo2, level=NC))
2.5 % 97.5 %
(Intercept) 0.000782875 0.05463739
Edad 1.061424267 1.16161210
Interpertación:
Hipotesis
summary(Modelo2)
Call:
glm(formula = cbind(CI, n - CI) ~ Edad, family = binomial(link = logit))
Coefficients:
Estimate Std. Error z value Pr(>|z|)
(Intercept) -5.02979 1.08306 -4.644 3.42e-06 ***
Edad 0.10471 0.02301 4.551 5.35e-06 ***
---
Signif. codes: 0 '***' 0.001 '**' 0.01 '*' 0.05 '.' 0.1 ' ' 1
(Dispersion parameter for binomial family taken to be 1)
Null deviance: 28.70152 on 7 degrees of freedom
Residual deviance: 0.55876 on 6 degrees of freedom
AIC: 25.696
Number of Fisher Scoring iterations: 4
Decisión estadística:
# Prueba de significación del modelo de regresión
Alfa=0.05
Chi_Tab=qchisq(1-Alfa,Modelo2$df.residual); Chi_Tab
[1] 12.59159
p_valor=1-pchisq(Modelo2$deviance,Modelo2$df.residual); p_valor
[1] 0.9970483
Conclusión
# Coeficiente estimado
b1 <- coef(Modelo2)[2]
# Error estándar
sb1 <- sqrt(diag(vcov(Modelo2)))[2]
# Valor hipotético bajo H0 (usualmente 0)
beta_0 <- 0
# Cálculo del estadístico Z con la resta explícita
Zc <- (b1 - beta_0) / sb1
Zc
Edad
4.55066
# Cálculo del p-valor (dos colas)
p_value <- 2 * (1 - pnorm(abs(Zc)))
cat("p-valor:", p_value)
p-valor: 5.347778e-06
#cat(sprintf("p-valor: %.8f\n", p_value))
Conclusión
summary(Modelo2)
Call:
glm(formula = cbind(CI, n - CI) ~ Edad, family = binomial(link = logit))
Coefficients:
Estimate Std. Error z value Pr(>|z|)
(Intercept) -5.02979 1.08306 -4.644 3.42e-06 ***
Edad 0.10471 0.02301 4.551 5.35e-06 ***
---
Signif. codes: 0 '***' 0.001 '**' 0.01 '*' 0.05 '.' 0.1 ' ' 1
(Dispersion parameter for binomial family taken to be 1)
Null deviance: 28.70152 on 7 degrees of freedom
Residual deviance: 0.55876 on 6 degrees of freedom
AIC: 25.696
Number of Fisher Scoring iterations: 4
R2= (1-Modelo2$deviance/Modelo2$null.deviance)*100; R2
[1] 98.05321
Xo=c(1,30); P_Xo=sum(Xo*coef(Modelo2))
P1=1/(1+exp(-(P_Xo))); P1
[1] 0.1314178
Conclusión
# Estimación de los valores predecidos para cada observacion. (Probabilidades)
fitted(Modelo2)
1 2 3 4 5 6 7
0.08225981 0.15721996 0.23948427 0.34706671 0.47292480 0.60232073 0.71883605
8
0.85524894
round(fitted(Modelo2))
1 2 3 4 5 6 7 8
0 0 0 0 0 1 1 1
Interpretación:
En un estudio de mercado se desea investigar los principales factores que pueden influir para tener éxito en introducir un nuevo producto al mercado. Entonces, el objetivo es desarrollar un modelo que permita predecir si una empresa tendrá éxito o no. En el siguiente cuadro se presentan las variables.
Archivo de datos:
MLGA_PT_Clase_05_Datos01.csv
| Variable | Descripción | Valores | Variables diseño |
|---|---|---|---|
| ÉXITO (Dependiente) | Resultado del intento de introducir un nuevo producto en el mercado | 0 = Fracaso 1 = Éxito |
|
| PUBLICIDAD | Gastos en promoción y publicidad (miles soles) | Dólares | |
| GRA_NOVE | Grado de novedad del producto | 1 = Mejoras sustanciales 2 = Productos nuevos |
1 0 |
| TIPO | Tipo de producto | 1 = Consumo final 2 = Industrial |
1 0 |
| DPTO_MER | Posee un Dpto. formal de investigación de mercado | 1 = Sí 2 = No |
1 0 |
| INT_TEC | Intensidad tecnológica del sector de actividad al que pertenece la empresa | 1 = Baja 2 = Media 3 = Alta |
1 0 0 |
| 0 1 0 |
|||
| PERSONAL | Número de personal | Número |
#Lectura de datos:
Datos3 <- read.table("MLGA_PT_Clase_05_Datos01.csv", header=TRUE, sep=",")
# Si ya habías attachado Datos3 antes, lo detachamos para evitar conflictos
if ("Datos3" %in% search()) {
detach("Datos3")
}
# Ahora attachamos el nuevo Datos3
attach(Datos3)
str(Datos3)
'data.frame': 156 obs. of 8 variables:
$ Exito : int 1 0 1 0 0 0 0 1 1 0 ...
$ Publicidad: num 1.79 8.12 1.95 2.3 6.6 4.03 5.74 2.3 2.3 5.16 ...
$ Gra_Nov : int 1 0 1 0 0 0 0 1 0 0 ...
$ Tipo : int 0 0 0 1 0 0 0 0 0 0 ...
$ Dpto_Mer : int 0 0 0 0 0 0 0 0 0 0 ...
$ Int_Tec1 : int 1 1 1 1 0 0 0 1 1 1 ...
$ Int_Tec2 : int 0 0 1 0 1 1 1 0 0 0 ...
$ Personal : int 1 127 2 1 60 5 15 0 2 11 ...
sapply(Datos3, unique)
$Exito
[1] 1 0
$Publicidad
[1] 1.79 8.12 1.95 2.30 6.60 4.03 5.74 5.16 3.53 4.52 2.48 3.22 3.74 3.04 3.00
[16] 5.84 4.25 3.69 4.01 6.09 2.77 3.40 2.71 4.65 4.61 3.91 3.14 4.09 5.54 3.09
[31] 3.50 3.66 5.99 6.25 3.47 2.40 3.61 2.56 3.64 2.20 4.32 1.61 4.56 4.47 3.18
[46] 2.64 4.38 3.87 3.26 3.81 2.08 4.34 2.89 4.94 5.08 4.50 3.33 3.30 3.37 4.60
[61] 3.89 3.43 5.01 4.22 4.93 5.02 3.56 5.23 4.96 4.70 3.58 5.14
$Gra_Nov
[1] 1 0
$Tipo
[1] 0 1
$Dpto_Mer
[1] 0 1
$Int_Tec1
[1] 1 0
$Int_Tec2
[1] 0 1
$Personal
[1] 1 127 2 60 5 15 0 11 3 48 4 7 34 70 10 8 6 12 40
[20] 27 9 20 14 22
Modelo3<-glm(Exito~Publicidad+Gra_Nov+Tipo+Dpto_Mer+Int_Tec1+Int_Tec2+Personal,family=binomial(link=logit))
Warning: glm.fit: fitted probabilities numerically 0 or 1 occurred
summary(Modelo3)
Call:
glm(formula = Exito ~ Publicidad + Gra_Nov + Tipo + Dpto_Mer +
Int_Tec1 + Int_Tec2 + Personal, family = binomial(link = logit))
Coefficients:
Estimate Std. Error z value Pr(>|z|)
(Intercept) 8.4977 1.8785 4.524 6.08e-06 ***
Publicidad -2.0118 0.5006 -4.018 5.86e-05 ***
Gra_Nov 1.2226 0.5331 2.294 0.02182 *
Tipo -0.1468 0.7803 -0.188 0.85078
Dpto_Mer 3.5744 1.3663 2.616 0.00889 **
Int_Tec1 -2.1649 0.8142 -2.659 0.00784 **
Int_Tec2 -0.7107 0.8498 -0.836 0.40301
Personal -0.4220 0.1494 -2.825 0.00472 **
---
Signif. codes: 0 '***' 0.001 '**' 0.01 '*' 0.05 '.' 0.1 ' ' 1
(Dispersion parameter for binomial family taken to be 1)
Null deviance: 211.91 on 155 degrees of freedom
Residual deviance: 104.25 on 148 degrees of freedom
AIC: 120.25
Number of Fisher Scoring iterations: 8
Intrepretación de los coeficientes: log-odds
Intercepto (β₀ = 8.4977): Cuando todas las variables independientes valen 0, el log-odds del éxito es 8.4977, lo que indica un nivel base muy alto de probabilidad de éxito en estas condiciones.
Publicidad (β₁ = -2.0118): Por cada incremento de 1000 soles en el gasto en publicidad, el log-odds de éxito disminuye en 2.0118 unidades, lo que implica una disminución en la probabilidad de éxito, manteniendo constantes las demás variables.
Gra_Nov (β₂ = 1.2226): Si el producto representa mejoras sustanciales (comparado con uno totalmente nuevo), el log-odds de éxito aumenta en 1.2226 unidades, lo que implica un aumento en la probabilidad de éxito, manteniendo constantes las demás variables.
Tipo (β₃ = -0.1468): Si el producto es de consumo final (comparado con uno industrial), el log-odds de éxito disminuye en 0.1468 unidades, lo que implica una disminución en la probabilidad de éxito, manteniendo constantes las demás variables.
Dpto_Mer (β₄ = 3.5744): Si la empresa cuenta con un departamento de marketing, el log-odds de éxito aumenta en 3.5744 unidades, lo que implica un aumento en la probabilidad de éxito, manteniendo constantes las demás variables.
Int_Tec1 (β₅ = -2.1649): Si la empresa pertenece a un sector con intensidad tecnológica baja (comparado con alta), el log-odds de éxito disminuye en 2.1649 unidades, lo que implica una disminución en la probabilidad de éxito, manteniendo constantes las demás variables.
Int_Tec2 (β₆ = -0.7107): Si la empresa pertenece a un sector con intensidad tecnológica media (comparado con alta), el log-odds de éxito disminuye en 0.7107 unidades, lo que implica una disminución en la probabilidad de éxito, manteniendo constantes las demás variables.
Personal (β₇ = -0.4220): Por cada unidad adicional en la variable “Personal”, el log-odds de éxito disminuye en 0.4220 unidades, lo que implica una disminución en la probabilidad de éxito, manteniendo constantes las demás variables.
Intrepretación de los coeficientes: odds
# Cálculo de los Odds Ratios
exp(coef(Modelo3))
(Intercept) Publicidad Gra_Nov Tipo Dpto_Mer Int_Tec1
4903.2986087 0.1337529 3.3960089 0.8634787 35.6735951 0.1147567
Int_Tec2 Personal
0.4913186 0.6557207
Intercepto (OR = 4903.2986): Cuando todas las variables independientes valen cero, las odds de éxito son aproximadamente 4903.30, lo que indica un alto nivel base de probabilidad de éxito en estas condiciones. Esto corresponde a una probabilidad base de éxito de aproximadamente 4903.3 / (1 + 4903.3) ≈ 0.998 cuando todas las variables son cero.
Publicidad (X1 = 0.1338): Por cada unidad adicional de gasto en publicidad, las odds de éxito se multiplican por 0.1338 (es decir, disminuyen un 86.62%), manteniendo constantes las demás variables.
Gra_Nov (X2 = 3.3960): Si el producto representa mejoras sustanciales (vs. uno totalmente nuevo), las odds de éxito se multiplican por 3.3960 (es decir, aumentan un 239.60%), manteniendo constantes las demás variables.
Tipo (X3 = 0.8635): Si el producto es de consumo final (vs. industrial), las odds de éxito se multiplican por 0.8635 (es decir, disminuyen un 13.65%), manteniendo constantes las demás variables.
Dpto_Mer (X4 = 35.6736): Si la empresa cuenta con un departamento de marketing, las odds de éxito se multiplican por 35.6736 (es decir, aumentan un 3,467.36%), manteniendo constantes las demás variables.
Int_Tec1 (X5 = 0.1148): Si la empresa pertenece a un sector de baja intensidad tecnológica (vs. alta), las odds de éxito se multiplican por 0.1148 (es decir, disminuyen un 88.52%), manteniendo constantes las demás variables.
Int_Tec2 (X6 = 0.4913): Si la empresa pertenece a un sector de media intensidad tecnológica (vs. alta), las odds de éxito se multiplican por 0.4913 (es decir, disminuyen un 50.87%), manteniendo constantes las demás variables.
Personal (X7 = 0.6557): Por cada unidad adicional en ‘Personal’, las odds de éxito se multiplican por 0.6557 (es decir, disminuyen un 34.43%), manteniendo constantes las demás variables.
# IC para los coeficientes
NC=0.95
confint.default(Modelo3, level=NC)
2.5 % 97.5 %
(Intercept) 4.8158827 12.1794442
Publicidad -2.9929797 -1.0305423
Gra_Nov 0.1778139 2.2673879
Tipo -1.6760905 1.3825183
Dpto_Mer 0.8964725 6.2523490
Int_Tec1 -3.7608114 -0.5690710
Int_Tec2 -2.3762774 0.9549523
Personal -0.7147700 -0.1292708
Intepretación
Con un nivel de confianza del 95%:
Intercepto:
El coeficiente de regresión \(\beta_0\)
está entre 4.82 y 12.18, indicando un
efecto positivo significativo en el log-odds, ya que el intervalo no
incluye cero.
Publicidad:
El coeficiente de regresión \(\beta_1\)
está entre -2.99 y -1.03, indicando
que el efecto de la variable Publicidad sobre el log-odds es
negativo y significativo, ya que el intervalo no incluye cero.
Gra_Nov1:
El coeficiente de regresión \(\beta_2\)
está entre 0.18 y 2.27, indicando un
efecto positivo significativo de la variable Gra_Nov1, ya que
el intervalo no incluye cero.
Tipo1:
El coeficiente de regresión \(\beta_3\)
está entre -1.68 y 1.38, lo que
sugiere que el efecto de la variable Tipo1 no es
estadísticamente significativo, ya que el intervalo incluye el
cero.
Dpto_Mer1:
El coeficiente de regresión \(\beta_4\)
está entre 0.90 y 6.25, indicando un
efecto positivo significativo de la variable Dpto_Mer1, ya que
el intervalo no incluye cero.
Int_Tec11:
El coeficiente de regresión \(\beta_5\)
está entre -3.76 y -0.57, indicando un
efecto negativo significativo de la variable Int_Tec11, ya que
el intervalo no incluye cero.
Int_Tec21:
El coeficiente de regresión \(\beta_6\)
está entre -2.38 y 0.95, lo que indica
que el efecto de la variable Int_Tec21 no es estadísticamente
significativo, ya que el intervalo incluye el cero.
Personal:
El coeficiente de regresión \(\beta_7\)
está entre -0.71 y -0.13, indicando un
efecto negativo significativo de la variable Personal, ya que
el intervalo no incluye cero.
# IC para los OR
NC=0.95
exp(confint.default(Modelo3, level=NC))
2.5 % 97.5 %
(Intercept) 123.45573520 1.947446e+05
Publicidad 0.05013782 3.568134e-01
Gra_Nov 1.19460297 9.654150e+00
Tipo 0.18710404 3.984924e+00
Dpto_Mer 2.45094224 5.192311e+02
Int_Tec1 0.02326486 5.660510e-01
Int_Tec2 0.09289575 2.598547e+00
Personal 0.48930466 8.787360e-01
Interpretación
Con un nivel de confianza del 95%:
Intercepto: El OR para el intercepto está entre 123.46 y 194,744.6, indicando un nivel base muy alto de odds en estas condiciones.
Publicidad: El OR para la variable Publicidad está entre 0.05 y 0.36, lo que indica que un aumento en el gasto en publicidad se asocia con una disminución significativa en las odds del éxito, ya que el intervalo no incluye el uno.
Gra_Nov1: El OR para Gra_Nov1 está entre 1.19 y 9.65, indicando que cuando el producto representa mejoras sustanciales (vs. uno totalmente nuevo), las odds de éxito aumentan significativamente.
Tipo1: El OR para Tipo1 está entre 0.19 y 3.98, dado que el intervalo incluye el uno, no se puede afirmar que el efecto sea estadísticamente significativo.
Dpto_Mer1: El OR para Dpto_Mer1 está entre 2.45 y 519.23, indicando que contar con un departamento de marketing aumenta significativamente las odds de éxito.
Int_Tec11: El OR para Int_Tec11 está entre 0.02 y 0.57, lo que indica que pertenecer a un sector con baja intensidad tecnológica disminuye significativamente las odds de éxito.
Int_Tec21: El OR para Int_Tec21 está entre 0.09 y 2.60, como el intervalo incluye el uno, no se puede considerar estadísticamente significativo.
Personal: El OR para Personal está entre 0.49 y 0.88, indicando que por cada unidad adicional en personal, las odds de éxito disminuyen significativamente.
Hipotesis
summary(Modelo3)
Call:
glm(formula = Exito ~ Publicidad + Gra_Nov + Tipo + Dpto_Mer +
Int_Tec1 + Int_Tec2 + Personal, family = binomial(link = logit))
Coefficients:
Estimate Std. Error z value Pr(>|z|)
(Intercept) 8.4977 1.8785 4.524 6.08e-06 ***
Publicidad -2.0118 0.5006 -4.018 5.86e-05 ***
Gra_Nov 1.2226 0.5331 2.294 0.02182 *
Tipo -0.1468 0.7803 -0.188 0.85078
Dpto_Mer 3.5744 1.3663 2.616 0.00889 **
Int_Tec1 -2.1649 0.8142 -2.659 0.00784 **
Int_Tec2 -0.7107 0.8498 -0.836 0.40301
Personal -0.4220 0.1494 -2.825 0.00472 **
---
Signif. codes: 0 '***' 0.001 '**' 0.01 '*' 0.05 '.' 0.1 ' ' 1
(Dispersion parameter for binomial family taken to be 1)
Null deviance: 211.91 on 155 degrees of freedom
Residual deviance: 104.25 on 148 degrees of freedom
AIC: 120.25
Number of Fisher Scoring iterations: 8
Decisión estadística:
# Prueba de significación del modelo de regresión
Alfa=0.05
Chi_Tab=qchisq(1-Alfa,Modelo3$df.residual); Chi_Tab
[1] 177.3897
p_valor=1-pchisq(Modelo3$deviance,Modelo3$df.residual); p_valor
[1] 0.9975106
Conclusión
summary(Modelo3)
Call:
glm(formula = Exito ~ Publicidad + Gra_Nov + Tipo + Dpto_Mer +
Int_Tec1 + Int_Tec2 + Personal, family = binomial(link = logit))
Coefficients:
Estimate Std. Error z value Pr(>|z|)
(Intercept) 8.4977 1.8785 4.524 6.08e-06 ***
Publicidad -2.0118 0.5006 -4.018 5.86e-05 ***
Gra_Nov 1.2226 0.5331 2.294 0.02182 *
Tipo -0.1468 0.7803 -0.188 0.85078
Dpto_Mer 3.5744 1.3663 2.616 0.00889 **
Int_Tec1 -2.1649 0.8142 -2.659 0.00784 **
Int_Tec2 -0.7107 0.8498 -0.836 0.40301
Personal -0.4220 0.1494 -2.825 0.00472 **
---
Signif. codes: 0 '***' 0.001 '**' 0.01 '*' 0.05 '.' 0.1 ' ' 1
(Dispersion parameter for binomial family taken to be 1)
Null deviance: 211.91 on 155 degrees of freedom
Residual deviance: 104.25 on 148 degrees of freedom
AIC: 120.25
Number of Fisher Scoring iterations: 8
Calculo manual
# Coeficiente estimado
b1 <- coef(Modelo3)[2]
# Error estándar
sb1 <- sqrt(diag(vcov(Modelo3)))[2]
# Valor hipotético bajo H0 (usualmente 0)
beta_0 <- 0
# Cálculo del estadístico Z con la resta explícita
Zc <- (b1 - beta_0) / sb1
Zc
Publicidad
-4.018451
# Cálculo del p-valor (dos colas)
p_value <- 2 * (1 - pnorm(abs(Zc)))
cat("p-valor:", p_value)
p-valor: 5.858206e-05
#cat(sprintf("p-valor: %.8f\n", p_value))
Conclusion
# Cálculo del Coeficiente de determinación
R2= (1-Modelo3$deviance/Modelo3$null.deviance)*100; R2
[1] 50.80438
Interpretación
-Publicidad : 4.5 -Gra_Nov : 1 -Tipo : 0 -Dpto_Mer : 1 -Int_Tec1 : 1 -Int_Tec2 : 0 -Personal : 15
| Empresa | Publicidad | Grad_Nove | Tipo | I+D (Imasd) | Selectg | Personal |
|---|---|---|---|---|---|---|
| E1 | 4.5 | Mejoras sustanciales | Industrial | Sí | Baja | 15 |
| E2 | 1.5 | Productos nuevos | Industrial | No | Media | 10 |
| E3 | 8.5 | Productos nuevos | Consumo final | Sí | Alta | 20 |
# Predicción para nuevas empresas
Xo=c(1,4.5,1,0,1,1,0,15); P_Xo=sum(Xo*coef(Modelo3)); P1=1/(1+exp(-(P_Xo))); P1 # 1 al inicio es el intercepto
[1] 0.01401523
Xo=c(1,1.5,0,0,0,0,1,10); P_Xo=sum(Xo*coef(Modelo3)); P2=1/(1+exp(-(P_Xo))); P2
[1] 0.6339397
Xo=c(1,8.5,0,1,1,0,0,20); P_Xo=sum(Xo*coef(Modelo3)); P3=1/(1+exp(-(P_Xo))); P3
[1] 1.221917e-06
Conclusion
Aplicando el punto de corte: Si π≥0.5, Y=1 (éxito); Si π<0.5, Y=0 (no éxito). Entonces, la empresa E2 tendrá éxito en introducir un nuevo producto al mercado con una probabilidad de 0.633, mientras las empresas E1 y E3 no tendrán éxito.
E2 tiene la mayor probabilidad de éxito (63.4%). Su perfil (industrial, productos nuevos, sin I+D, selectg media) es el más favorable según el modelo.
E1 tiene una probabilidad baja (1.4%), posiblemente afectada por su enfoque en mejoras sustanciales y baja selectg.
E3 presenta una probabilidad casi nula (0.0001%), a pesar de alta inversión en publicidad y personal; factores como el tipo “consumo final” y selectg alta podrían estar penalizando.