Estatística espacial – Point process

Existem três problemas essenciais para a estatística espacial são:

1. Point Process (padrões espaciais de distribuição dos indivíduos, onde os indivíduos estão)
2. Mapas de uma variável continua de resposta (kriging)
3. Resposta espacialmente explicitas afetadas pela identidade, tamanho ou proximidade dos vizinhos.

Logo, a primeira coisa a entender é os Point process, que eu não sei dar uma tradução direito, já que nem o wikipedia tem um artigo disso em português, se tem, não esta linkado com o artigo em inglês e processos de pontos ou processos pontuais me parece que fica uma tradução estranha, não sei, mas tudo bem.

Primeiro temos que ver que estamos falando aqui de dados que consistem em de conjunto de coordenadas nos eixos x e y com alguma forma na qual foram amostradas, num plot quadrado, um transecto que é um retângulo ou talvez um círculo, se bem que eu diria que ninguém amostra círculos, mas tudo bem, a vezes as amostras são em polígonos sem uma forma definida.

A primeira pergunta mais essencial é se podemos rejeitar a hipótese de completa aleatoriedade na distribuição dos pontos, ou seja, os pontos são completamente independentes um dos outros?

02

As outras possibilidades, que são os dois opostos, que são quando temos uma distribuição regular, onde os indivíduos são mais espaçados que o acaso por algum tipo de mecanismo, como competição por exemplo que elimina os indivíduos muito próximos uns dos outros

01

E a distribuição agregada, onde os indivíduos estão amontoados juntos mais que ao acaso, como quando ocorre por um processo de reprodução com uma limitação na dispersão ou devido a heterogeneidade espacial como em locais mais propícios ao desenvolvimento de plântulas, com mais recursos ou ainda locais muito ruins para viver, sem disponibilidade de água.

03

Esses são os três padrões que vem a cabeça quando falamos de distribuição espacial. Claro que nada é tudo ou nada, existe um gradiente que vai de um padrão para o outro, e pior ainda, isso pode variar dependendo da escala que fazemos nossas observações, ou da perspectiva da espécie estudada.

Mas isso quer dizer então que uma distribuição aleatória gera dados aleatórios e uma função determinística gera os outros padrões não aleatórios?

Veja que dispersão por exemplo, é um processo que é estocástico, e ainda sim pode gerar um padrão de agregação dependente do espaço.

Podemos fazer uma simulaçãozinha aqui. Partindo do seguinte princípio. Uma semente anemocórica vai sair de um ponto, que é sua mãe, e de la vai sair com uma direção e percorrer uma distância qualquer, vamos supor que estas duas sejam variáveis aleatórias com uma distribuição normal. Basicamente o lado que a semente vai é o angulo dela com a planta mãe e a distância é uma medida de distância.

Então a gente pode fazer aqui uma função para simular isso

1
2
3
4
5
6
7
dispersa_semente <- function(r) {    
    angulo <- runif(1,0,2*pi)
    raio <- runif(1,0,r)
    x <- angulo*sin(raio)
    y <- angulo*cos(raio)
    return (c(x,y))
}

Então a gente fornece um raio máximo, a capacidade de dispersão daquela planta, sorteamos uma direção e uma distância e temos a posição que a semente vai cair. Se quisermos plotar a arvore um outro ponto que não o a coordenada (0,0), é só somar isso ao x e y.

Por exemplo, escolhemos um ponto:

1
2
centro_x <- 10
centro_y <- 10

Uma capacidade de dispersão r e o número de sementes a ser dispersadas

1
2
n <- 1000
r <- 10

E vamos colocando essas sementes no mapa.

1
2
3
4
5
6
for (i in 1:n) {
    ponto <- dispersa_semente(r)
    x <- centro_x+ponto[1]
    y <- centro_y+ponto[2]
    points(x,y,pch=19)
}

05

E olha que legal, um processo estocástico, gera uma distribuição agregada ali no centro.

Podemos plotar as distancias até o centro, como retas e podemos ver melhor o que ta acontecendo.

06

Quem dispersa mais longe, consegue ficar mais longe da semente adjacente, agora quem dispersa próximo, fica muito pertinho da outra semente, por mais que o angulo e a distância sejam variáveis aleatórias uniformes.

Se a gente fizer essa simulação, e salvar os valores de angulo e raio usando para gerar os dados, e depois as posições x y e distancias da planta mãe.

07

Veja que a distancia da planta mãe ainda é uma variável aleatória uniforme, mas tanto nos eixo x quanto no y, temos uma acumulação no centro, perto da planta mãe. Ou seja um processo estocástico, aleatória que gera um padrão de distribuição não aleatório.

