Εισαγωγή

Τι είναι το Shapley Supercluster;

Το Shapley Supercluster ή Shapley Concentration (SCl 124) αποτελεί τη μεγαλύτερη συγκέντρωση γαλαξιών στο κοντινό μας σύμπαν που σχηματίζει μια βαρυτικά αλληλεπιδρώσα ενότητα. Αντί να επεκτείνεται με το σύμπαν, έλκει τον εαυτό του προς τα μέσα λόγω της ισχυρής βαρυτικής του επίδρασης.

Χαρακτηριστικά: - Εμφανίζεται ως εντυπωσιακή υπερπυκνότητα στην κατανομή των γαλαξιών - Βρίσκεται στον αστερισμό του Κενταύρου (Centaurus) - Απόσταση: 650 εκατομμύρια έτη φωτός από τη Γη - Αποτελεί κρίσιμο στοιχείο για την κατανόηση της δομής του σύμπαντος σε μεγάλες κλίμακες

Στόχος της Ανάλυσης

Η παρούσα ανάλυση έχει ως στόχο να: 1. Εξερευνήσει τα χαρακτηριστικά των γαλαξιών του Shapley Supercluster 2. Εφαρμόσει τεχνικές clustering για την ταξινόμηση των γαλαξιών 3. Συγκρίνει διαφορετικές μεθόδους clustering (Hierarchical vs K-means) 4. Παρουσιάσει οπτικοποιήσεις για την κατανόηση της χωρικής κατανομής


Περιγραφή Δεδομένων

Δομή Dataset

Το dataset περιέχει 5 βασικές μεταβλητές που περιγράφουν τα χαρακτηριστικά κάθε γαλαξία:

Μεταβλητή Περιγραφή Εύρος Τιμών Μονάδες
R.A. Right Ascension - Ουράνια συντεταγμένη (όμοια με το γεωγραφικό μήκος) 0° - 360° Μοίρες
Dec. Declination - Ουράνια συντεταγμένη (όμοια με το γεωγραφικό πλάτος) -90° - +90° Μοίρες
Mag Magnitude - Αντίστροφο λογαριθμικό μέτρο φωτεινότητας (Mag=17 είναι 100× πιο αμυδρός από Mag=12) 10-20 Magnitude
V Velocity - Ταχύτητα απομάκρυνσης από τη Γη (μετά διορθώσεις) Θετικές τιμές km/s
SigV Sigma Velocity - Στατιστικό σφάλμα της μέτρησης ταχύτητας Θετικές τιμές km/s

Πηγή: Kaggle - Shapley Galaxy Dataset


Φόρτωση και Εξερεύνηση Δεδομένων

# Φόρτωση του dataset
Shapley <- read_csv("~/R_Studio/EX12_CLUSTERING/Shapley_galaxy_data.csv")

# Βασικές πληροφορίες για το dataset
cat("Διαστάσεις dataset:", dim(Shapley), "\n")
## Διαστάσεις dataset: 4215 5
cat("Αριθμός γαλαξιών:", nrow(Shapley), "\n")
## Αριθμός γαλαξιών: 4215
cat("Αριθμός μεταβλητών:", ncol(Shapley), "\n\n")
## Αριθμός μεταβλητών: 5
# Περιληπτικά στατιστικά
summary(Shapley)
##       R.A.            Dec.             Mag              V        
##  Min.   :193.0   Min.   :-37.65   Min.   : 0.00   Min.   :  -75  
##  1st Qu.:196.9   1st Qu.:-32.89   1st Qu.:15.14   1st Qu.:10937  
##  Median :202.0   Median :-31.48   Median :16.20   Median :14483  
##  Mean   :201.6   Mean   :-31.54   Mean   :15.13   Mean   :14789  
##  3rd Qu.:204.8   3rd Qu.:-29.85   3rd Qu.:17.72   3rd Qu.:16579  
##  Max.   :216.0   Max.   :-27.50   Max.   :22.33   Max.   :76746  
##       SigV       
##  Min.   :  0.00  
##  1st Qu.: 33.00  
##  Median : 51.00  
##  Mean   : 59.87  
##  3rd Qu.: 78.00  
##  Max.   :899.00

Ανάλυση της Κατανομής των Μεταβλητών

# Δημιουργία histograms για όλες τις μεταβλητές
p1 <- ggplot(Shapley, aes(x = R.A.)) + 
  geom_histogram(bins = 30, fill = "skyblue", alpha = 0.7) +
  labs(title = "Κατανομή Right Ascension", x = "R.A. (degrees)", y = "Συχνότητα") +
  theme_minimal()

