Advertisement
Guest User

Untitled

a guest
Feb 10th, 2016
62
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
R 3.99 KB | None | 0 0
  1. #Wczytanie danych, wstepna eksploracja, przydzielenie wspolrzednych oraz prezentacja danych
  2. setwd('C:/Users/schul_000/Desktop/GEOSTATA KOŁO/A')
  3. dane <- read.csv("data/dane.csv")
  4. surowe_dane <- read.csv("data/dane.csv")
  5. summary(dane)
  6. library('sp')
  7. coordinates(dane) <- ~X+Y
  8. summary(dane)
  9. spplot(dane, "Pb")
  10. spplot(dane, "Zn")
  11. library('ggplot2')
  12. #Zbadanie rozkladu Pb i podstawowych statystyk
  13. ggplot(dane@data, aes(Pb)) + geom_histogram() #prawoskosny, duzo wartosci odstajacych
  14. boxplot(dane$Pb)
  15. summary(dane$Pb)
  16. sd(dane$Pb)
  17. #Zbadanie rozkladu Zn i podstawowych statystyk
  18. ggplot(dane@data, aes(Zn)) + geom_histogram() #prawoskosny, duzo wartosci odstajacych
  19. boxplot(dane$Zn)
  20. summary(dane$Zn) #wartosc NA!!
  21. sd(dane$Zn)
  22. #usuniecie wartosci globalnie odstajacym w jednym i drugim zbiorze
  23. q1 <- as.numeric(quantile(dane$Pb, .25))
  24. q3 <- as.numeric(quantile(dane$Pb, .75))
  25. summary(dane$Pb > q3 + 1.5*(q3-q1))
  26. summary(dane$Pb < q1 - 1.5*(q3-q1))
  27. dane@data[c(3, 92, 29, 74, 31, 102, 20, 27, 25, 23, 30, 26, 10),2] <- NA
  28. ggplot(dane@data, aes(Pb)) + geom_histogram()
  29. boxplot(dane$Pb)
  30. spplot(dane, "Pb")
  31. q1 <- as.numeric(quantile(dane$Zn, .25, na.rm = TRUE))
  32. q3 <- as.numeric(quantile(dane$Zn, .75, na.rm = TRUE))
  33. summary(dane$Zn > q3 + 1.5*(q3-q1))
  34. summary(dane$Zn < q1 - 1.5*(q3-q1))
  35. dane@data[c(92, 29, 102, 99),3] <- NA
  36. ggplot(dane@data, aes(Pb)) + geom_histogram()
  37. boxplot(dane$Pb)
  38. spplot(dane, "Pb")
  39. #stworzenie map semiwariogramów
  40. library('gstat')
  41. dane_pb <- dane[!is.na(dane$Pb), ]
  42. vario_map_pb <- variogram(Pb ~ 1, dane_pb, cutoff = 100, width = 1, map = TRUE)
  43. plot(vario_map_pb, threshold=1)
  44. dane_zn <- dane[!is.na(dane$Zn), ]
  45. vario_map_zn <- variogram(Zn ~ 1, dane_zn, cutoff = 100, width = 1, map = TRUE)
  46. plot(vario_map_zn, threshold=1)
  47. #anizotropia na kacie 45 stopni
  48. vario_kier_pb <- variogram(Pb ~ 1, dane_pb, alpha = c(45, 90, 135, 180))
  49. plot(vario_kier_pb)
  50. vario_kier_zn <- variogram(Zn ~ 1, dane_zn, alpha = c(45, 90, 135, 180))
  51. plot(vario_kier_zn)
  52. #model pb
  53. vario_kier_fit_pb <- vgm(psill = 0.15, model = "Sph", range = 3, nugget = 0.1, anis = c(45, 0.25))
  54. plot(vario_kier_pb, vario_kier_fit_pb, as.table = TRUE)
  55. #model zn
  56. vario_kier_fit_zn <- vgm(psill = 2, model = "Sph", range = 3, nugget = 0.1, anis = c(45, 0.25))
  57. plot(vario_kier_zn, vario_kier_fit_zn, as.table = TRUE)
  58. #siatka
  59. siatka <- expand.grid(X=seq(from=min(surowe_dane$X)-1, to=max(surowe_dane$X)+1, by=0.25),
  60.                       Y=seq(from=min(surowe_dane$Y)-1, to=max(surowe_dane$Y)+1, by=0.25))
  61. coordinates(siatka)<- ~X+Y
  62. gridded(siatka)<-TRUE
  63. plot(siatka)
  64. plot(dane, add = TRUE)
  65. #kriging pb
  66. ok_pb <- krige(Pb~1, dane_pb, siatka, model=vario_kier_fit_pb, maxdist=20)
  67. summary(ok_pb)
  68. spplot(ok_pb, 'var1.pred')
  69. spplot(ok_pb, 'var1.var')
  70. #kriging zn
  71. ok_zn <- krige(Zn~1, dane_zn, siatka, model=vario_kier_fit_zn, maxdist=20)
  72. summary(ok_zn)
  73. spplot(ok_zn, 'var1.pred')
  74. spplot(ok_zn, 'var1.var')
  75. #Ocena
  76. #Pb
  77. #walidacja podzbiorem
  78. #sredni blad estymacji
  79. library('caret')
  80. set.seed(124)
  81. indeks_pb <- as.vector(createDataPartition(dane_pb$Pb, p=0.75, list=FALSE))
  82. train_pb <- dane_pb[indeks_pb, ]
  83. test_pb <- dane_pb[-indeks_pb, ]
  84. vario_train_pb <- variogram(Pb~1, data=train_pb)
  85. ok_train_pb <- krige(Pb~1, train_pb, test_pb, model=vario_kier_fit_pb, maxdist=20)
  86. reszta_ok_pb <-  ok_train_pb$var1.pred - test_pb$Pb
  87. summary(reszta_ok_pb)
  88. ME <- sum(reszta_ok_pb)/length(reszta_ok_pb)
  89. ME
  90. #pierwiastek sredniego bledu kwadratowego
  91. RMSE <- sqrt(sum(reszta_ok_pb^2)/length(reszta_ok_pb))
  92. RMSE
  93. #Zn
  94. #sredni blad estymacji
  95. indeks_zn <- as.vector(createDataPartition(dane_zn$Zn, p=0.75, list=FALSE))
  96. train_zn <- dane_zn[indeks_zn, ]
  97. test_zn <- dane_zn[-indeks_zn, ]
  98. vario_train_zn <- variogram(Zn~1, data=train_zn)
  99. ok_train_zn <- krige(Zn~1, train_zn, test_zn, model=vario_kier_fit_zn, maxdist=20)
  100. reszta_ok_zn <-  ok_train_zn$var1.pred - test_zn$Zn
  101. summary(reszta_ok_zn)
  102. ME <- sum(reszta_ok_zn)/length(reszta_ok_zn)
  103. ME
  104. #pierwiastek sredniego bledu kwadratowego
  105. RMSE <- sqrt(sum(reszta_ok_zn^2)/length(reszta_ok_zn))
  106. RMSE
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement