EnjaErker / 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

Linearna regresija #4

Open EnjaErker opened 4 years ago

EnjaErker commented 4 years ago

Pozdravljeni, lotila sem se napredne analize podatkov, odločila sem se za model linearne regresije. Prosila bi, če bi lahko na hitro pogledali, ali je koda za omenjeni model ustrezna. In ali se vam zdi interpretacija dobljenih rezultatov v poročilu smiselna? Poleg tega imam še eno težavo, saj se mi zemljevidi ne izrisujejo. Preden sem začela delati na napredni analizi podatkov so še delovali. Očitno sem kasneje kodo ponesreči nekje spremenila, vendar ne uspem najti napake. Vnaprej hvala za vso pomoč in odgovore.

timotejvesel commented 4 years ago

Pri meni se zemljevidi izrišejo (če jih poženem v konzoli ter tudi v poročilu). Kolikor vidim v zgodovini sprememb, se tudi koda za zemljevide ni spremenila. Kakšno napako ti javi?

Ker imaš v kodi klice za izrisovanje grafov in zemljevidov, npr.

g1 <- ggplot(leta.skupine.vod) + aes(x=leto, y=povprecje, color=skupina) + geom_line() + geom_point() +
  labs(x="Leto",y="Povprečno število stanovanj z vodovodom",title="Število vodovodnih napeljav glede na gostoto poselitve, 2002 - 2010", color = "Gostota poselitve") +
  theme(legend.position = "bottom") 
plot(g1)

ali pa

ggplot(t, aes(x = Place, y = delez)) + 
  geom_point()

te grafe izriše tudi v poročilu (takoj, ko pokličeš datoteko vizualizacija/vizualizacija.r; torej jih izriše tudi na nepravem mestu). Ker jih nato kličeš še v poročilu (vsakega posebej, na mestu, kjer želiš, da ga prikaže), so vsi grafi podvojeni. Možni sta dve rešitvi:

V poročilu dodaj še warning=FALSE pri klicu datoteke uvoz/uvoz.r, da ti ne bo izpisalo opozorila.

Koda za model linearne regresije je pravilna, sama interpretacija pa se mi tudi zdi korektna. Mogoče bi si lahko ogledala tudi vrednost deleža v odvisnosti od plač in brezposelnosti hkrati (nisem pa prepričan ali je to bolj smiselno kot to kar si naredila).

EnjaErker commented 4 years ago

Hvala za hiter odgovor. Sem popravila podvojenost grafov in izpis opozorila pri klicu datoteke uvoz.

Kar pa se tiče zemljevidov, ko želim izrisati zemljevid, javi tole napako: Error: The projection of the shape object merge(obcine, stanovanja_z, by.x = "OB_UIME", by.y = "Obcina") is not known, while it seems to be projected.

Glede modela linearne regresije pa bom poskusila potem dodati tudi vrednost deleža v odvisnosti od plač in brezposelnosti hkrati.

timotejvesel commented 4 years ago

Na mojem računalniku mi jih izriše, mi pa javi opozorilo, ki je podobno tvoji napaki: Warning message: Current projection of shape merge(obcine, gostota_z, by.x = "OB_UIME", by.y = "Obcina") unknown and cannot be determined. Prav tako mi zemljevide nariše, če projekt odprem v binderju (z enakim opozorilom), tako da trenutno ne vem v čem bi bil problem. Ali si poskusila projekt odpreti v binderju? Predvidevam, da bi jih potem moralo narisati. Mogoče bi @jaanos vedel v čem je problem.

Sicer ti pa poročila ne prevede, saj imaš v njem dvakrat napisan del kode image

jaanos commented 4 years ago

Očitno novejša različica knjižnice zahteva, da se nastavi projekcija, ki pa v samem zemljevidu ni podana. Mislim, da bi moralo delovati, če pri tm_shape dodaš parameter projection="merc" (ali pa podaš katero drugo projekcijo, navedeno v pomoči za tmaptools::get_proj4).

Mimogrede, za branje datotek XLSX uporabljaš knjižnico xlsx, ki pa je nekoliko problematična, saj za svoje delovanje potrebuje Javo. Namesto tega prosim uporabi knjižnico readxl - namesto funkcije read.xlsx bo sedaj potrebno uporabiti funkcijo read_xlsx (s podčrtajem namesto pike), ki se kliče nekoliko drugače:

pomankljivosti <- read_xlsx("podatki/pomankljivosti1.xlsx", sheet=1, skip=3)
kazalniki <- read_xlsx("podatki/kazalniki1.xlsx", sheet=1)

V slednjem primeru funkcija prebere samo 5 stolpcev, tako da ne bo potrebno poimenovati zadnjih dveh in ju nato pobrisati.