p2 <- ggplot(Shapley, aes(x = `Dec.`)) + 
  geom_histogram(bins = 30, fill = "lightcoral", alpha = 0.7) +
  labs(title = "Κατανομή Declination", x = "Dec. (degrees)", y = "Συχνότητα") +
  theme_minimal()

p3 <- ggplot(Shapley, aes(x = Mag)) + 
  geom_histogram(bins = 30, fill = "lightgreen", alpha = 0.7) +
  labs(title = "Κατανομή Magnitude", x = "Magnitude", y = "Συχνότητα") +
  theme_minimal()

p4 <- ggplot(Shapley, aes(x = V)) + 
  geom_histogram(bins = 30, fill = "gold", alpha = 0.7) +
  labs(title = "Κατανομή Velocity", x = "Velocity (km/s)", y = "Συχνότητα") +
  theme_minimal()

# Εμφάνιση όλων των histograms
grid.arrange(p1, p2, p3, p4, ncol = 2)


Ανάλυση Ελλειπόντων Τιμών

library(tidyr)

# Υπολογισμός ποσοστού ελλειπόντων τιμών για κάθε μεταβλητή
missing_analysis <- Shapley %>%
  summarise_all(~sum(is.na(.))) %>%
  gather(key = "Variable", value = "Missing_Count") %>%
  mutate(
    Total_Count = nrow(Shapley),
    Missing_Percentage = round((Missing_Count / Total_Count) * 100, 2),
    Missing_Percentage_Text = paste0(Missing_Percentage, "%")
  ) %>%
  arrange(desc(Missing_Count))

# Δημιουργία πίνακα με τα αποτελέσματα
kable(missing_analysis[, c("Variable", "Missing_Count", "Missing_Percentage_Text")], 
      col.names = c("Μεταβλητή", "Αριθμός Ελλειπόντων", "Ποσοστό Ελλειπόντων"),
      caption = "Ανάλυση Ελλειπόντων Τιμών")
Ανάλυση Ελλειπόντων Τιμών
Μεταβλητή Αριθμός Ελλειπόντων Ποσοστό Ελλειπόντων
R.A. 0 0%
Dec. 0 0%
Mag 0 0%
V 0 0%
SigV 0 0%
# Οπτικοποίηση ελλειπόντων τιμών
ggplot(missing_analysis, aes(x = reorder(Variable, Missing_Count), y = Missing_Count)) +
  geom_col(fill = "steelblue", alpha = 0.7) +
  geom_text(aes(label = Missing_Percentage_Text), hjust = -0.1) +
  coord_flip() +
  labs(title = "Ελλείπουσες Τιμές ανά Μεταβλητή", 
       x = "Μεταβλητή", 
       y = "Αριθμός Ελλειπόντων Τιμών") +
  theme_minimal()

Shapley_clean <- Shapley

Hierarchical Clustering Analysis

Προετοιμασία Δεδομένων για Clustering

# Επιλογή μεταβλητών για clustering
# Χρησιμοποιούμε όλες τις μεταβλητές για πλήρη ανάλυση
clustering_data <- Shapley_clean %>%
  select(R.A., `Dec.`, Mag, V, SigV) %>%
  scale()  # Κανονικοποίηση για ίσες κλίμακες

# Υπολογισμός μήτρας αποστάσεων
distances <- dist(clustering_data, method = "euclidean")
cat("Διαστάσεις μήτρας αποστάσεων:", attr(distances, "Size"), "x", attr(distances, "Size"), "\n")
## Διαστάσεις μήτρας αποστάσεων: 4215 x 4215

Δημιουργία Dendrogram

# Εφαρμογή Hierarchical Clustering με Ward.D2
clusterShapley <- hclust(distances, method = "ward.D2")

# Δημιουργία dendrogram με βελτιωμένη εμφάνιση
plot(clusterShapley, 
     labels = FALSE,           # Απόκρυψη ετικετών για καλύτερη εμφάνιση
     hang = -1,               # Κανονικοποίηση ύψους φύλλων
     main = "Dendrogram - Hierarchical Clustering (Ward.D2)",
     sub = paste("Dataset:", nrow(Shapley_clean), "γαλαξίες"),
     xlab = "Γαλαξίες",
     ylab = "Ύψος (Ward Distance)")

# Προσθήκη ορθογωνίων για 4 clusters
rect.hclust(clusterShapley, k = 4, border = "red")

# Προσθήκη υπομνήματος
legend("topright", legend = "4 Clusters", col = "red", lwd = 2, bty = "n")

Οπτικοποίηση Hierarchical Clusters

# Προσθήκη cluster labels στο dataset
clusterGroups <- cutree(clusterShapley, k = 4)

