---
title: "Modelización del Radio Planetario en Exoplanetas: Un Enfoque de Regresión Lineal Múltiple"
author: "Fernando José Pereira Salvador"
date: "2026-05-10"
output:
  pdf_document:
    toc: false
    toc_depth: 2
    number_sections: true
    latex_engine: pdflatex
---

```{r, echo=FALSE, fig.align='center', out.width='70%'}
knitr::include_graphics("nasa.png")
```

\newpage
\tableofcontents
\newpage

# Introducción

## Descripción de la base de datos

La base de datos utilizada procede del **NASA Exoplanet Archive**, concretamente de la tabla *Planetary Systems Composite Parameters*. Esta base recoge información sobre exoplanetas confirmados y sus sistemas planetarios, incluyendo variables relativas al planeta, a su órbita, a la estrella anfitriona y a la distancia del sistema respecto a la Tierra.

El objetivo del análisis es estudiar qué características físicas, orbitales y estelares están asociadas con el tamaño de un exoplaneta. Para ello, se selecciona como variable dependiente el radio planetario (`pl_rade`), medido en radios terrestres. Esta variable permite analizar el tamaño relativo de los exoplanetas respecto a la Tierra.

Desde el punto de vista del problema, el modelo puede entenderse como una herramienta exploratoria para estudiar qué factores están relacionados con el tamaño planetario. Este tipo de análisis puede ser útil en el contexto de la investigación astronómica, por ejemplo, para caracterizar poblaciones de exoplanetas, identificar patrones físicos y apoyar la priorización de candidatos para observaciones posteriores.

```{r}
library(ppcor)
library(tidyverse)
library(ggplot2)
library(dplyr)
library(broom)
library(tibble)
library(lmtest)

exoplanetas <- read_csv(
  "PSCompPars_2026.04.29_08.19.44.csv",
  comment = "#"
)

glimpse(exoplanetas)
summary(exoplanetas)
```
## Selección y justificación de variables

La base de datos original contiene `r ncol(exoplanetas)` variables. Sin embargo, no todas se incorporan al modelo de regresión, ya que algunas tienen un papel meramente identificativo, otras representan errores de medición, otras son variables equivalentes expresadas en distintas unidades y otras tienen un elevado número de valores perdidos o una interpretación menos directa para el objetivo del análisis.

El objetivo del estudio es explicar el radio planetario (`pl_rade`), por lo que se seleccionan variables con una relación física, orbital, estelar u observacional razonable con el tamaño del planeta.

### Variables no incorporadas al modelo

En primer lugar, se excluyen las variables identificativas o descriptivas, como `pl_name`, `hostname`, `disc_facility`, `rastr` y `decstr`. Estas variables permiten identificar el planeta, la estrella anfitriona, la instalación de descubrimiento o la posición astronómica en formato textual, pero no aportan una magnitud cuantitativa directamente interpretable en un modelo de regresión lineal.

También se excluyen variables que representan la misma magnitud en otra unidad. Por ejemplo, `pl_radj` mide el radio planetario en radios de Júpiter, mientras que `pl_rade` lo mide en radios terrestres. Como `pl_rade` se ha elegido como variable dependiente, incluir `pl_radj` como explicativa supondría introducir una variable prácticamente equivalente a la respuesta. Del mismo modo, `pl_bmassj` mide la masa planetaria en masas de Júpiter, mientras que `pl_bmasse` la mide en masas terrestres; por ello se conserva únicamente `pl_bmasse`.

Además, se excluyen las variables asociadas a errores de medición, como `pl_orbpererr1`, `pl_orbpererr2`, `pl_orbsmaxerr1`, `pl_orbsmaxerr2`, `pl_radeerr1`, `pl_radeerr2`, `pl_bmasseerr1`, `pl_bmasseerr2`, `st_tefferr1`, `st_tefferr2`, `st_raderr1`, `st_raderr2`, `st_masserr1`, `st_masserr2`, `sy_disterr1` y `sy_disterr2`. Estas columnas informan sobre la incertidumbre de las estimaciones, pero no representan directamente características físicas del planeta o de la estrella. Por este motivo, no se incluyen en el modelo principal.

De forma similar, se excluyen las variables terminadas en `lim`, como `pl_orbperlim`, `pl_orbsmaxlim`, `pl_radelim`, `pl_bmasselim`, `pl_orbeccenlim`, `pl_eqtlim`, `st_tefflim`, `st_radlim`, `st_masslim`, `st_metlim` y `st_logglim`. Estas variables indican si una medición corresponde a un límite superior o inferior, por lo que tienen un carácter auxiliar y no se interpretan como variables explicativas principales.

Por último, algunas variables potencialmente interesantes, como `pl_orbeccen`, `pl_insol`, `st_met`, `st_logg`, `sy_vmag`, `sy_kmag` o `sy_gaiamag`, no se incorporan al modelo inicial para evitar una pérdida excesiva de observaciones por valores perdidos y para mantener un modelo interpretable. No obstante, podrían considerarse en análisis complementarios o ampliaciones posteriores.

### Variables seleccionadas para el análisis

Tras la revisión anterior, se selecciona un conjunto reducido de variables con interpretación clara y relación potencial con el radio planetario. La variable dependiente será `pl_rade`, que representa el radio del planeta en radios terrestres.

Las variables explicativas seleccionadas inicialmente son las siguientes:

| Variable | Tipo | Unidad | Significado | Justificación |
|---|---|---|---|---|
| `disc_year` | Cuantitativa discreta | Año | Año en el que se descubrió el exoplaneta. | Puede reflejar cambios temporales en los métodos de detección y en la capacidad tecnológica para descubrir y caracterizar exoplanetas. |
| `pl_bmasse` | Cuantitativa continua | Masas terrestres | Masa estimada del planeta expresada en relación con la masa de la Tierra. | La masa planetaria puede estar relacionada con el tamaño del planeta, aunque ambas magnitudes no son equivalentes. |
| `pl_orbper` | Cuantitativa continua | Días | Tiempo que tarda el planeta en completar una órbita alrededor de su estrella. | El periodo orbital puede reflejar la posición dinámica del planeta dentro del sistema. |
| `pl_orbsmax` | Cuantitativa continua | Unidades astronómicas | Distancia media aproximada entre el planeta y su estrella a lo largo de su órbita. | El semieje mayor mide la distancia media aproximada entre el planeta y su estrella. |
| `pl_eqt` | Cuantitativa continua | Kelvin | Temperatura de equilibrio estimada del planeta. | La temperatura de equilibrio puede estar relacionada con las condiciones físicas y atmosféricas del planeta. |
| `st_teff` | Cuantitativa continua | Kelvin | Temperatura efectiva de la estrella anfitriona. | La temperatura de la estrella anfitriona puede influir en las condiciones térmicas del planeta. |
| `st_rad` | Cuantitativa continua | Radios solares | Radio de la estrella anfitriona expresado en relación con el radio del Sol. | El radio estelar describe el tamaño de la estrella anfitriona y puede estar asociado a las características del sistema. |
| `st_mass` | Cuantitativa continua | Masas solares | Masa de la estrella anfitriona expresada en relación con la masa del Sol. | La masa estelar está relacionada con la dinámica orbital y las condiciones generales del sistema planetario. |
| `sy_dist` | Cuantitativa continua | Pársecs | Distancia entre el sistema planetario observado y la Tierra. | La distancia al sistema puede reflejar posibles sesgos observacionales en la detección y caracterización de exoplanetas. |

