La humanidad ha alzado su vista al cielo para observar las estrellas desde tiempos inmemoriables. Estos astros han sido desde fuente de inspiración para artistas, hasta fuente de información y objeto de estudio con respecto a cómo es el universo en el que vivimos. Con el desarrollo de la astronomía se han podido estudiar las estrellas del firmamento, sin embargo hay muchos tipos de ellas, las cuáles pueden clasificarse de a cuerdo a ciertas características como su nivel de luz y calor, su longevidad y su gravedad.
La base de datos se puede descargar desde: link base de datos
Base de Datos
A continuación observaremos las primeras 6 filas de nuestra base de datos.
head(dataset,n=6)## Temperature..K. Luminosity.L.Lo. Radius.R.Ro. Absolute.magnitude.Mv.
## 1 3068 0.002400 0.1700 16.12
## 2 3042 0.000500 0.1542 16.60
## 3 2600 0.000300 0.1020 18.70
## 4 2800 0.000200 0.1600 16.65
## 5 1939 0.000138 0.1030 20.06
## 6 2840 0.000650 0.1100 16.98
## Star.type Star.color Spectral.Class
## 1 0 Red M
## 2 0 Red M
## 3 0 Red M
## 4 0 Red M
## 5 0 Red M
## 6 0 Red M
Información de la Base de Datos
La base de datos contiene varias características de estrellas, entre las cuáles están:
- Temperatura Absoluta (Grados Kelvin)
- Luminosidad Relativa (L/Lo)
- Radio Relativo (R/Ro)
- Magnitud Absoluta (Mv)
- Color de la Estrella
- Clase Espectral (O,B,A,F,G,K,,M)
- Tipo de Estrella
Esta información se encuentra detallada en las columnas respectivas.
names(dataset)## [1] "Temperature..K." "Luminosity.L.Lo." "Radius.R.Ro."
## [4] "Absolute.magnitude.Mv." "Star.type" "Star.color"
## [7] "Spectral.Class"
Tipos de Datos
Analicemos la estructura de nuestra base de datos:
str(dataset)## 'data.frame': 240 obs. of 7 variables:
## $ Temperature..K. : int 3068 3042 2600 2800 1939 2840 2637 2600 2650 2700 ...
## $ Luminosity.L.Lo. : num 0.0024 0.0005 0.0003 0.0002 0.000138 0.00065 0.00073 0.0004 0.00069 0.00018 ...
## $ Radius.R.Ro. : num 0.17 0.154 0.102 0.16 0.103 ...
## $ Absolute.magnitude.Mv.: num 16.1 16.6 18.7 16.6 20.1 ...
## $ Star.type : int 0 0 0 0 0 0 0 0 0 0 ...
## $ Star.color : chr "Red" "Red" "Red" "Red" ...
## $ Spectral.Class : chr "M" "M" "M" "M" ...
Valores Perdidos
Identificamos los valores faltantes de forma gráfica.
missmap(dataset)Observamos que nuestra base de datos está completa, ahora debemos realizar correcciones en los tipos de datos.
dataset$Spectral.Class<-factor(dataset$Spectral.Class)
dataset$Star.type<-factor(dataset$Star.type)Con las columnas “Spectral Class” y “Star Type” no tenemos ningún problema, sin embargo con “Star Color” debemos recodificar los niveles, para que aquellos similares tengan una sola etiqueta.
dataset$Star.color<-factor(dataset$Star.color, levels=c("Blue", "Blue-white", "Blue-White", "Blue ", "Blue white", "Blue White", "Blue white ", "Orange", "Orange-Red", "Pale yellow orange", "Red", "white", "White", "White-Yellow", "Whitish", "yellow-white", "yellowish", "Yellowish", "Yellowish White"), labels=c("Blue", "Blue-White", "Blue-White", "Blue", "Blue-White", "Blue-White", "Blue-White", "Orange", "Orange-Red", "Pale Yellow Orange", "Red", "White", "White","White-Yellow", "Whitish", "Yellow-White", "Yellowish", "Yellowish", "Yellowish-White"))
levels(dataset$Star.color)## [1] "Blue" "Blue-White" "Orange"
## [4] "Orange-Red" "Pale Yellow Orange" "Red"
## [7] "White" "White-Yellow" "Whitish"
## [10] "Yellow-White" "Yellowish" "Yellowish-White"
Ahora, veamos un conteo o resumen general de todos los datos
summary(dataset)## Temperature..K. Luminosity.L.Lo. Radius.R.Ro. Absolute.magnitude.Mv.
## Min. : 1939 Min. : 0.0 Min. : 0.0084 Min. :-11.920
## 1st Qu.: 3344 1st Qu.: 0.0 1st Qu.: 0.1027 1st Qu.: -6.232
## Median : 5776 Median : 0.1 Median : 0.7625 Median : 8.313
## Mean :10497 Mean :107188.4 Mean : 237.1578 Mean : 4.382
## 3rd Qu.:15056 3rd Qu.:198050.0 3rd Qu.: 42.7500 3rd Qu.: 13.697
## Max. :40000 Max. :849420.0 Max. :1948.5000 Max. : 20.060
##
## Star.type Star.color Spectral.Class
## 0:40 Red :112 A: 19
## 1:40 Blue : 56 B: 46
## 2:40 Blue-White : 41 F: 17
## 3:40 White : 10 G: 1
## 4:40 Yellow-White: 8 K: 6
## 5:40 Yellowish : 3 M:111
## (Other) : 10 O: 40
Visualización de Datos
Creamos nuestra gráfica de correlaciones
data_cor1<-dataset %>% dplyr::select(Temperature..K. , Luminosity.L.Lo. , Radius.R.Ro. , Absolute.magnitude.Mv.)
cor(data_cor1)## Temperature..K. Luminosity.L.Lo. Radius.R.Ro.
## Temperature..K. 1.00000000 0.3934041 0.06421597
## Luminosity.L.Lo. 0.39340408 1.0000000 0.52651572
## Radius.R.Ro. 0.06421597 0.5265157 1.00000000
## Absolute.magnitude.Mv. -0.42026054 -0.6926192 -0.60872823
## Absolute.magnitude.Mv.
## Temperature..K. -0.4202605
## Luminosity.L.Lo. -0.6926192
## Radius.R.Ro. -0.6087282
## Absolute.magnitude.Mv. 1.0000000
corrplot(cor(data_cor1))Vamos a determinar la clasificación estelar, para ello, primero analizaremos la cantidad de estrellas de acuerdo a su tipo y color.
ggplot(dataset, aes(x = Spectral.Class)) +
geom_bar(width=0.5, fill = "#528B8B") +
geom_text(stat='count', aes(label=stat(count)), vjust=-0.2) +
xlab("Tipo Espectral")+ylab("Conteo")+ggtitle("Diagrama de Barras: Tipo Espectral")+
theme_minimal()ggplot(dataset, aes(x = Star.color)) +
geom_bar(width=0.6, fill = "#32687a") +
geom_text(stat='count', aes(label=stat(count)), vjust=0.17) +
xlab("Color Estrella")+ylab("Conteo")+ggtitle("Diagrama de Barras: Color de Estrella")+theme_minimal()+theme(axis.text.x = element_text(angle = 90, vjust=0, hjust=1))ggplot(dataset, aes(x = Spectral.Class, fill=Star.color)) +
geom_bar(position = position_dodge()) +
geom_text(stat="count",aes(label=stat(count)),
position = position_dodge(width=1), vjust=-0.2)+xlab("Tipo Espectral")+ylab("Conteo")+ggtitle("Tipo espectral de acuerdo al color")+ scale_fill_manual(values=c("#0015ff", "#00bfff", "#ff7700", "#fbff00", "#33ff00", "#ff0000", "#575252", "#b8b654", "#c72eb8", "#4a1801", "#024f06", "#000000"))+ theme_minimal()Vemos que se puede clasificar a las estrellas de acuerdo a su color, ya que existe una relación entre este y el tipo espectral, sin embargo existen tipos que presentan colores contenidos en otros, por lo que es necesaria analizar más variables para la clasificación.
ggplot(dataset, aes(x = Star.type, fill=Spectral.Class)) +
geom_bar(position = position_dodge()) +
geom_text(stat="count",aes(label=stat(count)),
position = position_dodge(width=1), vjust=-0.2)+xlab("Tipo de Estrella")+ylab("Conteo")+ggtitle("Tipo espectral de acuerdo al tipo de estrella")+theme_minimal()De esta gráfica podemos concluir que todas las estrellas de Tipo 0 y Tipo 1, es decir, Enanas Marrones y Enanas Rojas pertenecen al Tipo Espectral M, que está constituido por los colores rojo y naranja. Vemos además que el Tipo Espectral F sólo esta presente en estrella de Tipo 2 y Tipo 3.
dataset%>%
ggplot() + aes(Temperature..K. , Absolute.magnitude.Mv. , color = Star.color) + geom_point() + xlab("Temperatura (K)") + ylab("Magnitud Absoluta") + ggtitle("Temperatura vs Magnitud Absoluta") + scale_color_manual(values=c("#0015ff", "#00bfff", "#ff7700", "#fbff00", "#33ff00", "#ff0000", "#575252", "#b8b654", "#c72eb8", "#4a1801", "#024f06", "#000000"))+theme_minimal()Esta gráfica muestra un resultado muy interesante, ya que llegamos al Diagrama H-R, el cúal es usado para clasificar estrellas de acuerdo a su ciclo de vida. El eje x representa la temperatura de la estrella, que también podría ser etiquetado de acuerdo al tipo espectral, así las estrellas más calientes aparecen de color azul y blanco, mientras que las menos calientes tienen colores rojos. Podemos representar la misma gráfica de acuerdo al tipo de estrella, dotando de una mayor exactitud a nuestro diagrama.
dataset%>%
ggplot() + aes(Temperature..K. , Absolute.magnitude.Mv. , color = Star.type) + geom_point() + xlab("Temperatura (K)") + ylab("Magnitud Absoluta") + ggtitle("Temperatura vs Magnitud Absoluta") + scale_color_manual(values=c("#0015ff", "#00bfff", "#ff7700", "#fbff00", "#33ff00", "#ff0000"))+theme_minimal()Observamos una tendecia de las estrellas de Tipo 2 a posicionarse en la parte superior izquierda de la gráfica, mientras que las de Tipo 4 y Tipo 5 se alinean en la parte inferior. Se presenta tambien lo que se conoce como Secuencia Principal que son las estrellas del Tipo 3, formando una “cola de ratón”. Para entender este comportamiento debemos definir la Magnitud Absoluta, que es nuestro eje y. Este valor indica qué tan brillante es un objeto para un observador a cierta distancia, es decir está en funcion de la luminosidad. Cabe recalcar que mientras mayor es el valor de la Magnitud Absoluta menos brillante es una estrella.
dataset%>%
ggplot() + aes(Absolute.magnitude.Mv., Luminosity.L.Lo. , color = Star.type) + geom_point() + xlab("Magnitud Absoluta") + ylab("Luminosidad") + ggtitle("Gráfico de dispersión Magnitud Absoluta vs Luminosidad") + scale_color_manual(values=c("#0015ff", "#00bfff", "#ff7700", "#fbff00", "#33ff00", "#ff0000"))+theme_minimal()Observamos la relación mencionada anteriormente. Mientras menor es la Magnitud Absoluta, la luminosidad de una estrella aumenta.
dataset%>%
ggplot() + aes(Radius.R.Ro. , Absolute.magnitude.Mv. , color = Star.type) + geom_point() + xlab("Radio") + ylab("Magnitud Absoluta") + ggtitle("Gráfico de dispersión Radio vs Magnitud Absoluta") + scale_color_manual(values=c("#0015ff", "#00bfff", "#ff7700", "#fbff00", "#33ff00", "#ff0000"))+theme_minimal()dataset%>%
ggplot() + aes(Radius.R.Ro. ,Temperature..K. ,color = Star.type) + geom_point() + xlab("Radio") + ylab("Temperatura (K)") + ggtitle("Gráfico de dispersión Radio vs Temperatura") + scale_color_manual(values=c("#0015ff", "#00bfff", "#ff7700", "#fbff00", "#33ff00", "#ff0000"))+theme_minimal()De estas dos gráficas podemos concluir que las estrellas de Tipo 5, es decir Hipergigantes, presentan un radio relativo mayor a 500 y una luminosidad (Magnitud Absoluta) alta, lo cuál podemos inferir que se debe a su gran tamaño mas no a su temperatura, ya que en el segundo gráfico observamos que las estrellas hipergigantes poseen temperaturas desde muy bajas hasta muy altas. Por su parte, las estrellas de Tipo 2 o Enanas Blancas a pesar de tener temperaturas relativamente altas, es su menor tamaño lo que provoca que irradien menos luz.
Conclusiones
Para predecir y clasificar de manera adecuada una estrella, debemos tener en cuenta lo siguiente:
- Las estrella de Tipo 0 y Tipo 1, es decir enanas rojas y marrones están caracterizadas por pertenecer al tipo espectral M en su totalidad, además su radio, temperatura y luminosidad presenta valores muy bajos. En el Diagrama H-R, todas las estrellas de estos tipos se encuentran en el cuadrante superior izquierdo.
- Las estrellas de Tipo 2 o enanas blancas, estan ubicadas en los cuadrantes adyacentes a las estrellas de tipo 0 y 1 en el diagrama H-R, esto se debe a su tamaño, lo que hace que irradien muy poca luz, a pesar de su temperatura, la cual supera los 5000 K, lo que provoca que tomen colores blancos y amarillentos.
- Las estrellas ubicadas en la secuencia principal serán las de Tipo 3, estas estrellas mantienen una relación predecible entre luminosidad y temperatura (la más brillante es la más caliente). Su magnitud absluta varía entre -5 y 7.
- Finalmente las estrellas de Tipo 4 y Tipo 5, es decir Supergigantes e Hipergigantes poseen una magnitud absoluta que va desde -5 en adelante, es decir irradian mucha luz, lo cuál se debe a su tamaño, lo cuál es mas notorio en las Hipergigantes, cabe recalcar que cualquier estrella cuyo radi relativo sea mayor a 500 ya se clasifica cómo Hipergigante.
- Cómo observación final, es necesario recalcar que temperatura no equivale a luminocidad, en el caso de las Hipergigantes, existen aquellas que presentan temperaturas bajas, pero debido a su tamaño irradian gran cantidad de energía lumínica.