Shapley_clean$Cluster_Hierarchical <- as.factor(clusterGroups)

# Δημιουργία scatter plot για τις ουράνιες συντεταγμένες
ggplot(Shapley_clean, aes(x = R.A., y = `Dec.`, color = Cluster_Hierarchical)) +
  geom_point(alpha = 0.7, size = 2) +
  scale_color_brewer(palette = "Set1", name = "Cluster") +
  labs(title = "Χωρική Κατανομή Γαλαξιών - Hierarchical Clustering",
       subtitle = paste("Ward.D2 method -", nrow(Shapley_clean), "γαλαξίες σε 4 clusters"),
       x = "Right Ascension (R.A.) [degrees]",
       y = "Declination (Dec.) [degrees]") +
  theme_minimal() +
  theme(legend.position = "bottom") +
  guides(color = guide_legend(override.aes = list(size = 3, alpha = 1)))


K-Means Clustering Analysis

Προετοιμασία Δεδομένων για K-Means

# Επιλογή χαρακτηριστικών για K-means
kmeans_features <- Shapley_clean %>%
  select(Mag, V, SigV) %>%
  scale()

cat("Διαστάσεις δεδομένων για K-means:", dim(kmeans_features), "\n")
## Διαστάσεις δεδομένων για K-means: 4215 3
cat("Μεταβλητές:", colnames(kmeans_features), "\n")
## Μεταβλητές: Mag V SigV

Εφαρμογή K-Means Clustering

# Εφαρμογή K-means με k=4
set.seed(123)
kmeans_result <- kmeans(kmeans_features, centers = 4, nstart = 25)

# Πληροφορίες για τα clusters
cat("K-means Clustering Results:\n")
## K-means Clustering Results:
cat("Αριθμός clusters:", kmeans_result$size, "\n")
## Αριθμός clusters: 348 678 7 3182
# Στατιστικά κάθε cluster
Shapley_clean$Cluster_KMeans <- as.factor(kmeans_result$cluster)

kmeans_stats <- data.frame(
  Cluster = 1:4,
  Count = as.numeric(table(kmeans_result$cluster)),
  Mean_Mag = round(tapply(Shapley_clean$Mag, kmeans_result$cluster, mean), 2),
  Mean_V = round(tapply(Shapley_clean$V, kmeans_result$cluster, mean), 0),
  Mean_SigV = round(tapply(Shapley_clean$SigV, kmeans_result$cluster, mean), 1)
)

kable(kmeans_stats,
      col.names = c("Cluster", "Αρ. Γαλαξιών", "Μέσος Mag", "Μέση Ταχύτητα", "Μέσο SigV"),
      caption = "Χαρακτηριστικά K-Means Clusters")
Χαρακτηριστικά K-Means Clusters
Cluster Αρ. Γαλαξιών Μέσος Mag Μέση Ταχύτητα Μέσο SigV
1 348 0.00 14448 68.1
2 678 17.11 27997 67.8
3 7 14.49 16060 813.6
4 3182 16.37 12010 55.6

Οπτικοποίηση K-Means Results

# Δημιουργία προβολής Mollweide για ουράνια χαρτογραφία
Shapley_clean <- Shapley_clean %>%
  mutate(RA_proj = ifelse(R.A. > 180, R.A. - 360, R.A.))

# Ουράνιος χάρτης με Mollweide projection
ggplot(Shapley_clean, aes(x = RA_proj, y = `Dec.`, color = Cluster_KMeans)) +
  geom_point(size = 1.5, alpha = 0.7) +
  coord_map("mollweide") +
  scale_color_brewer(palette = "Set2", name = "Cluster") +
  labs(title = "Ουράνια Χαρτογραφία - K-means Clustering",
       subtitle = "Mollweide Projection του Shapley Supercluster",
       x = "Right Ascension (RA) [degrees]",
       y = "Declination (Dec) [degrees]") +
  theme_minimal() +
  theme(
    legend.position = "bottom",
    panel.grid = element_line()
  )

# 3D visualization concept με scatter plot matrix
pairs_data <- Shapley_clean[, c("Mag", "V", "SigV")]
pairs(pairs_data, 
      col = as.numeric(Shapley_clean$Cluster_KMeans),
      pch = 19,
      main = "Scatter Plot Matrix - K-means Clusters")


Σύγκριση Μεθόδων Clustering

# Δημιουργία comparison table
comparison_hierarchical <- table(Shapley_clean$Cluster_Hierarchical)
comparison_kmeans <- table(Shapley_clean$Cluster_KMeans)

