User:Sharp
Ajokelpoinen, antaa ymmärrykseni mukaan varsin oikeanlaisia tuloksia. Käyttöliittymä ja mallin tulosten uploadaus täytyy vielä tehdä.
library(OpasnetUtils)
data <- opbase.data(id="op_en4004.kerty_database")
- Otetaan mukaan vain yksilömittaukset
hdata <- data[data$Yksilöitä < 2,]
- Jätetään datasta pois sukupuolet, määrät ja muut tarpeettomat? sarakkeet
hdata <- hdata[c(1,2,7,8,9,10,11,15,16,17,20,21)]
- Eliminoidaan käyttökelvoton data
hdata <- hdata[hdata$Märkäpaino != 0,]
- Analysoidaan vain lihaskudosta
hdata <- hdata[hdata$Näyteosa == "lihas",]
- Analysoidaan vain elohopeaa
hdata <- hdata[hdata$Suure == "Elohopea",]
- Tutkitaan koodausvaiheessa pienempää otosta
otos <- hdata #hdata[1:2000,]
- Muutetaan tulossarake numeroiksi ja...
otos$Tulos <- as.numeric(levels(otos$Tulos))[otos$Tulos]
- poistetaan sieltä ei-numeeriset vastaukset
otos <- otos[!is.na(otos$Tulos),]
- Käsitellään tässä vaiheessa vasta järvet, tarkennetaan myöhemmin
otos <- otos[otos$Järvi != "",]
- Poistetaan otoksen faktoreista tarpeettomat levelit
for (column in 1:ncol(otos)){ if (is.factor(otos[,column])) { otos[,column] <- factor(otos[,column]) } }
- Luodaan vektorit kalojen nimiä ja keskipitoisuuksia varten
kala <- vector(length = length(levels(otos$Näytelaji))) keskipitoisuus <- vector(length = length(levels(otos$Näytelaji))) indeksi <- 0
- Silmukassa käydään laji kerrallaan kalat läpi ja otetaan niiden keskimääräinen elohopeapitoisuus talteen
for (laji in levels(otos$Näytelaji)) { indeksi <- indeksi + 1 temp <- otos[otos$Näytelaji == laji,] kala[indeksi] <- laji keskipitoisuus[indeksi] <- mean(temp$Tulos) }
- Luodaan vektoreista data.frame
kalaframe <- data.frame(kala, keskipitoisuus, stringsAsFactors = FALSE)
järvi <- vector(length = length(levels(otos$Järvi)))
keskipitoisuus <- vector(length = length(levels(otos$Järvi)))
indeksi <- 0
- Silmukassa käydään järvi kerrallaan järvet läpi ja otetaan niiden kalojen keskimääräinen elohopeapitoisuus talteen
for (vesistö in levels(otos$Järvi)) { indeksi <- indeksi + 1 temp <- otos[otos$Järvi == vesistö,] järvi[indeksi] <- vesistö keskipitoisuus[indeksi] <- mean(temp$Tulos) }
järviframe <- data.frame(järvi, keskipitoisuus, stringsAsFactors = FALSE)
- Lisätään dataframeihin koko suomeen suhteutettu pitoisuus
suht <- kalaframe$keskipitoisuus - mean(otos$Tulos) suhtkala <- cbind(kalaframe, suht)
suht <- järviframe$keskipitoisuus - mean(otos$Tulos) suhtjärvi <- cbind(järviframe, suht)
keskipitoisuus <- mean(otos$Tulos)
- Tässä kohti voisi uploadata asiat
- Tähän kohti käyttöliittymä jolla tarkastaa asioita.
- järvi <- vector(length = 23*513)
- kala <- järvi
- pitoisuus <- järvi
- indeksi <- 0
- for (vesistö in järviframe$järvi){
- for (laji in kalaframe$kala){
- indeksi <- indeksi + 1
- järvi[indeksi] <- vesistö
- kala[indeksi] <- laji
- keski <- mean(otos$Tulos)
- fisu <- suhtkala[suhtkala$kala == laji,]$suht
- lampi <- suhtjärvi[suhtjärvi$järvi == vesistö,]$suht
- pitoisuus[indeksi] <- keski + fisu + lampi
- }
- }
- testiframe1 <- data.frame(järvi, kala, pitoisuus, stringsAsFactors = FALSE)
- Tämä pätkä tarkastaa mallin antaman tuloksen suhteutettuna koko suomeen,
- ja virhearvoksi saadaan -2.702283e-13.
- summa <- 0
- keski <- mean(otos$Tulos)
- for (vesistö in levels(otos$Järvi)){
- for (laji in levels(otos$Näytelaji)){
- temp <- otos[otos$Järvi == vesistö,]
- temp <- temp[temp$Näytelaji == laji,]
- temp2 <- testiframe1[testiframe1$järvi == vesistö,]
- pitoisuus <- temp2[temp2$kala == laji,]$pitoisuus
- for (tulos in temp$Tulos){
- summa <- summa + (tulos - pitoisuus)
- }
- }
- }
- summary(kalaframe)
- summary(järviframe)
</rcode>