```{r}
datos <- exoplanetas %>%
  dplyr::select(
    disc_year,
    pl_rade,
    pl_bmasse,
    pl_orbper,
    pl_orbsmax,
    pl_eqt,
    st_teff,
    st_rad,
    st_mass,
    sy_dist
  )

datos <- datos %>%
  drop_na() %>%
  filter(
    pl_rade > 0,
    pl_bmasse > 0,
    pl_orbper > 0,
    pl_orbsmax > 0,
    sy_dist > 0
  )
```

\newpage
# Análisis Exploratorio de Datos

## Resumen descriptivo

```{r}
summary(datos)
```

```{r}
ggplot(datos, aes(x = pl_rade)) +
  geom_histogram(bins = 40, fill = "#E67E22", color = "white") +
  labs(
    title = "Distribución del radio planetario",
    subtitle = "Variable dependiente del modelo",
    x = "Radio planetario (radios terrestres)",
    y = "Frecuencia"
  ) +
  theme_minimal(base_size = 13) +
  theme(
    plot.title = element_text(hjust = 0.5, face = "bold"),
    plot.subtitle = element_text(hjust = 0.5)
  )
```

La distribución de pl_rade presenta una clara asimetría positiva, con una concentración de planetas de radio reducido y algunos valores extremos de mayor tamaño. Esto anticipa posibles problemas de normalidad en los residuos del modelo lineal.

El análisis descriptivo muestra una elevada dispersión en varias variables. En particular, `pl_bmasse`, `pl_orbper`, `pl_orbsmax` y `sy_dist` presentan rangos amplios, lo que indica que la muestra incluye exoplanetas y sistemas planetarios muy heterogéneos. Esta variabilidad es esperable en una base de datos astronómica, ya que recoge planetas de características físicas y orbitales muy distintas.

También se observa que algunas variables presentan diferencias importantes entre la media y la mediana, lo que sugiere distribuciones asimétricas y posible presencia de valores extremos. Este aspecto deberá tenerse en cuenta en el ajuste posterior del modelo, ya que puede afectar a la calidad de los residuos y justificar el uso de transformaciones en el apartado de mejora.

## Análisis gráfico

```{r}
plot(datos)
```

El gráfico de dispersión por pares permite observar visualmente las relaciones bivariantes entre las variables seleccionadas. En general, no se aprecian relaciones lineales fuertes entre `pl_rade` y la mayoría de variables explicativas. Sin embargo, sí se observa una relación muy marcada entre `pl_orbper` y `pl_orbsmax`, lo que anticipa un posible problema de multicolinealidad entre ambas variables orbitales.

## Correlaciones con la variable dependiente

```{r}
# Correlaciones con la variable dependiente
cor(datos)["pl_rade", ]
```

```{r}
matriz_cor_simple <- cor(datos, use = "complete.obs")

round(matriz_cor_simple, 3)
```


```{r}

cor_pl_rade <- cor(datos)["pl_rade", ] %>%
  as.data.frame() %>%
  rownames_to_column("variable") %>%
  rename(correlacion = 2) %>%
  filter(variable != "pl_rade") %>%
  mutate(variable = reorder(variable, correlacion))

ggplot(cor_pl_rade, aes(x = correlacion, y = variable, fill = correlacion > 0)) +
  geom_col(show.legend = FALSE) +
  geom_vline(xintercept = 0, linetype = "dashed") +
  scale_fill_manual(values = c("#555555", "#E67E22")) +
  labs(
    title = "Correlación simple con el radio planetario",
    x = "Correlación con pl_rade",
    y = "Variable"
  ) +
  theme_minimal(base_size = 13)
```


La matriz de correlaciones simples muestra la relación lineal entre cada variable numérica y la variable dependiente `pl_rade`. Como era esperable, la correlación de `pl_rade` consigo misma es igual a 1, por lo que no se interpreta.

Las variables que presentan una mayor asociación lineal con el radio planetario son `pl_eqt` y `pl_bmasse`, ambas con una correlación aproximada de 0.424. Esto indica una relación positiva moderada: los planetas con mayor temperatura de equilibrio o mayor masa tienden, en promedio, a presentar radios superiores.

También se observan correlaciones positivas moderadas con `st_mass` y `st_rad`, con valores cercanos a 0.41. Esto sugiere que las características de la estrella anfitriona, especialmente su masa y su radio, podrían estar relacionadas con el tamaño del planeta.

La variable `st_teff` presenta una correlación positiva más débil, de aproximadamente 0.273, mientras que `sy_dist` muestra una correlación negativa débil, cercana a -0.141. Por tanto, su relación lineal directa con el radio planetario parece limitada.

Por último, `pl_orbper`, `pl_orbsmax` y `disc_year` presentan correlaciones prácticamente nulas con `pl_rade`. Esto indica que, de forma simple, no muestran una relación lineal apreciable con el radio del planeta. No obstante, `pl_orbper` y `pl_orbsmax` se analizarán con más detalle posteriormente, ya que pueden presentar multicolinealidad entre ellas.

## Análisis previo de multicolinealidad

Antes de calcular la matriz de correlaciones parciales, se revisa la matriz de correlaciones simples entre las variables explicativas. Este paso es importante porque las correlaciones parciales requieren invertir una matriz de covarianzas/correlaciones, y si existen variables casi perfectamente correlacionadas entre sí pueden aparecer problemas numéricos.

En particular, se analiza la relación entre `pl_orbper` y `pl_orbsmax`, ya que ambas variables describen aspectos orbitales relacionados: el periodo orbital y el semieje mayor de la órbita.

```{r}
cor(datos$pl_orbper, datos$pl_orbsmax)
```