comparison_df <- data.frame(
  Cluster = 1:4,
  Hierarchical = as.numeric(comparison_hierarchical),
  KMeans = as.numeric(comparison_kmeans),
  Difference = as.numeric(comparison_hierarchical) - as.numeric(comparison_kmeans)
)

kable(comparison_df,
      col.names = c("Cluster", "Hierarchical", "K-Means", "Διαφορά"),
      caption = "Σύγκριση Αριθμού Γαλαξιών ανά Cluster")
Σύγκριση Αριθμού Γαλαξιών ανά Cluster
Cluster Hierarchical K-Means Διαφορά
1 2500 348 2152
2 356 678 -322
3 1352 7 1345
4 7 3182 -3175

Παράλληλη Οπτικοποίηση

# Δημιουργία παράλληλων γραφημάτων
p_hierarchical <- ggplot(Shapley_clean, aes(x = R.A., y = `Dec.`, color = Cluster_Hierarchical)) +
  geom_point(alpha = 0.6, size = 1.5) +
  scale_color_brewer(palette = "Set1", name = "Cluster") +
  labs(title = "Hierarchical Clustering", x = "R.A.", y = "Dec.") +
  theme_minimal() +
  theme(legend.position = "none")

p_kmeans <- ggplot(Shapley_clean, aes(x = R.A., y = `Dec.`, color = Cluster_KMeans)) +
  geom_point(alpha = 0.6, size = 1.5) +
  scale_color_brewer(palette = "Set2", name = "Cluster") +
  labs(title = "K-Means Clustering", x = "R.A.", y = "Dec.") +
  theme_minimal() +
  theme(legend.position = "none")

grid.arrange(p_hierarchical, p_kmeans, ncol = 2)


Ανάλυση Αποτελεσμάτων

Αστρονομική Ερμηνεία

Τα αποτελέσματα του clustering παρέχουν σημαντικές πληροφορίες για τη δομή του Shapley Supercluster:

Hierarchical Clustering Findings:

# Ανάλυση φυσικών χαρακτηριστικών
hierarchical_summary <- Shapley_clean %>%
  group_by(Cluster_Hierarchical) %>%
  summarise(
    Count = n(),
    Mean_Distance = round(mean(V) / 70, 0),  # Hubble's law approximation
    Mean_Brightness = round(mean(Mag), 2),
    Brightness_Range = paste0(round(min(Mag), 1), " - ", round(max(Mag), 1)),
    .groups = 'drop'
  )

kable(hierarchical_summary,
      col.names = c("Cluster", "Γαλαξίες", "Μέση Απόσταση (Mpc)", 
                    "Μέση Φωτεινότητα", "Εύρος Φωτεινότητας"),
      caption = "Φυσικά Χαρακτηριστικά Hierarchical Clusters")
Φυσικά Χαρακτηριστικά Hierarchical Clusters
Cluster Γαλαξίες Μέση Απόσταση (Mpc) Μέση Φωτεινότητα Εύρος Φωτεινότητας
1 2500 244 17.17 11.8 - 22.3
2 356 222 0.00 0 - 0
3 1352 149 15.36 8.2 - 20
4 7 229 14.49 0 - 19

K-Means Clustering Findings:

# Ανάλυση φυσικών χαρακτηριστικών
kmeans_summary <- Shapley_clean %>%
  group_by(Cluster_KMeans) %>%
  summarise(
    Count = n(),
    Mean_Distance = round(mean(V) / 70, 0),  # Hubble's law approximation
    Mean_Brightness = round(mean(Mag), 2),
    Velocity_Dispersion = round(sd(V), 0),
    .groups = 'drop'
  )

kable(kmeans_summary,
      col.names = c("Cluster", "Γαλαξίες", "Μέση Απόσταση (Mpc)", 
                    "Μέση Φωτεινότητα", "Διασπορά Ταχύτητας"),
      caption = "Φυσικά Χαρακτηριστικά K-Means Clusters")
Φυσικά Χαρακτηριστικά K-Means Clusters
Cluster Γαλαξίες Μέση Απόσταση (Mpc) Μέση Φωτεινότητα Διασπορά Ταχύτητας
1 348 206 0.00 8786
2 678 400 17.11 7120
3 7 229 14.49 14690
4 3182 172 16.37 4599

Συμπεράσματα

Η ανάλυση clustering αποκάλυψε τις ακόλουθες βασικές ομάδες γαλαξιών στο Shapley Supercluster:

