Το Shapley Supercluster ή Shapley Concentration (SCl 124) αποτελεί τη μεγαλύτερη συγκέντρωση γαλαξιών στο κοντινό μας σύμπαν που σχηματίζει μια βαρυτικά αλληλεπιδρώσα ενότητα. Αντί να επεκτείνεται με το σύμπαν, έλκει τον εαυτό του προς τα μέσα λόγω της ισχυρής βαρυτικής του επίδρασης.
Χαρακτηριστικά: - Εμφανίζεται ως εντυπωσιακή υπερπυκνότητα στην κατανομή των γαλαξιών - Βρίσκεται στον αστερισμό του Κενταύρου (Centaurus) - Απόσταση: 650 εκατομμύρια έτη φωτός από τη Γη - Αποτελεί κρίσιμο στοιχείο για την κατανόηση της δομής του σύμπαντος σε μεγάλες κλίμακες
Η παρούσα ανάλυση έχει ως στόχο να: 1. Εξερευνήσει τα χαρακτηριστικά των γαλαξιών του Shapley Supercluster 2. Εφαρμόσει τεχνικές clustering για την ταξινόμηση των γαλαξιών 3. Συγκρίνει διαφορετικές μεθόδους clustering (Hierarchical vs K-means) 4. Παρουσιάσει οπτικοποιήσεις για την κατανόηση της χωρικής κατανομής
Το 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
# Επιλογή μεταβλητών για 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
# Εφαρμογή 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")
# Προσθήκη 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
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 με 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")
| 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 |
# Δημιουργία προβολής 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")
# Δημιουργία 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 | 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")
| 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")
| 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 έδωσαν συνεπή αλλά συμπληρωματικά αποτελέσματα