```{r}
ggplot(datos, aes(x = pl_orbper, y = pl_orbsmax)) +
  geom_point(alpha = 0.35, color = "#E67E22") +
  scale_x_log10() +
  scale_y_log10() +
  labs(
    title = "Relación entre periodo orbital y semieje mayor",
    subtitle = "Escala logarítmica",
    x = "Periodo orbital (días)",
    y = "Semieje mayor orbital (UA)"
  ) +
  theme_minimal(base_size = 13) +
  theme(
    plot.title = element_text(hjust = 0.5, face = "bold"),
    plot.subtitle = element_text(hjust = 0.5)
  )
```


El resultado muestra una correlación extremadamente elevada entre `pl_orbper` y `pl_orbsmax`, cercana a 1. Esto indica que ambas variables aportan información muy similar. Desde un punto de vista físico, este resultado es coherente, ya que los planetas más alejados de su estrella suelen tener periodos orbitales más largos.

Para comprobar cómo afecta esta relación al cálculo de correlaciones parciales, se intenta calcular inicialmente la matriz con todas las variables seleccionadas:

```{r, error=TRUE}
# Intento inicial de calcular correlaciones parciales con todas las variables
pcor(datos)$estimate
```
El cálculo anterior puede generar un problema numérico debido a la elevada multicolinealidad entre `pl_orbper` y `pl_orbsmax`. En concreto, la función `pcor()` necesita invertir internamente una matriz, y esta operación puede fallar cuando dos variables están casi perfectamente correlacionadas.

Por este motivo, se decide no incluir ambas variables simultáneamente. Siguiendo el criterio de conservar la variable que presenta mayor correlación lineal con la variable dependiente `pl_rade`, se comparan ambas correlaciones:

```{r}
# Comparación de la relación de cada variable orbital con la variable dependiente
cor(datos$pl_rade, datos$pl_orbper)
cor(datos$pl_rade, datos$pl_orbsmax)
```

Como `pl_orbsmax` presenta una correlación ligeramente superior con `pl_rade`, se conserva esta variable y se elimina `pl_orbper` para evitar problemas de multicolinealidad.

```{r}
datos <- datos %>%
  dplyr::select(
    pl_rade,
    pl_bmasse,
    pl_orbsmax,
    pl_eqt,
    st_teff,
    st_rad,
    st_mass,
    sy_dist
  )
```

## Correlaciones parciales con la variable dependiente

```{r}

# Correlaciones parciales con la variable dependiente
pcor(datos)$estimate["pl_rade", ]
```

```{r}
matriz_cor_parcial <- pcor(datos)$estimate

round(matriz_cor_parcial, 3)
```


Las correlaciones parciales muestran que, al controlar por el resto de variables, `pl_bmasse` sigue siendo la variable más relacionada con `pl_rade`, con una correlación parcial positiva de 0.341. También mantienen cierta asociación `pl_eqt`, `sy_dist` y `st_mass`, aunque con valores más moderados. En cambio, `pl_orbsmax` y `st_rad` presentan correlaciones parciales muy bajas, lo que sugiere que su aportación específica al explicar el radio planetario es limitada.

Además, `st_teff` cambia de signo respecto a la correlación simple, pasando de una relación positiva a una relación parcial negativa. Esto sugiere que la asociación simple entre la temperatura de la estrella y el radio planetario podía estar condicionada por su relación con otras variables del modelo.

## Conclusión del análisis exploratorio

A partir del análisis exploratorio se observa que las variables con mayor relación lineal simple con `pl_rade` son `pl_bmasse`, `pl_eqt`, `st_mass` y `st_rad`. No obstante, al analizar las correlaciones parciales, la variable que mantiene una asociación más clara con el radio planetario es `pl_bmasse`, seguida de `pl_eqt`, `sy_dist` y `st_mass`.

También se detecta una correlación extremadamente elevada entre `pl_orbper` y `pl_orbsmax`, lo que indica un problema de multicolinealidad. Por este motivo, no se incluirán ambas variables simultáneamente en el modelo. Dado que `pl_orbsmax` presenta una correlación ligeramente superior con `pl_rade`, se conserva esta variable y se descarta `pl_orbper`.

Por tanto, para el ajuste inicial del modelo de regresión múltiple se considerarán como variables explicativas `pl_bmasse`, `pl_orbsmax`, `pl_eqt`, `st_teff`, `st_rad`, `st_mass` y `sy_dist`.

\newpage
# Ajuste del modelo lineal

```{r}
fit <- lm(pl_rade ~ ., data = datos)

sfit <- summary(fit)
sfit
```
El modelo lineal múltiple se ajusta utilizando `pl_rade` como variable dependiente y como variables explicativas `pl_bmasse`, `pl_orbsmax`, `pl_eqt`, `st_teff`, `st_rad`, `st_mass` y `sy_dist`. La variable `pl_orbper` no se incluye debido a la multicolinealidad detectada previamente con `pl_orbsmax`.

El modelo global resulta estadísticamente significativo, ya que el contraste F presenta un p-valor inferior a 0.001. Por tanto, se rechaza la hipótesis nula de que todos los coeficientes del modelo sean simultáneamente iguales a cero. Esto indica que, en conjunto, las variables explicativas incluidas aportan información significativa para explicar el radio planetario.

El coeficiente de determinación múltiple es \(R^2 = 0.3962\), mientras que el \(R^2\) ajustado es \(0.3952\). Esto significa que el modelo explica aproximadamente el 39.5 % de la variabilidad observada en el radio de los exoplanetas. Aunque el modelo tiene capacidad explicativa, queda una parte importante de la variabilidad sin explicar, lo cual es razonable dada la complejidad física de los sistemas planetarios y la diversidad de tipos de exoplanetas incluidos en la muestra.

```{r}
# Tabla de coeficientes
sfit$coefficients
```

En cuanto a los coeficientes individuales, la mayoría de variables resultan estadísticamente significativas al nivel del 5 %. En concreto, `pl_bmasse`, `pl_eqt`, `st_teff`, `st_rad`, `st_mass` y `sy_dist` presentan p-valores inferiores a 0.001, por lo que existe evidencia estadística de que están asociadas con `pl_rade`, manteniendo constantes el resto de variables.

La única variable no significativa es `pl_orbsmax`, cuyo p-valor es aproximadamente 0.241. Esto indica que, una vez controlado el efecto del resto de variables, no hay evidencia suficiente para afirmar que el semieje mayor orbital tenga un efecto lineal significativo sobre el radio planetario.