Nadalje, v uvoz.r nameščaš knjižnice z install.packages. Tega ne počni, saj se bodo potem te nameščale ob vsakem prevajanju poročila. Če potrebuješ kakšno knjižnico za delovanje v Binderju, lahko to navedeš v install.R - mislim pa sicer, da to ne bo potrebno.

EnjaErker commented 4 years ago

Hvala za hiter odgovor. Sem odstranila podvojeni del kode v poročilu, zamenjala knjižnico xlsx in odstranila install.packages v uvozu.

Glede zemljevidov sem poskusila dodati parameter projection="merc", vendar še vedno ne deluje. Če želim zemljevid izrisati, se mi sedaj izpiše nekoliko drugačno opozorilo kot prej in sicer: Error in st_crs.character(x[[shape.id[masterID]]]$projection) : invalid crs: merc.

Podobno se zgodi, ko želim poročilo v projekt.Rmd prevesti, ko kliknem gumb Knit, se izpiše: Error in st_crs.character(x[[shape.id[masterID]]]$projection) : invalid crs: merc calls: . . . gather_shape_info -> -> st_crs.character In addition: There were 15 warnings (use warnings() to see them). Prav tako v projekt.Rmd vidim vse grafe do zemljevidov. Od tam naprej pa se ne izrišejo niti zemljevidi niti grafa linearne regresije.

timotejvesel commented 4 years ago

@jaanos, mi je uspelo posodobiti knjižnico in dobim sedaj enako napako. Nobena od projekcij navedenih v pomoči za get_proj4 ne deluje.

V poročilu pa mi v binderju prikaže vse grafe (na mojem računalniku pa vse razen zemljevidov, ki pa jih je tako ali tako potrebno zakomentirati, da se poročilo sploh prevede).

jaanos commented 4 years ago

Meni sicer ni uspelo namestiti nove različice tmap, tako da ne morem poskusiti, ampak a morda deluje s parametrom projection=tmaptools::get_proj4("merc") (ali pa katera druga projekcija namesto merc)?

timotejvesel commented 4 years ago

Ne deluje, spet je (pri vseh projekcijah) prvotna napaka Error: The projection of the shape object merge(obcine, gostota_z, by.x = "OB_UIME", by.y = "Obcina") is not known, while it seems to be projected.

jaanos commented 4 years ago

@EnjaErker, predlagam, da dokler ne najdemo rešitve, iz poročila zakomentiraš prikazovanje zemljevidov. Ko projekt dokončaš, se prepričaj, da deluje v Binderju, potem pa lahko odkomentiraš zemljevide, ki bi pri poganjanju v Binderju morali delovati.

Če želiš, lahko tudi poganjaš RStudio v Binderju (povezava v README.md) - v tem primeru ta teče nekje v oblaku, tako da se spremembe izgubijo, če jih ne shraniš drugam. Najlažje bo seveda, da jih objaviš na GitHubu - v ta namen lahko vstaviš svoje podatke v datoteko gitconfig (odstrani znake #), da boš lahko uporabljala git pri poganjanju v Binderju (pri tem te bo vsakič vprašalo za uporabniško ime in geslo za GitHub).

Lahko pa seveda uporabiš kak drug zemljevid, npr.

obcine <- uvozi.zemljevid("https://biogeo.ucdavis.edu/data/gadm3.6/shp/gadm36_SVN_shp.zip", "gadm36_SVN_2", encoding="UTF-8")

Seveda pa ima ta zemljevid drugače poimenovane stolpce (in se morda razlikuje tudi v poimenovanju nekaterih občin), tako da bi bilo potrebno ustrezno prilagoditi združevanje s podatki.

Mimogrede, opažam še, da v uvoz.r kličeš program uvozi.zemljevid.r iz vzorčnega repozitorija - tega raje ne počni, saj tako nimaš kontrole nad kodo, ki se izvede. Ta program imaš že pri sebi, tako da v libraries.r raje vrni vrstico

source("lib/uvozi.zemljevid.r",encoding="UTF-8")

iz uvozi.zemljevid.r pa odstrani uvoz zemljevida: https://github.com/EnjaErker/APPR-2019-20/blob/ad55bd3e03133a4fa9e42074f32dd7385ec6daa3/lib/uvozi.zemljevid.r#L69-L71

EnjaErker commented 4 years ago

Hvala za vse odgovore in pomoč. Sem popravila kodo, ki se tiče uvoza zemljevida. Bom pa sedaj še zakomentirala trenutne zemljevide in poskusila z uporabo drugega zemljevida.

EnjaErker commented 4 years ago

Mislim, da gre za starejši shapefile. Sedaj sem projekcijo (v vizualizacija.r) določila takole in deluje proj4string(obcine)<- CRS("+proj=utm +zone=10+datum=WGS84").

jaanos commented 4 years ago

Hvala @EnjaErker za rešitev - bo prišla prav tudi v prihodnje!