Acho que isso é meio confuso, o fato de um evento totalmente aleatório gerar um padrão de distribuição, mas a vida sempre é mais complexa que esperamos. E isso serve de exemplo também para pensarmos que não é porque o padrão de distribuição não é aleatório, que o processo que gera ele não possa ser aleatório.

Bem é isso ai, os posts andam meio lento, mas espero votar a estudar, ops, postar com mais frequência. O o script vai estar la no repositório recologia, e se eu escrevi alguma bobeira, algo errado, deixe um comentário corrigindo ou mande um e-mail.

Referência:

M. J. Crawley 2012 – R book 1076pp Wiley

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
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
#####################################
## Tipos de Point Process
#####################################
 
x_coords<-c(0.3,0.6,0.8,0.2,0.4,0.6,0.8,0.3,0.6,0.8,0.2,0.4,0.6,0.8)
y_coords<-c(0.3,0.3,0.3,0.5,0.5,0.5,0.5,0.7,0.7,0.7,0.9,0.9,0.9,0.9)
jpeg("01.jpg")
plot(x_coords,y_coords,xlim=c(0,1),ylim=c(0,1),pch=19,main="Espaçado",bty="n")
dev.off()
 
x_coords<-c(0.2,0.9,0.92,0.93,0.78,0.19,0.21,0.5,0.55,0.61,0.94,0.96,0.37,0.41,0.44)
y_coords<-c(0.1,0.2,0.22,0.23,0.3,0.36,0.37,0.4,0.39,0.39,0.43,0.44,0.56,0.53,0.56)*1.8
jpeg("02.jpg")
plot(x_coords,y_coords,xlim=c(0,1),ylim=c(0,1),pch=19,main="Aleatorio",bty="n")
dev.off()
 
x_coords<-c(0.2,0.22,0.23,0.22,0.2,0.56,0.57,0.87,0.89,0.89,0.89,0.9,0.92,0.925,0.926)
y_coords<-c(0.2,0.22,0.22,0.225,0.28,0.7,0.71,0.8,0.81,0.82,0.83,0.83,0.83,0.82,0.81)
jpeg("03.jpg")
plot(x_coords,y_coords,xlim=c(0,1),ylim=c(0,1),pch=19,main="Agregado",bty="n")
dev.off()
 
jpeg("04.jpg")
par(mfrow=c(3,1))
x_coords<-c(0.3,0.6,0.8,0.2,0.4,0.6,0.8,0.3,0.6,0.8,0.2,0.4,0.6,0.8)
y_coords<-c(0.3,0.3,0.3,0.5,0.5,0.5,0.5,0.7,0.7,0.7,0.9,0.9,0.9,0.9)
plot(x_coords,y_coords,xlim=c(0,1),ylim=c(0,1),pch=19,main="Espaçado",bty="n")
x_coords<-c(0.2,0.9,0.92,0.93,0.78,0.19,0.21,0.5,0.55,0.61,0.94,0.96,0.37,0.41,0.44)
y_coords<-c(0.1,0.2,0.22,0.23,0.3,0.36,0.37,0.4,0.39,0.39,0.43,0.44,0.56,0.53,0.56)*1.8
plot(x_coords,y_coords,xlim=c(0,1),ylim=c(0,1),pch=19,main="Aleatorio",bty="n")
x_coords<-c(0.2,0.22,0.23,0.22,0.2,0.56,0.57,0.87,0.89,0.89,0.89,0.9,0.92,0.925,0.926)
y_coords<-c(0.2,0.22,0.22,0.225,0.28,0.7,0.71,0.8,0.81,0.82,0.83,0.83,0.83,0.82,0.81)
plot(x_coords,y_coords,xlim=c(0,1),ylim=c(0,1),pch=19,main="Agregado",bty="n")
dev.off()
 
#####################################
## Pontos dentro de um circulo
######################################
 
dispersa_semente <- function(r) {    
    angulo <- runif(1,0,2*pi)
    raio <- runif(1,0,r)
    x <- angulo*sin(raio)
    y <- angulo*cos(raio)
    return (c(x,y))
}
 
##Pontos circulares
centro_x <- 10
centro_y <- 10
 
jpeg("05.jpg")
plot(centro_x,centro_y,ylab="",xlab="",ylim=c(0,2*centro_y),xlim=c(0,2*centro_x),type="n")
 
n <- 1000
r <- 10
 
for (i in 1:n) {
    ponto <- dispersa_semente(r)
    x <- centro_x+ponto[1]
    y <- centro_y+ponto[2]
    points(x,y,pch=19)
}
dev.off()
 
##retas
centro_x <- 10
centro_y <- 10
 