El intercepto del modelo es igual a `r round(coef(fit)["(Intercept)"], 4)` radios 
terrestres. Este valor representa el radio planetario esperado cuando todas las 
variables explicativas del modelo toman simultáneamente el valor cero, es decir, 
un planeta con masa nula, semieje mayor orbital nulo, temperatura de equilibrio 
nula, temperatura estelar nula, radio estelar nulo, masa estelar nula y distancia 
al sistema nula. Esta situación carece de interpretación física real, ya que ningún 
exoplaneta puede presentar simultáneamente esas condiciones. Por tanto, el intercepto 
no debe interpretarse de forma sustantiva en este contexto, sino que forma parte de 
la especificación matemática del modelo y garantiza que la recta de regresión esté 
correctamente posicionada en el espacio de las variables.

```{r}
# Intervalos de confianza para los coeficientes
confint(fit)
```

```{r}

# Intervalos de confianza de los coeficientes
coef_ci <- tidy(fit, conf.int = TRUE) %>%
  filter(term != "(Intercept)") %>%
  mutate(
    significativo = ifelse(conf.low > 0 | conf.high < 0,
                           "Significativo",
                           "No significativo"),
    term = reorder(term, estimate)
  )

ggplot(coef_ci, aes(x = estimate, y = term, color = significativo)) +
  geom_vline(xintercept = 0, linetype = "dashed", linewidth = 0.8, color = "black") +
  geom_errorbarh(
    aes(xmin = conf.low, xmax = conf.high),
    height = 0.22,
    linewidth = 0.9
  ) +
  geom_point(size = 3.5) +
  scale_x_continuous(
  trans = scales::pseudo_log_trans(base = 10),
  labels = scales::label_number(accuracy = 0.001)
  ) +
  scale_color_manual(
    values = c(
      "Significativo" = "#E67E22",
      "No significativo" = "#555555"
    )
  ) +
  labs(
    title = "Intervalos de confianza al 95% de los coeficientes",
    x = "Estimación del coeficiente",
    y = "Variable explicativa",
    color = ""
  ) +
  theme_minimal(base_size = 13) +
  theme(
    plot.title = element_text(face = "bold", size = 17),
    plot.subtitle = element_text(size = 12),
    axis.title = element_text(face = "bold"),
    legend.position = "top",
    panel.grid.minor = element_blank()
  )
```


El coeficiente de `pl_bmasse` es positivo e igual a 0.00242. Esto significa que, manteniendo constantes el resto de variables, un aumento de una masa terrestre en la masa del planeta se asocia con un incremento esperado de aproximadamente 0.0024 radios terrestres en el radio planetario. Aunque el efecto unitario es pequeño, la variable es altamente significativa.

El coeficiente de `pl_eqt` también es positivo, con un valor aproximado de 0.00220. Esto indica que, manteniendo constantes las demás variables, un aumento de un Kelvin en la temperatura de equilibrio se asocia con un incremento esperado de 0.0022 radios terrestres en el radio planetario. En términos prácticos, un aumento de 100 K se asociaría con un incremento aproximado de 0.22 radios terrestres.

El coeficiente de `st_mass` es positivo y relativamente elevado, con un valor de 7.329. Esto sugiere que, manteniendo constantes el resto de variables, los planetas que orbitan estrellas de mayor masa tienden a presentar radios mayores. En concreto, un aumento de una masa solar en la masa de la estrella se asocia con un incremento esperado de aproximadamente 7.33 radios terrestres en el radio planetario.

El coeficiente de `st_teff` es negativo, con un valor de -0.00142. Aunque en las correlaciones simples la temperatura efectiva de la estrella presentaba una asociación positiva con `pl_rade`, en el modelo múltiple su efecto estimado pasa a ser negativo al controlar por el resto de variables. Esto indica que su relación con el radio planetario está condicionada por otras variables estelares, como `st_mass` y `st_rad`.

La variable `sy_dist` también presenta un coeficiente negativo, de aproximadamente -0.00175. Esto sugiere que, manteniendo constantes el resto de variables, los sistemas más lejanos tienden a asociarse con radios planetarios ligeramente menores en esta muestra. Esta relación puede estar influida por sesgos observacionales o por las características de los planetas mejor caracterizados.

## Conclusión

Desde el punto de vista interpretativo, el modelo sugiere que el radio planetario está especialmente relacionado con la masa del planeta, la temperatura de equilibrio y las características de la estrella anfitriona. En particular, planetas más masivos, con mayor temperatura de equilibrio y orbitando estrellas de mayor masa tienden a presentar radios mayores.

No obstante, estas conclusiones deben interpretarse con cautela. El objetivo no es establecer una relación causal directa, sino identificar asociaciones estadísticas en la muestra de exoplanetas confirmados. Además, el valor de \(R^2\) indica que el modelo explica una parte relevante, pero no mayoritaria, de la variabilidad del radio planetario, por lo que existen otros factores físicos no incorporados al modelo que también pueden influir en el tamaño del planeta, como la composición, la densidad, la atmósfera o la historia evolutiva del sistema.

Para identificar las variables con mayor impacto sobre el radio planetario, se ajusta también un modelo con las variables estandarizadas. Esta transformación permite comparar los coeficientes entre sí, ya que todas las variables pasan a estar medidas en la misma escala. De esta forma, el tamaño absoluto del coeficiente estandarizado refleja la importancia relativa de cada variable en el modelo.

```{r}
# Modelo con variables estandarizadas
datos_estandarizados <- datos %>%
  mutate(across(everything(), scale))

fit_estandarizado <- lm(pl_rade ~ ., data = datos_estandarizados)

# Coeficientes estandarizados
coef_estandarizados <- summary(fit_estandarizado)$coefficients

coef_estandarizados
```

```{r}
coef_std_grafico <- as.data.frame(coef_estandarizados) %>%
  rownames_to_column("variable") %>%
  filter(variable != "(Intercept)") %>%
  mutate(
    significativo = ifelse(`Pr(>|t|)` < 0.05, "Significativo", "No significativo"),
    variable = reorder(variable, Estimate)
  )

ggplot(coef_std_grafico, aes(x = Estimate, y = variable, fill = significativo)) +
  geom_col() +
  geom_vline(xintercept = 0, linetype = "dashed", color = "black") +
  scale_fill_manual(
    values = c(
      "Significativo" = "#E67E22",
      "No significativo" = "#555555"
    )
  ) +
  labs(
    title = "Importancia relativa de las variables",
    subtitle = "Coeficientes del modelo estandarizado",
    x = "Coeficiente estandarizado",
    y = "Variable explicativa",
    fill = ""
  ) +
  theme_minimal(base_size = 13) +
  theme(
    plot.title = element_text(hjust = 0.5, face = "bold"),
    plot.subtitle = element_text(hjust = 0.5),
    axis.title = element_text(face = "bold"),
    legend.position = "top"
  )
```


