StanicR17 / APPR-2019-20

Repozitorij z gradivi za predmet Analiza podatkov s programom R v študijskem letu 2019/20
MIT License
0 stars 0 forks source link

rmd, histogram #6

Open StanicR17 opened 4 years ago

StanicR17 commented 4 years ago

Zdravo,

pri histogramu, ki mi ga sicer izriše, se očitno pojavlja neka napaka, ki je neznam rešiti.

frekvenca_stevila_okuzb <- hist(podatki$moski+podatki$zenske, main = "Frekvenca števila okužb", xlab = "število okuženih",border = "yellow" ,col="darkmagenta")

Hkrati, me zanima kaj je narobe z rmd datoteko, saj mi grafi, če jih poženem samostojno delujejo, skupaj pa ne. Fotografija z imeno COVID, ki sem jo shranil v slike ni zaznana ali je treba kaj še posebej narediti?

Nazadnje, ali se vam projekt zdi dovolj obsežen ali bi bilo smiselno kje še kaj dodati. Hvala.

jaanos commented 4 years ago

Najprej bi svetoval, da podatke urediš po načelu tidy data - če želiš podatke prikazovati na istem grafu, potem naj bodo v razpredelnici v istem stolpcu, drug stolpec pa naj razločuje med njimi. Tako bi bilo smiselno razpredelnico podatki razbiti na dva dela: enega za delitev po spolu, drugega pa za skupne dnevne podatke:

podatki_spol <- podatki %>% select(datum, moski, zenske) %>% gather("spol", "stevilo", -datum)
podatki_skupaj <- podatki %>% transmute(datum, rutinsko.dnevno, raziskava.dnevno,
                                        okuzbe=moski+zenske, delovni.dan)

Potem lahko graf primerjave med spoloma narediš na enostavnejši način, saj ggplot poskrbi za barvanje in legendo:

dnevno_stevilo_okuzenih_moskivszenske <- ggplot(podatki_spol, aes(x=datum, y=stevilo, color=spol)) +
  geom_smooth(size=1) + geom_line() + ggtitle("Dnevno okuženih moški proti ženskam")

Podobno naredi tudi za primerjavo EU in ZDA (glej spodaj) ter za primerjave števila aktivnih primerov in testiranj.

Ko potrebuješ samo skupne podatke, lahko uporabiš razpredelnico podatki_skupaj, npr. za histogram. Sam sicer trenutno ne dobivam nobene napake, vseeno pa svetujem, da tudi v tem primeru uporabiš ggplot (in graf ustrezno oblikuješ):

ggplot(podatki_skupaj, aes(x=okuzbe)) + geom_histogram(binwidth=5)

Kar se tiče poročila, bloki kode, ki si jih dodal, niso ustrezno razmejeni - vsak blok kode naj se začne in konča s tremi `, pred njim in za njim pa naj bo prazna vrstica, npr.

```{r aktivne_okuzbe_realnevsCCA, echo=FALSE, message=FALSE, fig.align='center', warning=FALSE}
print(aktivne_okuzbe_realnevsCCA)
```

Pazi tudi, da v imenu bloka kode (oznaka za r) ni presledkov ali drugih posebnih znakov (tudi pred vejico ne), sicer se ustrezni grafi ne bodo prikazali pri poganjanju na Binderju.

Kar se slike tiče, ima ta končnico .jpeg in ne .png, kot imaš trenutno napisano v poročilu.

Opozoril bi še na graf števila primerov na svetu na milijon prebivalcev. Podatke zanj dobiš tako, da delaš povprečje števil primerov na milijon prebivalcev po državah, kar pa ni ustrezno, saj imajo države zelo različna prebivalstva. Ker prikazuješ podatke za cel svet, ni potrebe po tem, da jih prikažeš na milijon prebivalcev (saj jih z ničimer ne primerjaš) - enostavno lahko sešteješ skupno število primerov za vsako državo.

Podobno velja tudi za primere v Evropi - tukaj pa potrebuješ prebivalstvo Evrope, saj primerjaš z ZDA. Lahko ga pridobiš iz zunanjega vira, ali pa oceniš iz svojih podatkov, npr.

prebivalstvo_EU <- podatki_svet %>% filter(continent == "Europe") %>%
  transmute(location, millions=total_cases/total_cases_per_million) %>%
  filter(!is.nan(millions), !is.na(millions)) %>%
  group_by(location) %>% summarise(millions=mean(millions))

Potem lahko pripraviš razpredelnico, iz katere lahko narišeš graf na podoben način kot zgoraj:

podatki_EU_USA <- rbind(podatki_svet %>% filter(continent == "Europe") %>%
                          group_by(date) %>% summarise(total_cases=sum(total_cases, na.rm=TRUE)) %>%
                          transmute(date, location="Europe",
                                    total_cases_per_million=total_cases/sum(prebivalstvo_EU$millions)),
                        podatki_svet %>% filter(location == "United States") %>%
                          select(date, location, total_cases_per_million))

Svetujem še, da urediš grafe - poskrbi za ustrezne oznake osi in legend ter se znebi eksponentne notacije (najlažje tako, da podatke pri izrisu ustrezno deliš, npr. s 1000 - to naj se seveda odraža tudi na oznaki osi). Pri zadnjem grafu svetujem, da raje kot da prikažeš velikost celine z debelino črte, podatke deliš s tem številom - tako dobiš število testiranj na prebivalca, kar bo dalo veliko bolj primerljive podatke.

Pri napredni analizi pogrešam kaj bolj poglobljenega, kot sem omenil v #4. Iz prikazanih primerjav se žal kaj dosti ne vidi - poskusi poiskati tak par spremenljivk, da bo mogoče narediti kak model. Druga možnost, kot rečeno, bi bilo razvrščanje držav glede na podatke - morda lahko za vsako državo izračunaš mesečne podatke in razvrščaš na podlagi njih.