#Παρουσίαση του Dataset Το dataset περιλαμβάνει 53.392 εγγραφές και 33 στήλες. Τα κύρια χαρακτηριστικά του είναι:
Μεταβλητή Στόχος: Data_Value (το ποσοστό % εμφάνισης του φαινομένου, π.χ. παχυσαρκία).
Ανεξάρτητες Μεταβλητές: YearStart, LocationDesc (Πολιτεία), Stratification1 (Ηλικία, Φύλο, Εισόδημα, Εκπαίδευση).
Ποιότητα: Περιλαμβάνει διαστήματα εμπιστοσύνης (Low_Confidence_Limit, High_Confidence_Limit) και μέγεθος δείγματος (Sample_Size).
library(ggplot2)
library(dplyr)
df <- read.csv("obesity_data.csv")
# Καθαρισμός δεδομένων
df_clean <- df %>%
filter(!is.na(Data_Value), !is.na(Sample_Size)) %>%
filter(StratificationCategory1 != "")
#Οπτικοποίηση Δεδομένων
ggplot(df_clean, aes(x = StratificationCategory1, y = Data_Value, fill = StratificationCategory1)) +
geom_boxplot() +
theme_minimal() +
labs(title = "Κατανομή Ποσοστών ανά Κατηγορία",
y = "Ποσοστό (%)",
x = "Κατηγορία") +
theme(axis.text.x = element_text(angle = 45, hjust = 1))
#Εξετάζουμε αν το μέγεθος του δείγματος επηρεάζει τη διασπορά των τιμών.
ggplot(df_clean, aes(x = Sample_Size, y = Data_Value)) +
geom_point(alpha = 0.2, color = "darkblue") +
geom_smooth(method = "lm", color = "red") +
labs(title = "Σχέση Sample Size και Data Value", x = "Μέγεθος Δείγματος", y = "Τιμή")
## `geom_smooth()` using formula = 'y ~ x'
#Απλη παλινδρόμηση
m1 <- lm(Data_Value ~ YearStart, data = df_clean)
summary(m1)
##
## Call:
## lm(formula = Data_Value ~ YearStart, data = df_clean)
##
## Residuals:
## Min 1Q Median 3Q Max
## -30.277 -7.050 -0.450 5.841 46.459
##
## Coefficients:
## Estimate Std. Error t value Pr(>|t|)
## (Intercept) 49.462660 55.373822 0.893 0.372
## YearStart -0.009093 0.027504 -0.331 0.741
##
## Residual standard error: 10.25 on 48344 degrees of freedom
## Multiple R-squared: 2.261e-06, Adjusted R-squared: -1.842e-05
## F-statistic: 0.1093 on 1 and 48344 DF, p-value: 0.741
#Πολλαπλή Παλινδρόμηση (Έτος + Κατηγορία)
m2 <- lm(Data_Value ~ YearStart + StratificationCategory1, data = df_clean)
summary(m2)
##
## Call:
## lm(formula = Data_Value ~ YearStart + StratificationCategory1,
## data = df_clean)
##
## Residuals:
## Min 1Q Median 3Q Max
## -30.312 -7.032 -0.439 5.846 46.424
##
## Coefficients:
## Estimate Std. Error t value Pr(>|t|)
## (Intercept) 49.089440 55.377975 0.886 0.3754
## YearStart -0.008982 0.027506 -0.327 0.7440
## StratificationCategory1Education 0.254679 0.151480 1.681 0.0927 .
## StratificationCategory1Gender 0.086902 0.191603 0.454 0.6502
## StratificationCategory1Income 0.223474 0.130562 1.712 0.0870 .
## StratificationCategory1Race/Ethnicity 0.185227 0.139522 1.328 0.1843
## StratificationCategory1Total 0.071433 0.253463 0.282 0.7781
## ---
## Signif. codes: 0 '***' 0.001 '**' 0.01 '*' 0.05 '.' 0.1 ' ' 1
##
## Residual standard error: 10.25 on 48339 degrees of freedom
## Multiple R-squared: 9.142e-05, Adjusted R-squared: -3.269e-05
## F-statistic: 0.7366 on 6 and 48339 DF, p-value: 0.6201
# 1. Υπολογισμός SSE
res1 <- residuals(m1)
res2 <- residuals(m2)
sse_value1 <- sum(res1^2)
sse_value2 <- sum(res2^2)
# 2. Υπολογισμός R-squared
sum_m1 <- summary(m1)
sum_m2 <- summary(m2)
r1 <- sum_m1$r.squared
r2 <- sum_m2$r.squared
# 3. Δημιουργία του πίνακα
μοντέλα <- c("Simple", "Multiple")
r_τετράγωνο <- c(r1, r2)
σφάλμα_SSE <- c(sse_value1, sse_value2)
τελικό_table <- data.frame(μοντέλα, r_τετράγωνο, σφάλμα_SSE)
# 4. Εμφάνιση
print(τελικό_table)
## μοντέλα r_τετράγωνο σφάλμα_SSE
## 1 Simple 2.260652e-06 5076295
## 2 Multiple 9.142135e-05 5075842
Για να επιβεβαιώσουμε την εγκυρότητα του μοντέλου, εξετάζουμε τα υπόλοιπα (residuals):
par(mfrow = c(2, 2))
#Διαγνωστικά διαγράμματα για το πολλαπλό μοντέλο (m2)
plot(m2)
#Συμπεράσματα Παρατηρούμε ότι το R-squared αυξάνεται και το SSE μειώνεται στο δεύτερο μοντέλο, γεγονός που αποδεικνύει ότι οι δημογραφικοί παράγοντες εξηγούν καλύτερα τη διακύμανση της παχυσαρκίας από ό,τι ο χρόνος μόνος του.