```{r}
# Extraemos los coeficientes sin el intercepto
coef_impacto <- coef_estandarizados[-1, , drop = FALSE]

# Los ordenamos por impacto absoluto
coef_impacto_ordenados <- coef_impacto[order(abs(coef_impacto[, "Estimate"]), decreasing = TRUE), ]

# Mostramos los 3 coeficientes con mayor impacto
coef_impacto_ordenados[1:3, ]
```

Según los coeficientes estandarizados, las tres variables con mayor impacto relativo sobre `pl_rade` son `st_mass`, `pl_bmasse` y `st_teff`.

La variable con mayor efecto es `st_mass`, con un coeficiente positivo de 0.435, lo que indica que los planetas que orbitan estrellas de mayor masa tienden a presentar radios mayores, manteniendo constantes el resto de variables. En segundo lugar aparece `pl_bmasse`, también con efecto positivo, por lo que los planetas más masivos tienden a tener mayor radio. Por último, `st_teff` presenta un coeficiente negativo, lo que sugiere que, al controlar por el resto de variables del modelo, una mayor temperatura efectiva de la estrella se asocia con un menor radio planetario.

Las tres variables son estadísticamente significativas, ya que sus p-valores son inferiores a 0.001.

## Recomendaciones

A partir de los resultados del modelo, se formulan las siguientes recomendaciones 
orientadas a identificar qué tipo de sistemas planetarios presentan, en promedio, 
mayores radios planetarios. Estas recomendaciones se basan en el signo, la magnitud, 
la precisión y la significatividad estadística de los coeficientes estimados, 
manteniendo siempre constantes el resto de variables del modelo.

**Priorizar sistemas con estrellas de mayor masa (`st_mass`).** Esta es la variable 
con mayor impacto relativo según los coeficientes estandarizados (0.435). Su 
coeficiente es positivo, significativo (p < 0.001) e interpretable: un aumento de 
una masa solar se asocia con un incremento esperado de aproximadamente 7.33 radios 
terrestres en el radio planetario. El intervalo de confianza al 95 % no incluye el 
cero, lo que confirma la precisión de esta estimación. En consecuencia, se recomienda 
**aumentar** esta variable, es decir, orientar la búsqueda hacia planetas que orbiten 
estrellas más masivas.

**Seleccionar planetas con mayor masa (`pl_bmasse`).** Con un coeficiente 
estandarizado de 0.232 y un coeficiente sin estandarizar de 0.00242 (p < 0.001), 
la masa planetaria presenta una relación positiva y significativa con el radio. 
Aunque el efecto unitario es pequeño, la amplitud reducida del intervalo de confianza 
indica una estimación precisa. Se recomienda **aumentar** esta variable, es decir, 
considerar planetas más masivos como candidatos con mayor radio esperado.

**Considerar planetas con mayor temperatura de equilibrio (`pl_eqt`).** Su coeficiente 
es positivo (0.00220) y estadísticamente significativo (p < 0.001). Un aumento de 
100 K en la temperatura de equilibrio se asocia con aproximadamente 0.22 radios 
terrestres adicionales. Se recomienda **aumentar** esta variable en la selección de 
candidatos.

**Cautela con `st_teff`, `sy_dist` y `pl_orbsmax`.** La temperatura efectiva de la 
estrella presenta un coeficiente negativo en el modelo múltiple (-0.00142), lo que 
indica que su efecto real está condicionado por otras variables estelares. La distancia 
al sistema (`sy_dist`) también muestra un coeficiente negativo y significativo, 
posiblemente influido por sesgos observacionales. Finalmente, `pl_orbsmax` no resulta 
estadísticamente significativa (p $\approx$ 0.241), por lo que no se puede afirmar que el 
semieje mayor orbital tenga un efecto real sobre el radio planetario y no se formula 
ninguna recomendación sobre esta variable.

En conjunto, el modelo sugiere que los sistemas con estrellas masivas y planetas 
igualmente masivos y calientes son los mejores candidatos para encontrar exoplanetas 
de mayor tamaño. No obstante, estas recomendaciones deben interpretarse como 
asociaciones estadísticas y no como relaciones causales, dado que el modelo explica 
únicamente el 39.5 % de la variabilidad del radio planetario.

\newpage
# Bondad del ajuste

```{r}
# R^2
sfit$r.squared
```

```{r}
# R^2 ajustado
sfit$adj.r.squared
```

```{r}
# Estadístico F y p-valor asociado
# F-statistic: 408.4 on 7 and 4358 DF, p-value: < 2.2e-16

# CV-sigma
cv_sigma <- sigma(fit) / mean(datos$pl_rade) * 100
cv_sigma
```

El modelo presenta un \(R^2\) de 0.3962 y un \(R^2\) ajustado de 0.3952, por lo que explica aproximadamente el 39.5 % de la variabilidad del radio planetario. El contraste global del modelo es significativo, ya que el p-valor asociado al estadístico F es inferior a 0.001, lo que indica que las variables explicativas aportan información conjunta sobre `pl_rade`.

Sin embargo, el valor de \(CV_\sigma\) es elevado, aproximadamente 80.63 %, lo que indica que el error residual es considerable en relación con la media de la variable dependiente. Por tanto, aunque el modelo es estadísticamente significativo, su capacidad predictiva es moderada y podría mejorarse mediante transformaciones o modelos alternativos.

\newpage
# Análisis de los residuos

```{r}
plot(fit)
```
Los gráficos de diagnóstico muestran que el modelo inicial presenta varios problemas. En `Residuals vs Fitted` se observa un patrón no aleatorio, lo que sugiere falta de linealidad y posible heterocedasticidad. El gráfico Q-Q muestra desviaciones claras respecto a la normalidad, especialmente en las colas. El gráfico `Scale-Location` confirma que la varianza de los residuos no parece constante. Además, en `Residuals vs Leverage` aparecen algunas observaciones potencialmente influyentes.

Por tanto, el modelo lineal ajustado con las variables originales no cumple completamente los supuestos básicos de regresión. Esto justifica la necesidad de realizar contrastes estadísticos y considerar mejoras posteriores, como transformaciones logarítmicas.

```{r}
# Extraemos residuos
e <- residuals(fit)

# Histograma de residuos
hist(e)
```

El histograma muestra que los residuos se concentran principalmente alrededor de cero, aunque la distribución presenta cierta asimetría y valores extremos en las colas. Por tanto, visualmente no parece cumplirse completamente el supuesto de normalidad de los residuos, algo que se comprobará posteriormente mediante un contraste formal.