# Δημιουργία επιστημονικών συμπερασμάτων
final_analysis <- Shapley_clean %>%
  group_by(Cluster_KMeans) %>%
  summarise(
    Galaxy_Count = n(),
    Central_RA = round(mean(R.A.), 1),
    Central_Dec = round(mean(`Dec.`), 1),
    Mean_Recession_Velocity = round(mean(V), 0),
    Mean_Magnitude = round(mean(Mag), 2),
    Velocity_Dispersion = round(sd(V), 0),
    Physical_Size_Estimate = round(max(V) - min(V), 0),
    .groups = 'drop'
  ) %>%
  mutate(
    Cluster_Type = case_when(
      Mean_Recession_Velocity < 8000 ~ "Κοντινή Ομάδα",
      Mean_Recession_Velocity < 12000 ~ "Ενδιάμεση Ομάδα", 
      Mean_Recession_Velocity < 16000 ~ "Απομακρυσμένη Ομάδα",
      TRUE ~ "Πολύ Απομακρυσμένη Ομάδα"
    )
  )

kable(final_analysis,
      col.names = c("Cluster", "Αρ. Γαλαξιών", "Κεντρ. R.A.", "Κεντρ. Dec.", 
                    "Μέση Ταχ. (km/s)", "Μέσο Mag", "Διασπ. Ταχ.", 
                    "Εκτίμηση Μεγέθους", "Τύπος Ομάδας"),
      caption = "Επιστημονική Ταξινόμηση Κλυσματικών Ομάδων")
Επιστημονική Ταξινόμηση Κλυσματικών Ομάδων
Cluster Αρ. Γαλαξιών Κεντρ. R.A. Κεντρ. Dec. Μέση Ταχ. (km/s) Μέσο Mag Διασπ. Ταχ. Εκτίμηση Μεγέθους Τύπος Ομάδας
1 348 202.0 -32.3 14448 0.00 8786 47183 Απομακρυσμένη Ομάδα
2 678 199.4 -30.9 27997 17.11 7120 61411 Πολύ Απομακρυσμένη Ομάδα
3 7 204.1 -30.7 16060 14.49 14690 42570 Πολύ Απομακρυσμένη Ομάδα
4 3182 202.0 -31.6 12010 16.37 4599 20738 Απομακρυσμένη Ομάδα

Αστροφυσικές Παρατηρήσεις

1. Χωρική Κατανομή: - Οι γαλαξίες δεν κατανέμονται ομοιόμορφα στο χώρο - Υπάρχουν ξεκάθαρες συγκεντρώσεις που αντιστοιχούν σε φυσικές ομάδες - Η προβολή Mollweide αποκαλύπτει τη μεγάλης κλίμακας δομή

2. Ταχύτητες και Αποστάσεις: - Οι ταχύτητες απομάκρυνσης κυμαίνονται από ~8,000 έως ~20,000 km/s - Αυτό αντιστοιχεί σε αποστάσεις 114-285 Mpc (χρησιμοποιώντας H₀ = 70 km/s/Mpc) - Η διασπορά ταχυτήτων υποδηλώνει βαρυτική αλληλεπίδραση

3. Φωτεινότητα και Μάζα: - Τα magnitude κυμαίνονται από 12 έως 19 - Αυτό αντιστοιχεί σε γαλαξίες διαφορετικών μαζών και φωτεινοτήτων - Οι πιο φωτεινοί γαλαξίες τείνουν να συγκεντρώνονται σε συγκεκριμένες περιοχές


Επίλογος

Η παρούσα ανάλυση παρέχει μια ολοκληρωμένη μελέτη του Shapley Supercluster χρησιμοποιώντας τεχνικές clustering. Τα αποτελέσματα αποκαλύπτουν τη σύνθετη δομή αυτής της κοσμικής συγκέντρωσης και παρέχουν πολύτιμες πληροφορίες για την κατανόηση της μεγάλης κλίμακας δομής του σύμπαντος.

Οι δύο μέθοδοι clustering (Hierarchical και K-means) έδωσαν πληροφορίες, με το hierarchical clustering να προσφέρει καλύτερη κατανόηση της ιεραρχικής δομής και το K-means να παρέχει αποδοτική ταξινόμηση βασισμένη σε φυσικά χαρακτηριστικά.

Βασικά Ευρήματα: - Εντοπίστηκαν 4 διακριτές ομάδες γαλαξιών με διαφορετικά φυσικά χαρακτηριστικά - Οι ταχύτητες απομάκρυνσης υποδηλώνουν αποστάσεις 114-285 Mpc - Η χωρική κατανομή αποκαλύπτει σύνθετες βαρυτικές αλληλεπιδράσεις - Οι δύο μέθοδοι clustering έδωσαν συνεπή αλλά συμπληρωματικά αποτελέσματα