jpeg("06.jpg")
plot(centro_x,centro_y,ylab="",xlab="",ylim=c(0,2*centro_y),xlim=c(0,2*centro_x),type="n")
 
 
n <- 1000
r <- 10
 
x<-c()
y<-c()
a<-c()
raio<-c()
distancias<-vector()
 
for (i in 1:n) {    
    a[i] <- runif(1,0,2*pi)    
    raio[i] <- runif(1,0,r)    
    xi <- a[i]*sin(raio[i])
    yi <- a[i]*cos(raio[i])
    ponto <-c(xi,yi)
 
    x[i] <- centro_x+ponto[1]
    y[i] <- centro_y+ponto[2]
    lines(c(centro_x,x[i]),c(centro_y,y[i]))
    distancias[i]<-dist(data.frame(origem=c(centro_x,x[i]),destino=c(centro_y, y[i])))
}
dev.off()
 
jpeg("07.jpg")
layout(matrix(c(1,1,1,2,2,2,3,3,4,4,5,5),ncol=6,nrow=2,byrow=T))
hist(a,main="Raios")
hist(raio,main="Angulos")
hist(distancias,main="Distancias")
hist(x,main="Coordenadas em x")
hist(y,main="Coordenadas em y")
dev.off()

Uma definição de conhecimento.

As vezes, nesse mundo de testes estatísticos, eu mesmo fico perdido, no que estamos fazendo, onde estamos querendo chegar. Mas podemos concordar que estamos atrás de conhecimento. Mas essa é uma palavra complicada. Via de regra, analisamos dados atrás de valores de parâmetros, testando hipóteses para saber se são “verdadeiras” (temos varias entrelinhas aqui também), mas sabemos que a verdade suprema nunca estará disponível.

Conhecimento, o que é conhecimento?

Uma definição boa é a de Platão no Theaetetus, Theaetetus era um matemático grego, que foi discutir com Sócrates sobre a definição de conhecimento, e essa discussão foi transcrita por pelo Platão. Sócrates devia ser um cara muito interessante para conversar, porque mesmo sem ter escrito nada, todo mundo já ouviu falar sobre ele via Platão ou Aristóteles. Tudo certo, mas não falamos a definição dele ainda.

A definição dele é que conhecimento é uma crença verdadeira e justificada.

Essa frase sozinha assim é difícil de engolir, mas podemos pensar um pouco mais sobre o caso.

Imagine que podemos colocar todas as ideias num plano, como um phase-plane, são todas as assertivas possíveis de serem feitas, todas as hipóteses que existem, apesar de colocar como pontinhos, pensem infinitos pontinhos.

01

Ok, apesar de essas serem todas as ideias, todas as hipóteses, a gente só pensou em algumas, quero dizer, ninguém pensou em todas as hipóteses que existem em uma ciência, senão era só sair testando elas sistematicamente, faz parte da atividade de fazer ciência pensar em hipóteses, pensar nessas ideias.

O que estou dizendo é que existe um conjunto de ideias que já pensamos, e conforme vamos pensando, vamos adicionando mais ideias a esse conjunto, mais ou menos como estabelecer um conjunto dentro dessas possibilidades.

02

Beleza, então temos o nosso conjunto de ideias que já pensamos, que são, nas palavras de Sócrates, nossas crenças. São todas as ideias dentro desse circulo vermelho. Mas não é porque a gente pensa que algo está correto, a gente já viu ideias como a de Larmark, mesmo como Darwin pensou que as características eram passadas para as próximas gerações, eram ideias mas estava erradas. Então dentro desse conjunto ae, existe as ideias que estão erradas e as ideias que estão certas, que são verdadeiras, assim como fizemos com nossas crenças, podemos separar as ideias verdadeiras, a verdade.

03

Certo, então temos em azul nossa visão de verdade agora, são as ideias de verdade. Mas onde fica entra o conhecimento nisso tudo?
Veja que se olharmos o que é verdade e as nossas ideias

04

Agora é simples, conhecimento é crença verdadeira e justifica. Logo, conhecimento é a intersecção entre esses dois conjuntos. Mas como a gente sempre comenta nas analises de dados, a gente nunca tem acesso a saber a verdade, a gente estima apenas. Então não da para saber as bordas exatas da verdade ali. Mas para as nossas ideias, nos sabemos as bordas, já que pessoas continuam empurrando elas (as bordas), para adicionar mais ideias, e somos em geral empiricistas, cientistas empíricos, nos coletamos dados para justificar as ideias, para definir elas como do conjunto de verdades ou não. Veja que um monte de ideia que temos está fora do conjunto de verdades.

E é isso, conhecimento e então uma crença verdadeira e justificada.

05