```{r}
# Contrastes:
# Contraste de normalidad de Shapiro-Wilk
shapiro.test(e)
```

El test de Shapiro-Wilk muestra un p-valor inferior a 0.001, por lo que se rechaza la hipótesis nula de normalidad. Esto indica que los residuos no siguen una distribución normal, resultado coherente con el histograma y el gráfico Q-Q de residuos.

```{r}
# Contraste de homocedasticidad de Breusch-Pagan
bptest(fit)
```

El test de Breusch-Pagan presenta un estadístico BP = 1369.1 con 7 grados de 
libertad y un p-valor inferior a 0.001, por lo que se rechaza la hipótesis nula 
de homocedasticidad. Esto confirma que la varianza de los residuos no es constante, 
resultado coherente con el patrón observado en el gráfico Scale-Location. Por tanto, 
el supuesto de homocedasticidad no se cumple.

```{r}
# Contraste de incorrelación de Durbin-Watson
dwtest(fit, alternative = "two.sided")
```

El test de Durbin-Watson presenta un estadístico \(DW = 1.107\) y un p-valor inferior a 0.001, por lo que se rechaza la hipótesis nula de ausencia de autocorrelación. Esto indica que los residuos presentan autocorrelación, aparentemente positiva al estar el estadístico por debajo de 2. Por tanto, el supuesto de independencia de los errores no se cumple.

## Valores sobreinfluyentes

Para detectar observaciones sobreinfluyentes se utiliza la **distancia de Cook**, 
que mide cuánto cambian conjuntamente todos los coeficientes estimados si se elimina 
una observación concreta. Se considera que una observación es sobreinfluyente si su 
distancia de Cook supera el umbral $4/n$, donde $n$ es el número de observaciones.

```{r}
# Distancia de Cook
cook <- cooks.distance(fit)
n <- nrow(datos)
umbral <- 4 / n

# Número de observaciones sobreinfluyentes
sum(cook > umbral)

# Proporción sobre el total
mean(cook > umbral) * 100
```

```{r}
# Gráfico de distancias de Cook
plot(cook, type = "h", main = "Distancia de Cook por observación",
     ylab = "Distancia de Cook", xlab = "Índice")
abline(h = umbral, col = "red", lty = 2)
```

El gráfico muestra las distancias de Cook de cada observación junto con el umbral 
$4/n$ marcado en rojo. Las observaciones que superan dicho umbral se consideran 
sobreinfluyentes. En este caso, se detectan `r sum(cook > umbral)` observaciones 
sobreinfluyentes, lo que representa aproximadamente el 
`r round(mean(cook > umbral) * 100, 1)` % del total de la muestra. Aunque su número 
es relativamente reducido, su presencia puede estar contribuyendo a los problemas 
detectados en los supuestos de normalidad y homocedasticidad. Por tanto, el supuesto 
de ausencia de valores sobreinfluyentes no se cumple de forma completamente 
satisfactoria.

\newpage
# Selección de variables

```{r}
# Selección automática de variables mediante AIC
fit_step <- step(fit, direction = "backward")

# Resumen del modelo seleccionado
sfit_step <- summary(fit_step)
sfit_step
```

Se aplica el procedimiento de selección hacia atrás basado en el criterio AIC. Este algoritmo parte del modelo completo y va eliminando variables cuando su eliminación mejora el AIC. El objetivo es obtener un modelo más simple, manteniendo una capacidad explicativa adecuada.

```{r}
# R2 del modelo simplificado
sfit_step$r.squared

# R2 ajustado del modelo simplificado
sfit_step$adj.r.squared

# AIC del modelo completo y del modelo simplificado
AIC(fit, fit_step)

# CV-sigma del modelo simplificado
cv_sigma_step <- sigma(fit_step) / mean(datos$pl_rade) * 100
cv_sigma_step
```

```{r}
comparacion_modelos <- data.frame(
  Modelo = c("Modelo general", "Modelo AIC"),
  R2 = c(
    sfit$r.squared,
    sfit_step$r.squared
  ),
  R2_ajustado = c(
    sfit$adj.r.squared,
    sfit_step$adj.r.squared
  ),
  AIC = c(
    AIC(fit),
    AIC(fit_step)
  ),
  CV_sigma = c(
    sigma(fit) / mean(datos$pl_rade) * 100,
    sigma(fit_step) / mean(datos$pl_rade) * 100
  )
)

comparacion_modelos
```
```{r}
# Gráficos de diagnóstico del modelo AIC
plot(fit_step)
```

```{r}
# Residuos del modelo AIC
e_step <- residuals(fit_step)

# Histograma
hist(e_step)

# Normalidad
shapiro.test(e_step)
```

```{r}

# Homocedasticidad
bptest(fit_step)

# Autocorrelación
dwtest(fit_step, alternative = "two.sided")
```

```{r}
test_residuos <- data.frame(
  Modelo = c("Modelo general", "Modelo AIC"),
  Shapiro_pvalor = c(
    shapiro.test(residuals(fit))$p.value,
    shapiro.test(residuals(fit_step))$p.value
  ),
  Breusch_Pagan_pvalor = c(
    bptest(fit)$p.value,
    bptest(fit_step)$p.value
  ),
  Durbin_Watson_pvalor = c(
    dwtest(fit, alternative = "two.sided")$p.value,
    dwtest(fit_step, alternative = "two.sided")$p.value
  )
)

test_residuos
```
Ambos modelos presentan métricas de bondad del ajuste prácticamente idénticas. 
El modelo AIC elimina `pl_orbsmax`, que no resultaba significativa, y obtiene un 
AIC ligeramente inferior (23604.94 frente a 23605.56), por lo que se prefiere el 
modelo simplificado por ser más parsimonioso sin perder capacidad explicativa.

Sin embargo, ninguno de los dos modelos permite realizar inferencia estadística 
de forma completamente válida, ya que ambos incumplen los supuestos básicos de 
normalidad, homocedasticidad e independencia de los residuos. Los p-valores y los 
intervalos de confianza deben interpretarse con cautela, ya que su validez depende 
del cumplimiento de dichos supuestos.

\newpage
# Conclusiones finales

En este trabajo se ha analizado un conjunto de datos de exoplanetas confirmados con el objetivo de estudiar qué variables físicas y orbitales se relacionan con el radio planetario (`pl_rade`). Para ello, se realizó primero un análisis exploratorio de los datos, posteriormente se ajustó un modelo de regresión lineal múltiple y, finalmente, se evaluó la calidad del ajuste y el cumplimiento de los supuestos del modelo.

El análisis exploratorio mostró que la variable dependiente presenta una distribución asimétrica y con valores extremos, algo esperable en una base de datos astronómica formada por planetas de características muy diferentes. Además, se detectó una relación muy elevada entre `pl_orbper` y `pl_orbsmax`, lo que indicaba un problema de multicolinealidad. Por este motivo, se decidió conservar `pl_orbsmax` y excluir `pl_orbper` del modelo inicial.

El modelo lineal múltiple resultó globalmente significativo, lo que indica que las variables explicativas consideradas aportan información relevante para explicar el radio planetario. En particular, variables como `pl_bmasse`, `pl_eqt`, `st_teff`, `st_rad`, `st_mass` y `sy_dist` resultaron estadísticamente significativas. La única variable que no mostró un efecto significativo en el modelo fue `pl_orbsmax`, lo que sugiere que, una vez controlado el efecto del resto de variables, el semieje mayor orbital no aporta evidencia suficiente para explicar linealmente el radio del planeta.

Desde el punto de vista interpretativo, los resultados indican que el radio planetario está especialmente relacionado con la masa del planeta y con características de la estrella anfitriona. El modelo con variables estandarizadas permitió comparar la importancia relativa de los predictores, destacando principalmente `st_mass`, `pl_bmasse` y `st_teff` como las variables con mayor impacto relativo sobre `pl_rade`.

No obstante, la capacidad explicativa del modelo es moderada. El valor de \(R^2\) ajustado indica que el modelo explica aproximadamente el 39.5 % de la variabilidad del radio planetario, por lo que una parte importante de la variación queda sin explicar. Esto es razonable, ya que el tamaño de un exoplaneta depende de muchos factores físicos que no están incluidos en el modelo, como la composición interna, la densidad, la atmósfera, la edad del sistema o los procesos de formación y evolución planetaria.

Además, el análisis de residuos mostró que el modelo no cumple completamente los supuestos clásicos de regresión lineal. En particular, se detectaron problemas de normalidad, heterocedasticidad y autocorrelación en los residuos. Por tanto, aunque el modelo es útil como primera aproximación explicativa, sus resultados deben interpretarse con cautela y no deben considerarse como una herramienta predictiva definitiva.

La selección automática de variables mediante AIC permitió obtener un modelo más simple, manteniendo una capacidad explicativa similar. Sin embargo, los problemas detectados en los residuos indican que la mejora del modelo no debería centrarse únicamente en eliminar variables, sino también en considerar transformaciones o enfoques alternativos.

Como posibles mejoras futuras, sería recomendable probar transformaciones logarítmicas en algunas variables, especialmente en aquellas con distribuciones muy asimétricas, como `pl_rade`, `pl_bmasse`, `pl_orbsmax` o `sy_dist`. También podrían explorarse modelos no lineales, modelos robustos o técnicas de aprendizaje automático que capturen relaciones más complejas entre las características físicas de los exoplanetas y su radio.

En conclusión, el modelo permite identificar asociaciones relevantes entre el radio planetario y varias características del planeta y de su estrella anfitriona, especialmente la masa del planeta y la masa estelar. Sin embargo, debido a la complejidad física del fenómeno y a las limitaciones detectadas en los supuestos del modelo, los resultados deben entenderse como una aproximación estadística inicial y no como una explicación completa del tamaño de los exoplanetas.

\newpage
# Ampliación: modelo con transformación logarítmica

Como ampliación del análisis, se plantea un modelo alternativo basado en transformaciones logarítmicas. Esta propuesta se justifica por la elevada asimetría observada en algunas variables del conjunto de datos, especialmente en `pl_rade`, `pl_bmasse`, `pl_orbsmax` y `sy_dist`. Estas variables presentan valores muy dispersos y algunos valores extremos, lo que puede afectar al cumplimiento de los supuestos del modelo lineal clásico.

La transformación logarítmica puede ayudar a reducir la influencia de valores extremos, estabilizar parcialmente la varianza y mejorar la relación lineal entre la variable dependiente y algunas variables explicativas. Por este motivo, se ajusta un modelo donde se transforma logarítmicamente el radio planetario y algunas variables estrictamente positivas.

```{r}
# Creamos una nueva base con transformaciones logarítmicas
datos_log <- datos %>%
  mutate(
    log_pl_rade = log(pl_rade),
    log_pl_bmasse = log(pl_bmasse),
    log_pl_orbsmax = log(pl_orbsmax),
    log_sy_dist = log(sy_dist)
  )

# Ajuste del modelo logarítmico
fit_log <- lm(
  log_pl_rade ~ log_pl_bmasse + log_pl_orbsmax + pl_eqt +
    st_teff + st_rad + st_mass + log_sy_dist,
  data = datos_log
)

# Resumen del modelo
summary(fit_log)
```

En este modelo, la variable dependiente es `log_pl_rade`, es decir, el logaritmo del radio planetario. Por tanto, la interpretación de los coeficientes cambia respecto al modelo lineal original.

En el caso de las variables también transformadas en logaritmos, como `log_pl_bmasse`, `log_pl_orbsmax` y `log_sy_dist`, los coeficientes pueden interpretarse aproximadamente como elasticidades. Es decir, indican el cambio porcentual esperado en el radio planetario ante un cambio porcentual en la variable explicativa, manteniendo constantes el resto de variables.

En cambio, para las variables que no se han transformado, como `pl_eqt`, `st_teff`, `st_rad` y `st_mass`, los coeficientes indican el cambio relativo aproximado en el radio planetario ante un aumento de una unidad en la variable explicativa.

## Comparación de la bondad del ajuste

A continuación, se comparan los principales indicadores de bondad del ajuste del modelo general, el modelo seleccionado mediante AIC y el modelo con transformación logarítmica.

```{r}
# Comparación de modelos mediante métricas principales

comparacion_modelos <- tibble(
  Modelo = c("Modelo general", "Modelo AIC", "Modelo logarítmico"),
  R2 = c(
    summary(fit)$r.squared,
    summary(fit_step)$r.squared,
    summary(fit_log)$r.squared
  ),
  R2_ajustado = c(
    summary(fit)$adj.r.squared,
    summary(fit_step)$adj.r.squared,
    summary(fit_log)$adj.r.squared
  ),
  AIC = c(
    AIC(fit),
    AIC(fit_step),
    AIC(fit_log)
  ),
  Sigma_residual = c(
    sigma(fit),
    sigma(fit_step),
    sigma(fit_log)
  )
)

knitr::kable(
  comparacion_modelos,
  digits = 4,
  caption = "Comparación de la bondad del ajuste entre modelos"
)
```

