#vprašanje a - uvoz podatkov
vedno shraniš nov RMarkdown z imenom datoteke, ko daš preber podatke pa napiše ./ime.csv, da ga najde, če ne moreš od C: dalje pisat lokacijo, vedno preveri če so podatki pravilno uvoženi
#rabimo kodo za uvoz podatkov
podatki <- read.table("./Maraton.csv",
header = TRUE, #v prvi vrstici je ime spremenljivke
sep = ";",
dec = ",")
head(podatki)
## ID Teža Višina Tlak Utrip Hemoglobin Hematokrit Holesterol Glukoza Spol
## 1 1 72 179.0 105 64 160 50 4.9 4.7 1
## 2 2 68 178.0 105 60 158 51 4.8 4.9 0
## 3 3 64 174.0 109 54 155 51 4.5 7.0 0
## 4 4 63 174.0 112 54 153 58 8.0 7.2 0
## 5 5 61 173.5 100 53 152 59 4.6 6.7 0
## 6 6 60 173.0 99 53 158 49 3.9 6.0 0
#vprašanje b - Opredelite enoto proučevanja: enota je posamezen atlet, velikost vzorca je 35. Spremenljivke: ID,teža…
Če pogledamo tabelo: to so razmernostne spremenljivke, to pomeni, da lahko povemo da je nekdo 2x težji oz razmerje, izjema je spol ki je nominalna kategorialna spremenljivka. Vedno bo pisalo kaj je 0 in kaj 1, torej kaj so punce in kaj ženske. Če ne piše kaj je ena in kaj nič mi ne vemo kiro so punce in kaj fanti.
#vprašanje c
mean(podatki$Višina) #znotraj podazkov imamo več spremenljivk zato damo $ višina
## [1] 176.9571
sd(podatki$Višina)
## [1] 5.85156
Ocenjujemo, da je povprečna višina 176,95 cm. Povprečje +- sd je 68%, dva sd je 95%, tri sd pa 99,7% Sd meri razpršenost spremenljivke okoli povprečja.
#vprašanje d - spremenljivko spol spremenimo v faktor
Kdaj spremenljivko spremenimo v faktor? Ko imamo nominalne št.
podatki$Spol <- factor(podatki$Spol, #spremenljivka ki jo hočemo spremenit
levels = c(0, 1), #trenutne kode za spol
labels = c("Z", "M")) #kode ki pomenijo sedaj 0 in 1
head(podatki$Spol)
## [1] M Z Z Z Z Z
## Levels: Z M
#vprašanje e - opisna stat. za ženske in moške ločeno
library(pastecs) #to veš da je stat. desc v pastecs
round(stat.desc(podatki[ , colnames(podatki) %in% c("Glukoza")]), 2) #to ni ok ker je za vseh 35 podatkov skupaj
## nbr.val nbr.null nbr.na min max range
## 35.00 0.00 0.00 3.80 7.20 3.40
## sum median mean SE.mean CI.mean.0.95 var
## 178.65 4.80 5.10 0.18 0.36 1.12
## std.dev coef.var
## 1.06 0.21
podatkiM <- podatki[podatki$Spol == "M", ] #nov objekt in iz njega potegnemo samo M
print(summary(podatkiM["Glukoza"]))
## Glukoza
## Min. :3.800
## 1st Qu.:4.000
## Median :4.600
## Mean :4.536
## 3rd Qu.:4.700
## Max. :6.000
library(psych)
describeBy(podatki$Glukoza, podatki$Spol) #odgovor na e
##
## Descriptive statistics by group
## group: Z
## vars n mean sd median trimmed mad min max range skew kurtosis se
## X1 1 14 5.96 0.93 5.8 5.97 1.33 4.6 7.2 2.6 0.12 -1.62 0.25
## ------------------------------------------------------------
## group: M
## vars n mean sd median trimmed mad min max range skew kurtosis se
## X1 1 21 4.54 0.7 4.6 4.45 0.74 3.8 6 2.2 0.97 -0.13 0.15
#prvi zavihek je ženske moski, drugi so ocene za Ž, v tretjem so ocene za M ,ko damo knjit vidimo v rezultatih, da so imeli v povprečju višjo st. glukoze Ž, in sicer 5,96 - mean
#n je število žensk 14, sd pove kako spremenljivka varira okoli povprečja, median= polovica ženska ima stopnjo glukoze do vključno 5,8 preostale pa več, Min in max so minimalna raven glukoze in maksimalna raven glukoze pti ženskah. Range je razpon, razlika med min in max je 2,6 oz.ženska z najvišjo st. glukoze ima za 2,6 enot višjo glukozo kot oseba z najnižjo. SKEW - Porazdelitev znotraj žensk je simetrična, ker je 1.12, ker je blizu 0, je asimetrična v desno ker je več kot 0.
#se (y prečna) - standardna napaka ocene aritmetične sredine - nam pove kako bi varirale ocene če ponavljamo vzorec.
#vaja: testiramo naslednjo domnevo H0: povprečje glukoze je 6.0. kako izračunamo t preizkus iz teh podatkov.......t=povprečje-ar.sredina/se(y)=5.96-6/0,25.....M=n-1=13
#vprašanje f
library(pastecs)
round(stat.desc(podatki[ ,!colnames(podatki) %in% c("ID","spol")]), 2) #vzemi podatke, po imenih spremenljivk vključi vse razen te - id in spol, če mamo številke damo lahko spredaj -, če pa hočemo z imeni tko kot tuki pa moremo dat klicaj!!!
## Teža Višina Tlak Utrip Hemoglobin Hematokrit Holesterol
## nbr.val 35.00 35.00 35.00 35.00 35.00 35.00 35.00
## nbr.null 0.00 0.00 0.00 0.00 0.00 0.00 0.00
## nbr.na 0.00 0.00 0.00 0.00 0.00 0.00 0.00
## min 55.00 166.00 90.00 49.00 143.00 45.00 3.40
## max 81.00 189.00 135.00 64.00 183.00 69.00 8.00
## range 26.00 23.00 45.00 15.00 40.00 24.00 4.60
## sum 2375.00 6193.50 3838.00 1967.00 5445.00 1801.00 167.60
## median 68.00 177.00 108.00 55.00 157.00 51.00 4.70
## mean 67.86 176.96 109.66 56.20 155.57 51.46 4.79
## SE.mean 1.30 0.99 1.79 0.67 1.45 0.82 0.17
## CI.mean.0.95 2.64 2.01 3.64 1.37 2.94 1.66 0.34
## var 59.01 34.24 112.47 15.81 73.13 23.49 1.00
## std.dev 7.68 5.85 10.61 3.98 8.55 4.85 1.00
## coef.var 0.11 0.03 0.10 0.07 0.05 0.09 0.21
## Glukoza Spol
## nbr.val 35.00 NA
## nbr.null 0.00 NA
## nbr.na 0.00 NA
## min 3.80 NA
## max 7.20 NA
## range 3.40 NA
## sum 178.65 NA
## median 4.80 NA
## mean 5.10 NA
## SE.mean 0.18 NA
## CI.mean.0.95 0.36 NA
## var 1.12 NA
## std.dev 1.06 NA
## coef.var 0.21 NA
round(stat.desc(podatki[ , -c(1, 10)]),2) #to je 2. način
## Teža Višina Tlak Utrip Hemoglobin Hematokrit Holesterol
## nbr.val 35.00 35.00 35.00 35.00 35.00 35.00 35.00
## nbr.null 0.00 0.00 0.00 0.00 0.00 0.00 0.00
## nbr.na 0.00 0.00 0.00 0.00 0.00 0.00 0.00
## min 55.00 166.00 90.00 49.00 143.00 45.00 3.40
## max 81.00 189.00 135.00 64.00 183.00 69.00 8.00
## range 26.00 23.00 45.00 15.00 40.00 24.00 4.60
## sum 2375.00 6193.50 3838.00 1967.00 5445.00 1801.00 167.60
## median 68.00 177.00 108.00 55.00 157.00 51.00 4.70
## mean 67.86 176.96 109.66 56.20 155.57 51.46 4.79
## SE.mean 1.30 0.99 1.79 0.67 1.45 0.82 0.17
## CI.mean.0.95 2.64 2.01 3.64 1.37 2.94 1.66 0.34
## var 59.01 34.24 112.47 15.81 73.13 23.49 1.00
## std.dev 7.68 5.85 10.61 3.98 8.55 4.85 1.00
## coef.var 0.11 0.03 0.10 0.07 0.05 0.09 0.21
## Glukoza
## nbr.val 35.00
## nbr.null 0.00
## nbr.na 0.00
## min 3.80
## max 7.20
## range 3.40
## sum 178.65
## median 4.80
## mean 5.10
## SE.mean 0.18
## CI.mean.0.95 0.36
## var 1.12
## std.dev 1.06
## coef.var 0.21
#Knit - razumevanje za Utrip:NBR.val je 35 pove, da je vvrorcu 35 enot, nbr.null pove da ni imela nobena oseba tripa 0, nbr.na pove, da ni nobene enote ki manjka,15 je razlika med najvišjim in najnižjim utripom. SEmean - standardna napaka ocene povprečja. CImean0.95 - če bi hotli narediti 95% intervalno oceno -> (1.37 je interval zaupanja) 56.2+- 1,37, dobimo zgornjo in spodnjo mejo. Če bi naredili 100 vzorcev po 35 atletov bi s 95 od 100tih vzorcev ujeli povprečni utrip oz. pravo pop. povprečje, s petimi pa zgrešili. Katera spremenljivka ima največjo variabilnost? Holesterol in Glukoza,ker je coef.var(s/ar. sredina)*100 največji.
#vprašanje g - nariši Hematokrit, histogram -> uporabimo, ko imamo številsko spremenljivko in bi radi narisali njeno porazdelitev
hist(podatki$Hematokrit, #pokličem spremenjivko
main = "Frekvenčna porazdelitev za hematokrit", #ime grafa
xlab = "Hematokrit",
ylab = "Število maratonovcev",
breaks = seq(40, 80, 2), #od kje do kje hočemo stolpce
col = "lightblue",
border = "black")
#porazdelitev je asimetrična v desno
library(ggplot2)
##
## Attaching package: 'ggplot2'
## The following objects are masked from 'package:psych':
##
## %+%, alpha
ggplot(podatki,aes(x = Hematokrit)) +
geom_histogram(binwidth = 2, fill = "lightblue", colour = "black")+
ylab("Frekvenca") + #preimenujemo y os
scale_x_continuous(limits= c(40, 80), breaks = seq(40, 80, 2.5)) +
#sami definiramo x skalo od 40-80, limits določimo min in max, z breaks pa kje nam točno izpiše osi
labs(title = "Frekvenčna porazdelitev za hematokrit") #dodamo ime grafa
#warning je irelevanten!če vas moti napišemo zraven rja od rchunka warning = FALSE
#vprašanje h - grafikon kvantilov za Glukozo
boxplot(podatki$Glukoza ~ podatki$Spol,
main = "Graf kvantilov za glukozo ločeno po spolu",
xlab = "Spol",
ylab = "Glukoza",
col = c("pink", "lightblue"),
border = "black")
naredimo še isto z ggplot
library(ggplot2)
ggplot(podatki, aes(x = Spol, y = Glukoza, fill = Spol)) + #fill je barva škatle, barvo pa spremeniš, da daš scale_fill_manual
geom_boxplot() + #do tu napišeš, pa vidiš kaj ti da in kaj moreš dodat
scale_fill_manual(values = c("pink", "lightblue")) +
theme_dark() #ozadje
Razlaga: Mediana glukoze je 5,8.
funkcija za mediano za Ž
median(podatki[podatki$Spol == "Z" , ]$Glukoza) #vzamem podatke, izberem samo tiste vrstice kjer je z(pred vejico) in samo za te vrstice zračunaj mediano
## [1] 5.8