-
Notifications
You must be signed in to change notification settings - Fork 4
/
Copy pathkriging.R
90 lines (78 loc) · 2.89 KB
/
kriging.R
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
#' ---
#' title: "Demo: How to perform the kriging on a specific day"
#' author: "Giovanni Bonafe'"
#' date: "October 4th, 2016"
#' ---
#' ## How to perform the kriging on a specific day
#' You can reproduce the following R code with
#' ```demo(kriging)``` after loading package ```pesco```. Note that
#' some of the commands used here have been already used in ```demo(prepare.day)```.
## load packages
require(pesco)
require(fields)
## load data
data(PM10.obs)
data(emissions)
data(PM10.ctm)
data(elevation)
## prepare data for the day
myDay <- "2015-03-02"
PM10.ctm.ave <- dailyCtm(PM10.ctm, statistic = "mean")
dataDay <- prepare.day(day = myDay,
obs.daily = PM10.obs,
ctm.daily = PM10.ctm.ave,
pollutant="PM10",
emis.winter = emissions$PM10.winter,
emis.summer = emissions$PM10.summer,
elev = elevation,
verbose = TRUE)
## kriging
K <- kriging (x.pnt = dataDay$ctm.day$points$x,
y.pnt = dataDay$ctm.day$points$y,
obs = dataDay$obs.day$PM10,
model = dataDay$ctm.day,
proxy.1 = dataDay$emis.day,
proxy.2 = dataDay$elev.day,
lambda = 0)
#' Let's see the results on a map.
bb <- round(quantile(c(K$K, dataDay$ctm.day$grid$z),
probs=seq(0,1,length.out=11)))
cc <- tim.colors(10)
ll <- paste(bb[-length(bb)],bb[-1],sep="-")
xr <- range(dataDay$ctm.day$grid$x)
yr <- range(dataDay$ctm.day$grid$y)
## CTM
plot(dataDay$ctm.day$grid$x, dataDay$ctm.day$grid$y,
main="interpolated CTM",
col=cc[cut(dataDay$ctm.day$grid$z,breaks=bb)],
pch=19, cex=0.4, xlab="x UTM", ylab="y UTM")
legend("bottomleft", fill=rev(cc), legend=rev(ll),
bg="white", y.intersp=0.8)
## observations
plot(dataDay$ctm.day$points$x, dataDay$ctm.day$points$y,
main="observations",
col=cc[cut(dataDay$obs.day$PM10,breaks=bb)],
pch=19, cex=1, xlim=xr, ylim=yr,
xlab="x UTM", ylab="y UTM")
points(dataDay$ctm.day$points$x, dataDay$ctm.day$points$y,
col="black", pch=1, cex=1)
legend("bottomleft", fill=rev(cc), legend=rev(ll),
bg="white", y.intersp=0.8)
## kriging: predicted values
plot(K$x, K$y, main="kriging: predicted values",
col=cc[cut(K$K,breaks=bb)],
pch=19, cex=0.4, xlim=xr, ylim=yr,
xlab="x UTM", ylab="y UTM")
legend("bottomleft", fill=rev(cc), legend=rev(ll),
bty="n", y.intersp=0.8)
## kriging: predicted variances
bb <- round(quantile(K$K.var,
probs=seq(0,1,length.out=11)))
cc <- designer.colors(10)
ll <- paste(bb[-length(bb)],bb[-1],sep="-")
plot(K$x, K$y, main="kriging: predicted variances",
col=cc[cut(K$K.var,breaks=bb)],
pch=19, cex=0.4, xlim=xr, ylim=yr,
xlab="x UTM", ylab="y UTM")
legend("bottomleft", fill=rev(cc), legend=rev(ll),
bty="n", y.intersp=0.8)