Você está na página 1de 11

Kriging Ordinário da indicatriz

draft em construção

Manuel Ribeiro

CERENA - IST/UL
Aula anterior

I Kriging Ordinário
Aula de hoje

I Kriging Ordinário (ou Normal) da indicatriz1

1
descarregar do fénix o ficheiro de dados ea_dt1.txt e convertê-lo em spdf
com o nome df1
Kriging Ordinário da indicatriz

Admita que, por razões de saúde pública, interessa identificar os


locais onde são mais elevadas as probabilidades do valor médio
diário de pm2.5 ultrapassar 17µg/m3 (valor escolhido unicamente
para ilustrar o método):
O mapa de probabilidades de ultrapassar o valor de interesse
(também designado por valor de corte ou cut-off value), pode ser
obtido pelo estimador linear de Kriging Ordinário da seguinte
variável :
(
0, z(s) ≤ 17
I[z(s)] =
1, z(s) > 17

I[z(s)] designa-se por variável indicatriz.


Criar a variável indicatriz

Para criar a variável indicatriz podemos usar a função ifelse():


df1$ind = ifelse(df1$pm2_5 > 17, "> 17", "<= 17")

Vamos converter o vetor texto num objeto de classe factor2 :


df1$ind = factor(df1$ind, labels = c("< = 17", "> 17"))

Com as funções table() e prop.table() podemos calcular


respetivamente as frequências marginais absolutas e relativas da
nova variável:
tabs = table(df1$ind)
trel = prop.table(tabs)

2
ler https://cran.r-project.org/doc/manuals/r-release/R-intro.html#Factors
Plot variável indicatriz
spplot(df1,"ind", col.regions = c("grey","red"),
main="Variavel indicatriz")

Variavel indicatriz

< = 17
> 17
Estimador linear de Kriging Ordinário da indicatriz

O estimador linear de Kriging Ordinário é usado para prever as


probabilidades de ultrapassar o valor de corte em qualquer nó da
grid não amostrado :

n
Î[z(s0 )] = λi · I[z(si )]
X

i=1

onde λi é o ponderador (ou peso) da amostra vizinha I[z(si )] e n o


número de amostras vizinhas.
Continuidade espacial e modelação

v = var(df1$pm2_5>17)
ve = variogram(ind ~ 1, df1, cutoff = 60, width = 6,
alpha = c(45, 135), tol.hor = 15)
vt = vgm(psill = v, model = "Exp", range = 5.5,
nugget = 0, anis= c (135 , 0.9))
plot(ve,vt, xlab = " h (em Km)", ylab = "semivar (h)")

10 20 30 40 50

45 135
0.20
semivar (h)

0.15

0.10

0.05

10 20 30 40 50

h (em Km)
Malha para interpolação
Hoje vamos usar uma função do R base, expand.grid(), para
construir a malha (100 × 100, com resolução do pixel = 2):
malha = expand.grid(x = seq(0, 100, 2),
y = seq(0, 100, 2))
coordinates(malha) <- ~ x + y
gridded(malha) <- TRUE
par(mar = c(1,1,1,1))
plot(malha)
Mapa de probabilidades
koi = krige(pm2_5 > 17 ~ 1, locations = df1,
newdata = malha, model = vt, nmax=16)

## [using ordinary kriging]


par(mar = c(1,1,1,1))
spplot(koi["var1.pred"])

1.0
0.8
0.6
0.4
0.2
0.0
Algumas fraquezas
I Não há garantias de que P{Z (s0 ) < z} ∈ [0, 1]
I Não há garantias de que a ccdf é monotona crescente.
Soluções práticas :
I reduzir nº de amostras no sistema eq. Kriging;
I reset às “probabilidades impossíveis” pelo extremo mais
próximo;
sum(koi@data$var1.pred>1)

## [1] 0
sum(koi@data$var1.pred<0)

## [1] 55
reset aos valores negativos (atribui valor 0):
koi[koi@data$var1.pred<0] = 0

Você também pode gostar