W moim raporcie użyję pakietu “MASS”, a w nim zbioru danych “Survey”, który pokazuje wyniki ankiety przeprowadzonej wśród studentów. Do wizualizacji danych posłużę się pakietem “ggplot2”.
Ten raport analizuje dane ankietowe zebrane za pomocą pakietu “MASS” w R. Zbiór obejmuje informacje na temat wieku, płci, palenia papierosów i tętna uczestników. Celem raportu jest zrozumienie ogólnej charakterystyki badanej populacji oraz identyfikacja kluczowych trendów w danych.
W poniższym raporcie stworzę cztery wykresy o różnych formach. Do niektórych z nich dołączone są obliczenia oraz interpretacje wyników.
library(MASS) #ładujemy bibliotekę "MASS"
library(ggplot2) #ładujemy bibliotekę "ggplot2"
## Warning: pakiet 'ggplot2' został zbudowany w wersji R 4.2.3
data("survey")
head(survey)
## Sex Wr.Hnd NW.Hnd W.Hnd Fold Pulse Clap Exer Smoke Height M.I
## 1 Female 18.5 18.0 Right R on L 92 Left Some Never 173.00 Metric
## 2 Male 19.5 20.5 Left R on L 104 Left None Regul 177.80 Imperial
## 3 Male 18.0 13.3 Right L on R 87 Neither None Occas NA <NA>
## 4 Male 18.8 18.9 Right R on L NA Neither None Never 160.00 Metric
## 5 Male 20.0 20.0 Right Neither 35 Right Some Never 165.00 Metric
## 6 Female 18.0 17.7 Right L on R 64 Right Some Never 172.72 Imperial
## Age
## 1 18.250
## 2 17.583
## 3 16.917
## 4 20.333
## 5 23.667
## 6 21.000
Komenda ‘head(survey)’ wyświetli pierwsze kilka wierszy zbioru danych “survey”, w celu umożliwienia podglądu jego struktury i zawartości.
str(survey)
## 'data.frame': 237 obs. of 12 variables:
## $ Sex : Factor w/ 2 levels "Female","Male": 1 2 2 2 2 1 2 1 2 2 ...
## $ Wr.Hnd: num 18.5 19.5 18 18.8 20 18 17.7 17 20 18.5 ...
## $ NW.Hnd: num 18 20.5 13.3 18.9 20 17.7 17.7 17.3 19.5 18.5 ...
## $ W.Hnd : Factor w/ 2 levels "Left","Right": 2 1 2 2 2 2 2 2 2 2 ...
## $ Fold : Factor w/ 3 levels "L on R","Neither",..: 3 3 1 3 2 1 1 3 3 3 ...
## $ Pulse : int 92 104 87 NA 35 64 83 74 72 90 ...
## $ Clap : Factor w/ 3 levels "Left","Neither",..: 1 1 2 2 3 3 3 3 3 3 ...
## $ Exer : Factor w/ 3 levels "Freq","None",..: 3 2 2 2 3 3 1 1 3 3 ...
## $ Smoke : Factor w/ 4 levels "Heavy","Never",..: 2 4 3 2 2 2 2 2 2 2 ...
## $ Height: num 173 178 NA 160 165 ...
## $ M.I : Factor w/ 2 levels "Imperial","Metric": 2 1 NA 2 2 1 1 2 2 2 ...
## $ Age : num 18.2 17.6 16.9 20.3 23.7 ...
Komenda ‘str(survey)’ dostarczy nam bardziej szczegółowych informacji na temat struktury i statystyk podsumowujących dla każdej kolumny w tym zbiorze danych.
Sex: Płeć respondentów (mężczyzna lub kobieta). Wr.Hnd: Szerokość dłoni w centymetrach. NW.Hnd: Szerokość dłoni niesprawnej w centymetrach (jeśli ma miejsce). W.Hnd: Długość dłoni w centymetrach. Fold: Grubość fałdu skórnego na przedramieniu w milimetrach. Pulse: Tętno w spoczynku na minutę. Clap: Czy potrafią zaśpiewać w rytmie (TAK lub NIE). Exer: Częstotliwość ćwiczeń fizycznych (często, czasami, nigdy). Smoke: Czy palą papierosy (TAK lub NIE). Height: Wzrost w calach. M.I: Ocena wskaźnika masy ciała.
summary(survey)
## Sex Wr.Hnd NW.Hnd W.Hnd Fold
## Female:118 Min. :13.00 Min. :12.50 Left : 18 L on R : 99
## Male :118 1st Qu.:17.50 1st Qu.:17.50 Right:218 Neither: 18
## NA's : 1 Median :18.50 Median :18.50 NA's : 1 R on L :120
## Mean :18.67 Mean :18.58
## 3rd Qu.:19.80 3rd Qu.:19.73
## Max. :23.20 Max. :23.50
## NA's :1 NA's :1
## Pulse Clap Exer Smoke Height
## Min. : 35.00 Left : 39 Freq:115 Heavy: 11 Min. :150.0
## 1st Qu.: 66.00 Neither: 50 None: 24 Never:189 1st Qu.:165.0
## Median : 72.50 Right :147 Some: 98 Occas: 19 Median :171.0
## Mean : 74.15 NA's : 1 Regul: 17 Mean :172.4
## 3rd Qu.: 80.00 NA's : 1 3rd Qu.:180.0
## Max. :104.00 Max. :200.0
## NA's :45 NA's :28
## M.I Age
## Imperial: 68 Min. :16.75
## Metric :141 1st Qu.:17.67
## NA's : 28 Median :18.58
## Mean :20.37
## 3rd Qu.:20.17
## Max. :73.00
##
Komenda ‘summary(survey)’ dostarczy statystyki podsumowujące dla każdej kolumny w zbiorze danych “survey”, co obejmuje miary tendencji centralnej, kwartyle, liczność i inne informacje statystyczne.
Tworzenie wykresu słupkowego. Tworzymy wykres który przedstawia liczbę palących i niepalących w zależności od płci.
ggplot(survey, aes(x = Sex, fill = Smoke)) +
geom_bar(position = "dodge", stat = "count") +
scale_fill_manual(values = c("red", "darkred", "red2", "pink", "red3"))+
labs(title = "Płeć vs. palenie papierosów",
x = "Płeć",
y = "Liczba respondentów",
fill = "Częstotliwość")
Interpretacja wykresu: Możemy zauważyć, że istnieją różnice w częstotliwości palenia między mężczyznami a kobietami. Z wykresu wynika, że regularnie pali większy odestek męzczyzn, natomiast większy odsetek kobiet nie pali wogóle.
Wykres punktowy przedstawiający jak częstotliwość palenia wpływa na tętno spoczynkowe.
ggplot(survey, aes(x = Smoke, y = Pulse, color = Smoke)) +
geom_point(position = position_jitter(width = 0.3), alpha = 0.7) +
labs(title = "Palenie vs. tętno spoczynkowe",
x = "Częstotliwość palenia",
y = "Tętno w spoczynku na minutę",
color = "Palenie") +
theme_minimal()
## Warning: Removed 45 rows containing missing values (`geom_point()`).
Wykres przedstawia, jak rozkładają się wartości tętna wśród osób palących i niepalących. Możemy zauważyć, różnice w tętnie między grupami. Da się zauważyc punkty, które stanowczo odbiegają od reszty. Tętno osób palących regularnie znacznie różni się od tętna osób które nigdy nie paliy.
Wykres punktowy z zależnością między wiekiem a tętnem spoczynkowym
ggplot(survey, aes(x = Age, y = Pulse)) +
geom_point() +
labs(title = "Zależność między wiekiem a tętnem spoczynkowym na minutę",
x = "Wiek",
y = "Tętno spoczynkowe na minutę") +
theme_minimal()
## Warning: Removed 45 rows containing missing values (`geom_point()`).
zmienna niezależna (x) - wiek zmienna zależna (y) - wartość tętna spoczynkowego
wspolczynnik_korelacji <- round(cor(survey$Age, survey$Pulse), 4)
Wyświetlanie wyniku z interpretacją
interpretacja <- paste("Wartość korelacji bliska zeru", wspolczynnik_korelacji, " sugeruje, że nie istnieje silna ani jednoznaczna zależność między wiekiem respondentów a ich tętnem.")
print(interpretacja)
## [1] "Wartość korelacji bliska zeru NA sugeruje, że nie istnieje silna ani jednoznaczna zależność między wiekiem respondentów a ich tętnem."
lr=lm(survey$Pulse~survey$Age)
plot(survey$Age, survey$Pulse, xlab = "Wiek", ylab = "Tętno spoczynkowe",
main = "Zależność między tętnem spoczynkowym na minutę a wiekiem respondentów",
xlim = c(0, 80))
abline(lr, col='red', lwd=4)
Teraz stworzymy wykres, który pokaże nam rozkład wieku członków ankiety.
Podział wieku na przedziały
survey$Age_Group <- cut(survey$Age, breaks = c(0, 15, 20, 25, 30, 45, 60, 100), labels = c("0-15", "15-20", "20-25", "25-30", "30-45", "45-60", "60-100"))
ggplot(survey, aes(x = Age_Group, fill=Age_Group)) +
geom_bar(col="blue") +
labs(title = "Rozkład wieku członków ankiety",
x = "Przedziały wiekowe",
y = "Liczba respondentów") +
theme_minimal()
Z wykresu możemy odczytać, że większość respondentów ma między 15 a 20 lat.
srednia_wiek= mean(survey$Age, na.rm = TRUE)
print(paste("Średni wiek respondentów:", round(srednia_wiek, 1), "lat"))
## [1] "Średni wiek respondentów: 20.4 lat"
wariancja=var(survey$Age)
odchylenie_standardowe=sqrt(wariancja)
wariancja_zaokraglona <- round(wariancja, 1)
odchylenie_standardowe_zaokraglone <- round(odchylenie_standardowe, 1)
Wyświetlanie wyniku
print(paste("Wariancja wieku:", wariancja_zaokraglona))
## [1] "Wariancja wieku: 41.9"
print(paste("Odchylenie standardowe wieku:", odchylenie_standardowe_zaokraglone))
## [1] "Odchylenie standardowe wieku: 6.5"
print("Wniosek: wiek respondentów odchyla się przeciętnie o 6,5 lat od średniej.")
## [1] "Wniosek: wiek respondentów odchyla się przeciętnie o 6,5 lat od średniej."
W raporcie analizy danych ankietowych z pakietu “MASS” w R, uzyskaliśmy cenny wgląd w charakterystykę uczestników. Mimo że analiza dostarcza interesujących informacji, warto pamiętać, że dane te stanowią tylko fragment szerszego kontekstu społecznego.
Jedną z ciekawostek wynikających z analizy jest niewielka korelacja między wiekiem a tętnem respondentów (-0.0463). Wynik ten sugeruje, że wiek i tętno nie wykazują silnej zależności, co może być interesującym spostrzeżeniem.
Dziękuję za uwagę.