Cálculo de L de Ripley e O-Ring
Dentre os padrões que uma determinada população vegetal pode assumir, destacam-se três: Aleatório, Uniforme e Agregado. Uma maneira de verificar qual padrão espacial ocorre em diversas escalas espaciais é utilizando o L de Ripley ($K_{(r)}$) ou o O-Ring ($O_{(r)}$) que são, basicamente, medidas de densidade em torno de um ponto.
Estes índices são calculados da seguinte forma:1)
O $L_{(r)}$ é baseado na função K de Ripley, que é a densidade média de pontos a uma dada distância $r$ de cada ponto, dividida pela intensidade ($\lambda$) dos pontos na área de estudo2):
$$ K_{(r)} = \frac{\sum_{i\neq{j}}^{i}I({d_{ij}<r})}{n}\frac{1}{\lambda}$$
$$ L_{(r)}= (\sqrt{\frac{K_{(r)}}{\pi}}-r) $$
Onde:
* $d_{ij}$ é a distância do ponto $i$ ao ponto $j$;
* $I({d_{ij}<r})$ função indicadora, sendo 1 se o ponto está a uma distância menor que $r$ de $i$, fora desse raio o ponto tem valor 0; e
* $n$ é o número de pontos total.
Sendo que $L(r)>0$ indica agregação, enquanto $L(r)<0$ indica padrão homogêneo.
Logo, definimos $O(r)$ como:
$$ O_{(r)} = L_{(r)} - L_{(r-l)}$$
Onde:
* $r -l$ : é o raio menos a largura do anel 3)
Na completa aleatoriedade espacial $O(r) = \lambda$ (intensidade do padrão), quando o padrão é agregado $O(r) > \lambda$ e quando é homogêneo $O(r) < \lambda$
Para saber mais, clique aqui.
Entrada:
pad.esp(x, y, lim, rmax, r, ic, nsim)
x= posições x de cada árvore (classe numeric)y= posições y de cada árvore (classe numeric)lim= limite de máximo e mínimo de x e y, respectivamente, em m².rmax= raio máximo (classe integer)r= tamanho do anel ou diferença entre dois raios consecutivos. (classe integer)ic= Se TRUE, faz intervalo de confiança através de simulações, se FALSE, não. (classe logical)nsim= numero de simulações utilizadas para gerar IC. (classe integer)
Verificação de parâmetros:
xé numérico e > 0? Se não, escreve “x deve ser numérico e > 0”.yé numérico e > 0? Se não, escreve “y deve ser numérico e > 0”.- O comprimento de
x,ysão iguais? Se não, retorna “x, y devem ter o mesmo comprimento”. limé numérico e > 0? Se não, escreve “lim deve ser numérico e > 0”limtem comprimento 4? Se não, escreve “lim deve conter c(xmax, xmin, ymax, ymin)”rmax= é inteiro e de comprimento 1? Se não, retorna “rmax deve ser inteiro e de comprimento 1”.ré inteiro e de comprimento 1? Se não, retorna “r deve ser inteiro e de comprimento 1”.icé lógico? Se não, retorna “ic deve ser lógico”.nsimé inteiro de comprimento 1? Se não, retorna “nsim deve ser inteiro e de comprimento 1”.
Pseudo-Código
- Cria matriz
distancia, com número de linhas e colunas igual ao comprimento dexeycontendo NAs. - Cria vetor
ntotguardando o comprimento dex. - Cria sequencia
sequde 1 a rmax, comby = r. - Cria vetor
ind, com comprimento igual ao comprimento desequ, contendo NAs.
- Ciclo for de 1 a
ntot(repete o próximo for para todos os pontos).- Ciclo for de 1 a
ntot.- Calcula distância de um ponto a todos os pontos.
- Guarda resultado em uma linha de
distancia.
- Ciclo for de
sequ.- Conta quantas quantos elementos de
distanciasão menores que1:rmaxe guarda emind.
- Multiplica
indpor1/(ntot*dens)e guarda emkr. - Calcula o L de Ripley pela fórmula
(kr/pi)^1/2 - re guarda emrip. - Extrai as posições
sequdeinde guarda emtempring - Calcula diferença entre 2 posições consecutivas de
tempringe guarda emring.
Se ic = TRUE
- Cria objeto
indsim, matriz com nsim colunas e ntot linhas, contendo NAs. - Cria objeto
ripsim, matriz com nsim colunas e ntot linhas, contendo NAs. - Cria objeto
ringsim, matriz com nsim colunas e ntot-1 linhas, contendo NAs.
- Ciclo for de 1 a
nsim- Sorteio de
ntotnúmeros uma distribuição uniforme entrexmin,xmax, guarda emxsim - Sorteio de
ntotnúmeros uma distribuição uniforme entreymin,ymax, guarda emysim - Cria objeto
distsim, com número de linhas e colunas igual ao comprimento dexsimeysimcontendo NAs. - Ciclo for de 1 a
ntot(repete os próximos for para todos os pontos)- Ciclo for de 1 a
ntot- Calcula distância de um ponto a todos os pontos
- Guarda resultado em
distsim
- Ciclo for de
sequ- Conta quantas quantos elementos de
distsimsão menores que1:rmaxe guarda emindsim.
- Multiplica
indsimpor1/(ntot*dens)e guarda emkrsim. - Calcula o L de Ripley pela fórmula
(krsim/pi)^1/2 - re guarda emripsim[i]. - Extrai as posições
sequdeinde guarda emtempring - Calcula diferença entre 2 posições consecutivas de
tempringe guarda emringsim[i].
- Calcula quantis para cada raio de ripsim
- Calcula quantis para cada raio de ringsim
- Cria vetor
saida, um dataframe com mesmo número de colunas quesequcontendo na- primeira linha: “agregado” se
rip> quantil superior deripsime “homogêneo” serip< quantil inferior deripsim - segunda linha: “aleatório” se
ringestá entre os quantis deringsim, “agregado” sering> quantil superior deringsime “homogeneo” sering< quantil inferior deringsim.
Saída
Plota gráfico(s) com o(s) valor(es) de L-Ripley e/ou O-Ring (com intervalos de confiança se ic = TRUE)
Retorna saida.