CERENA - IST/UL

Problema

A distribuição espacial das amostras é geralmente irregular. Nestes casos, para calcular os semivariogramas, é usual definir tolerâncias angulares na direção e tolerâncias no passo.

Uma má escolha destes parâmetros pode conduzir a semivariogramas que não reproduzem os principais padrões de continuidade espacial do fenómeno estudado.

Objetivo

Vamos ver um conjunto de funções R que permitem, de forma simples, calcular e representar semivariogramas com diferentes tolerâncias e direções num mesmo painel, permitindo identificar quais os que melhor representam a estrutura espacial do fenómeno estudado.

Mapa das amostras

Da sua leitura identificam-se sinais relevantes :

1- Há estrutura de continuidade espacial ?

Os pares de amostras mais próximas entre si tendem a ter valores menos dissemelhantes do que de pares mais distantes entre si?

2- Há direções onde essa estrutura é mais evidente ?

Ou seja, as dissemelhanças a diferentes distâncias tendem a estar dependentes da direção?

Inspeção visual

  • Amostras próximas tendem a ser + “parecidas”.
  • “Semelhanças” mais evidentes no eixo NE-SO ? N-S ?

  • Amostras próximas tendem a ser + parecidas.
  • Direção NE-SO semelhanças mais evidentes.

Tolerâncias e direções

Devem experimentar-se diferentes:

  • Passos.
  • Direções.
  • Tolerâncias angulares.

Pretende-se obter um semivariograma sem ‘ruído’ excessivo e com um número de pares em cada passo ‘razoável’ (\(>30\)).

Função gstat::variogram()

No R, podemos obter semivariogramas em diferentes direções, apenas com uma instrução.

Recordando aula passada (#3):

variogram(pm2_5 ~ 1, df1, cutoff = 50, tol.hor = 25, 
          width = 6, alpha = c(0, 45, 90, 135))

Vamos agora usar funções que chamam a função gstat::variogram() para construir vários semivariogramas com diferentes passos, direções ou tolerâncias angulares.

Script f_pars_varexp.R

Vamos usar as 4 funções que estão no script f_pars_varexp.R. Cada uma calcula semivariogramas com diferentes:

  • passos, lag().
  • direções, dir().
  • tolerâncias angulares, tol().
  • tolerâncias angulares e direções toldir().

Os packages necessários para executar as funções estão indicados no inicio do script. É necessário tê-los instalados na máquina antes de fazer o source():

source("f_pars_varexp.R", encoding = "UTF-8")

Objetos e gráficos

As funções aceitam um data.frame ou SpatialPointsDataFrame e devolvem um painel de gráficos (package ggplot2) com os semivariogramas calculados.

Nos gráficos:

  • Em cada ponto está indicado o número de pares de amostras usado em cada passo.
  • A linha vermelha (tracejada) representa a variância amostral.

O ficheiro ea_dt0.txt (aulas) será usado como exemplo.

df1 <- read.table("ea_dt0.txt", header = TRUE, sep="\t", dec = ".")

Argumentos lag()

lag (spdf, x, y, z, dir , tol , pi, pf, ps)

  • spdf, objeto data.frame ou SpatialPointsDataFrame
  • x, character, coord. x
  • y, character, coord. y
  • z, character, variável
  • dir, numeric, direção (0-180)
  • tol, numeric, tolerância (0-180)
  • pi, numeric, passo mínimo
  • pf, numeric, passo máximo
  • ps, numeric, salto passo

Executar lag()

Passo entre 6 e 12 km, salto 2 km.

lag(df1, "x", "y", "pm2_5", 0, 180, pi = 6, pf = 12, ps = 2)

Argumentos dir()

dir (spdf, x, y, z, lag, tol, di, df, ds)

  • spdf, data.frame ou SpatialPointsDataFrame
  • x, character, coord. x
  • y, character, coord. y
  • z, character, variável
  • lag, numeric, passo
  • tol, numeric, tolerância (0-180)
  • di, numeric, direção min (0-180)
  • df, numeric, direção máx (0-180)
  • ds, numeric, salto direção (0-180)

Executar dir()

Direção entre 0 e 135 graus, salto 45 graus.

dir(df1, "x", "y", "pm2_5", 10, 22.5, di = 0, df = 135, ds = 45)

Argumentos tol()

tol (spdf, x, y, z, lag, dir, ti, tf, ts)

  • spdf, objeto data.frame ou SpatialPointsDataFrame
  • x, character, coord. x
  • y, character, coord. y
  • z, character, variável
  • lag, numeric, passo
  • dir, numeric, tolerância (0-180)
  • ti, numeric, tolerância mínima (0-180)
  • tf, numeric, tolerância máxima (0-180)
  • ts, numeric, salto tolerância (0-180)

Executar tol()

Tolerância angular entre 10 e 40 graus, salto 10 graus.

tol(df1, "x", "y", "pm2_5", 10, 0, ti = 10, tf = 40, ts = 10)

Argumentos toldir()

toldir (spdf, x, y, z, lag, ti, tf, ts, di, df, ds)

  • spdf, objeto data.frame ou SpatialPointsDataFrame
  • x, character, coord. x
  • y, character, coord. y
  • z, character, variável
  • lag, numeric, passo
  • ti, numeric, tolerância mínima (0-180)
  • tf, numeric, tolerância máxima (0-180)
  • ts, numeric, step tolerância (0-180)
  • di, numeric, direção min (0-180)
  • df, numeric, direção máx (0-180)
  • ds, numeric, salto direção (0-180)

Executar toldir()

Tolerância angular entre 15 e 25 graus, salto 5 graus

&

Direção entre 0 e 90 graus, salto 90 graus.

toldir(df1, "x", "y", "pm2_5", 10, 
       ti = 15, tf = 25, ts = 5, 
       di = 0, df = 90, ds = 90)

O painel de gráficos resultante está no slide seguinte.

Semivariogramas toldir()

Conclusões

Calcularam-se e representaram-se semivariogramas com diferentes tolerâncias e direções. A visualização conjunta dos gráficos ajuda a identificar os que melhor representam a estrutura espacial do fenómeno estudado.

Este trabalho exploratório deve culminar com a escolha de um semivariograma experimental com pouco ruído, uma estrutura espacial definida e de acordo com o conhecimento do fenómeno espacial estudado.