E se alguém já viu essa figura nos livros, agora da para entender ela melhor.

É claro que uma definição que é do tempo da Grécia antiga, foi contestada várias vezes, alias umas das mais legais que eu acho é a critica do Gettier, conhecida como problema de Gettier. So a historia do Gettier ja é massa o suficiente, o cara que ficou famoso publicando um paper de 3 páginas, por pressão dos colegas e da universidade, e com um único paper de 3 páginas, outras caras escreveram livros para explicar a ideia do paper. Mas ele faz uma crítica no sentido de que correlação não implica em causa, ou seja, além da crença ter que ser justificada (com dados por exemplo), precisamos saber a causa para ela, ou não temos conhecimento.

É legal pelo menos pensar um pouquinho nessas coisas, porque pode ficar mais claro, o que fazemos todos os dias, ao tentar aprender algo, estamos buscando conhecimento verdadeiro e justificado, e essas definições dificilmente aparecem em disciplinas convencionais que fazemos, normalmente isso ta nas entrelinhas, que todo mundo acha que a gente sabe, automaticamente.

Bem é isso ai, o script é so como desenhar círculos e a interseção deles, bem sofrido pra mim fazer isso alias, e se eu escrevi alguma bobeira, algo errado, deixe um comentário corrigindo ou mande um e-mail.

Referência:

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
###Desenhando dois circulos
raio1 <- 1
raio2 <- 1
theta <- seq(0, 2 * pi, length = 200)
 
a<-c(0.9,1)
b<-c(2.1,1)
 
circ_a<-data.frame(x=a[1]+raio1 * cos(theta),y=a[2]+raio1 * sin(theta))
circ_b<-data.frame(x=b[1]+raio2 * cos(theta),y=b[2]+raio2 * sin(theta))
 
###Selecionando pontos que compoem metade de cada circulo
indice<-(theta>=0 & theta <=0.5*pi) | (theta>=1.5*pi & theta<=2*pi)
 
 
##ponto de intersecao
###http://mathworld.wolfram.com/Circle-CircleIntersection.html
e = b[1] - a[1]
f = b[2] - a[2]
p = sqrt(e^2 + f^2)
k = (p^2 + raio1^2 - raio2^2)/(2*p)
 
##ponto superior
x1 = a[1] + e*k/p - (f/p)*sqrt(raio1^2 - k^2)
y1 = a[2] + f*k/p + (e/p)*sqrt(raio1^2 - k^2)
 
##pronto inferior
x2 = a[1] + e*k/p + (f/p)*sqrt(raio1^2 - k^2)
y2 = a[2] + f*k/p - (e/p)*sqrt(raio1^2 - k^2)
 
###
poligono<-rbind(circ_a[indice & circ_a[,2]<y1 & circ_a[,2]>y2,][31:60,],
                circ_a[indice & circ_a[,2]<y1 & circ_a[,2]>y2,][1:30,],
                circ_b[!indice & circ_b[,2]<y1 & circ_b[,2]>y2,])
 
 
 
jpeg("01.jpg")
plot(0,0,type="n",xlim=c(-1,4),ylim=c(-1,3),bty="n",xlab="",ylab="",main="Ideias")
points(runif(100,-1,4),runif(100,-1,3),pch=19)
dev.off()
 
jpeg("02.jpg")
plot(0,0,type="n",xlim=c(-1,4),ylim=c(-1,3),bty="n",xlab="",ylab="",main="Ideias")
points(runif(100,-1,4),runif(100,-1,3),pch=19)
points(circ_a,type="l",col="red",lwd=3)
dev.off()
 
 
jpeg("03.jpg")
plot(0,0,type="n",xlim=c(-1,4),ylim=c(-1,3),bty="n",xlab="",ylab="",main="Ideias")
points(runif(100,-1,4),runif(100,-1,3),pch=19)
points(circ_b,type="l",col="blue",lwd=3)
dev.off()
 
jpeg("04.jpg")
plot(0,0,type="n",xlim=c(-1,4),ylim=c(-1,3),bty="n",xlab="",ylab="",main="Ideias")
points(runif(100,-1,4),runif(100,-1,3),pch=19)
points(circ_a,type="l",col="red",lwd=3)
points(circ_b,type="l",col="blue",lwd=3)
dev.off()
 
jpeg("05.jpg")
plot(0,0,type="n",xlim=c(-1,4),ylim=c(-1,3),bty="n",xlab="",ylab="",main="Ideias")
polygon(circ_a,col="red")
polygon(circ_b,col="blue")
polygon(poligono,col="yellow")
legend("topright",col=c("red","blue","yellow"),legend=c("Teorias","Verdade","Conhecimento"),pch=19,bty="n")
dev.off()