El modelo logarítmico se compara con los modelos anteriores para comprobar si la transformación mejora la capacidad explicativa, reduce el AIC o disminuye la dispersión de los residuos. En particular, un mayor valor de \(R^2\) ajustado, un menor AIC y una menor desviación típica residual indicarían una mejora relativa del ajuste.

No obstante, debe tenerse en cuenta que el modelo logarítmico no está expresado en la misma escala que el modelo original, ya que la variable dependiente pasa de ser `pl_rade` a `log_pl_rade`. Por ello, la comparación debe interpretarse con cautela, especialmente en el caso de la desviación típica residual.

## Intervalos de confianza del modelo logarítmico

```{r}
# Intervalos de confianza del modelo logarítmico
confint(fit_log)
```

A partir de los intervalos de confianza al 95 %, se observa que `log_pl_bmasse`, `st_rad` y `st_mass` presentan efectos estadísticamente significativos, ya que sus intervalos no contienen el valor 0. En concreto, `log_pl_bmasse` muestra un intervalo claramente positivo, lo que confirma que la masa planetaria sigue siendo la variable más relevante para explicar el radio planetario en el modelo logarítmico. Por su parte, `st_rad` y `st_mass` también presentan intervalos positivos, lo que refuerza la importancia de las características de la estrella anfitriona.

En cambio, los intervalos de `log_pl_orbsmax`, `pl_eqt`, `st_teff` y `log_sy_dist` contienen el valor 0, por lo que no se puede afirmar que estas variables tengan un efecto estadísticamente significativo sobre el logaritmo del radio planetario al nivel de confianza del 95 %.

## Diagnóstico de residuos del modelo logarítmico

```{r}
# Gráficos diagnósticos del modelo logarítmico
par(mfrow = c(2, 2))
plot(fit_log)
par(mfrow = c(1, 1))
```

Los gráficos diagnósticos permiten comprobar visualmente si la transformación logarítmica mejora el comportamiento de los residuos. En concreto, se analiza si los residuos presentan una distribución más cercana a la normalidad, si la varianza es más constante y si se reduce la influencia de observaciones extremas.

```{r}
# Contraste de normalidad de los residuos
shapiro.test(residuals(fit_log))

# Contraste de homocedasticidad
bptest(fit_log)

# Contraste de autocorrelación
dwtest(fit_log)

# Valores influyentes mediante distancia de Cook
cook_log <- cooks.distance(fit_log)
umbral_cook_log <- 4 / nrow(datos_log)

influyentes_log <- which(cook_log > umbral_cook_log)

length(influyentes_log)
head(influyentes_log)
```

Para completar el diagnóstico, se aplican los mismos contrastes utilizados en los modelos anteriores: normalidad de los residuos, homocedasticidad, autocorrelación y detección de valores influyentes. De esta forma, se puede valorar si el modelo logarítmico corrige total o parcialmente las limitaciones detectadas en el modelo lineal inicial.

Los contrastes estadísticos muestran que el modelo logarítmico mejora el ajuste, pero sigue presentando problemas en los supuestos básicos. El test de Shapiro-Wilk rechaza la normalidad de los residuos, ya que el p-valor es inferior a 0.001. El test de Breusch-Pagan también rechaza la hipótesis de homocedasticidad, por lo que la varianza de los residuos no puede considerarse constante. Además, el test de Durbin-Watson detecta autocorrelación positiva en los residuos, con un estadístico inferior a 2 y un p-valor inferior a 0.001.

Por último, el análisis mediante distancia de Cook identifica 257 observaciones potencialmente influyentes. Esto confirma que, aunque la transformación logarítmica reduce parte de la asimetría y mejora notablemente la bondad del ajuste, todavía existen observaciones extremas o influyentes que afectan al comportamiento del modelo.

## Conclusión de la ampliación

La transformación logarítmica mejora de forma clara la capacidad explicativa del modelo. Mientras que el modelo general y el modelo seleccionado mediante AIC explicaban aproximadamente el 39.5 % de la variabilidad del radio planetario, el modelo logarítmico alcanza un \(R^2\) ajustado de 0.8345. Además, el AIC se reduce notablemente, pasando de valores cercanos a 23605 en los modelos anteriores a 3081.18 en el modelo logarítmico. Esto indica que, desde el punto de vista de la bondad del ajuste, la transformación logarítmica supone una mejora importante.

También se reduce considerablemente la desviación típica residual, que pasa de aproximadamente 3.61 en los modelos con la variable original a 0.344 en el modelo logarítmico. No obstante, esta comparación debe interpretarse con cautela, ya que el modelo logarítmico no predice directamente el radio planetario en radios terrestres, sino su logaritmo.

En cuanto a los coeficientes del modelo logarítmico, las variables estadísticamente significativas son `log_pl_bmasse`, `st_rad` y `st_mass`. La variable con mayor importancia es `log_pl_bmasse`, cuyo coeficiente positivo indica que los planetas con mayor masa tienden a presentar un mayor radio, manteniendo constantes el resto de variables. Además, `st_rad` y `st_mass` también presentan efectos positivos y significativos, lo que sugiere que las características de la estrella anfitriona siguen siendo relevantes para explicar el tamaño planetario. En cambio, `log_pl_orbsmax`, `pl_eqt`, `st_teff` y `log_sy_dist` no resultan significativas al nivel del 5 %, ya que sus intervalos de confianza contienen el valor 0.

Sin embargo, el diagnóstico de residuos muestra que la transformación logarítmica no resuelve completamente las limitaciones del modelo. El test de Shapiro-Wilk presenta un p-valor inferior a 0.001, por lo que se rechaza la hipótesis de normalidad de los residuos. El test de Breusch-Pagan también presenta un p-valor inferior a 0.001, lo que indica que persisten problemas de heterocedasticidad. Además, el test de Durbin-Watson obtiene un estadístico de 1.4986 con p-valor inferior a 0.001, por lo que se detecta autocorrelación positiva en los residuos. Finalmente, mediante la distancia de Cook se identifican 257 observaciones potencialmente influyentes.

Por tanto, el modelo logarítmico puede considerarse una mejora importante respecto al modelo lineal original en términos de capacidad explicativa y ajuste global. No obstante, no cumple plenamente los supuestos clásicos de regresión lineal, por lo que sus resultados deben interpretarse con cautela. En conjunto, la transformación logarítmica permite capturar mejor la relación entre las variables astronómicas y el radio planetario, pero la complejidad y heterogeneidad de los datos sugieren que podrían ser necesarios modelos más flexibles, como regresión robusta, modelos no lineales o modelos específicos para poblaciones diferenciadas de exoplanetas.