1 votos

Contabilidad para agrupación espacial al determinar la variabilidad de una muestra

Estoy buscando una forma de tener en cuenta el agrupamiento/clusterización espacial en mis datos.

Mis datos provienen de transectos de línea de 50m. Para cada transecto registré la altura de la hierba a intervalos de 2m, lo que me da 25 mediciones por transecto. A continuación se muestran los perfiles de 3 transectos hipotéticos que muestran la altura de la hierba en cada punto:

introducir descripción de la imagen aquí

Usando estos datos puedo comparar la estructura de la hierba a lo largo de cada transecto. Puedo analizar la cantidad de hierba, pero también me interesa cómo está distribuida esta cantidad de hierba. El transecto a es claramente menos variable que los transectos b y c y puedo confirmar esto calculando, por ejemplo, el error estándar. Mi problema es que, debido a que b y c tienen 12 puntos con una altura de 3cm y 13 puntos con una altura de 10cm, tienen el mismo error estándar a pesar de que hay diferencias claras, y potencialmente importantes desde el punto de vista ecológico, en su estructura.

Por lo tanto, estoy buscando una forma de diferenciar entre la variabilidad en los transectos b y c. En lugar de comparar cada punto con la media para determinar la variabilidad (que es lo que hace el error estándar), pensé que podría haber una forma de ponderar esto por la similitud de un punto con sus vecinos más cercanos para que el transecto b muestre menos variabilidad que el transecto c. Pensé que podría haber un método basado en la distancia pero no he podido encontrar uno. En última instancia, me gustaría tener un valor único para cada transecto que represente esta variabilidad ajustada.

Voy a usar R para el análisis, así que si alguien conoce una función que pueda hacer esto, ¡sería muy apreciado!

Finalmente, los valores de altura de la hierba utilizados para generar los gráficos anteriores son:

a: 10, 10, 10, 10, 3, 10, 10, 10, 10, 10, 14, 10, 10, 10, 10, 10, 4, 10, 10, 10, 10, 10, 10, 10, 10

b: 10, 10, 10, 3, 3, 3, 10, 10, 10, 3, 3, 3, 10, 10, 10, 3, 3, 3, 10, 10, 10, 3, 3, 3, 10

c: 10, 3, 10, 3, 10, 3, 10, 3, 10, 3, 10, 3, 10, 3, 10, 3, 10, 3, 10, 3, 10, 3, 10, 3, 10

1voto

tanon Puntos 48

¿Qué tal calcular desviaciones estándar en valores con rezago espacial?


Suponiendo que tu espacio es de $1$ dimensión, y que las coordenadas, $c_i$, son aquellas registradas, es decir, $i$ varía de $1$ a $25$. Una primera cosa que se puede hacer es calcular la matriz de distancias $25\times 25$, $\boldsymbol{D}$, cuya expresión en forma cerrada es

$\boldsymbol{D} = [d_{ij}] = [|c_i - c_j|]$ donde $\{(i,j)|i \in [1,25]$ y $j \in [1,25]\}$

Con $\boldsymbol{D}$ en mano, se crea una matriz de peso espacial (llamada comúnmente) $\boldsymbol{W}$, definida como

$\boldsymbol{W} = [w_{ij}] =\begin{cases} [d_{ij}^{-1}] & \text{si $i\neq j$}, \\ 0 & \text{en otro caso} \end{cases}$

Y luego se convierte en una matriz estocástica por la derecha (matriz cuadrada real en la que cada fila suma $1$), es decir,

$\boldsymbol{W}^{*} = [w_{ij}/\sum_{k=1}^{25}w_{ik}]$

De hecho, lo que se va a hacer es trabajar con vectores lagados espacialmente en lugar de los originales, es decir, trabajar con versiones transformadas de a, b y c en lugar de trabajar directamente con ellos. Estos vectores transformados estarán formados por componentes que consisten en el promedio (ponderado por distancia) de vecinos. La varianza de estos promedios será baja para alturas agrupadas espacialmente.


En R harías lo siguiente

> x = seq(1,25)
> x
> x
 [1]  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

Luego, dado que el espacio es una línea, se calcularía la segunda dimensión, y, (requerida por el paquete que tengo en mente), como $0$s, de la siguiente manera

> y = rep(0, each=25)
> y
 [1] 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0

Se carga la librería distances

> library(distances)

se crea la matriz de distancias como

> D <- as.matrix(distances(data=data.frame(x = x, y=y)))

se toma su inverso elemento por elemento

> Di <- 1/D

se reemplazan (en su lugar) los elementos diagonales Inf de Di con $0$

> diag(Di)<-0

se define W como la versión estocástica por la derecha de Di

> W <- Di/rowSums(Di)
> sum(W)
[1] 25

Ahora se pueden obtener tus 3 transectos hipotéticos

> a <- c(10,10,10,10,3,10,10,10,10,10,14,10,10,10,10,10,4,10,10,10,10,10,10,10,10)
> b <- c(10,10,10,3,3,3,10,10,10,3,3,3,10,10,10,3,3,3,10,10,10,3,3,3,10)
> c <- c(10,3,10,3,10,3,10,3,10,3,10,3,10,3,10,3,10,3,10,3,10,3,10,3,10)

se laguan espacialmente estos tres vectores

> Wa <- W%*%a
> Wb <- W%*%b
> Wc <- W%*%c

recordando que las desviaciones estándar de muestra de a, b y c respectivamente son

> sd(a)
[1] 2.01825
> sd(b)
[1] 3.569314
> sd(c)
[1] 3.569314

se observa que las de Wa, Wb y Wc son

> sd(Wa)
[1] 0.3961341
> sd(Wb)
[1] 0.4542065
> sd(Wc)
[1] 0.866519

lo que te brinda una forma de diferenciar entre la variabilidad en los transectos b y c. En este caso, la desviación estándar de Wc es mayor que la de Wb.


Como se mencionó anteriormente, al hacer, por ejemplo, Wc <- W%*%c, con W estocástica por filas, se crea un vector cuyos componentes consisten en el promedio de vecinos (ponderado por distancia). Dado que las alturas están menos agrupadas espacialmente en c, estos promedios ponderados por distancia presentan una varianza mayor que los de b.

Finalmente, para crear un indicador sintético de los dos tipos de varianza, es decir, la espacial y la no espacial, podrías resumirlas en un solo objeto calculando una norma euclidiana.

> ( sd(Wa)^2 + sd(a)^2 )^.5
[1] 2.056758
> ( sd(Wb)^2 + sd(b)^2 )^.5
[1] 3.598097
> ( sd(Wc)^2 + sd(c)^2 )^.5
[1] 3.67299

Probablemente ya lo sepas, pero recuerda que las normas, ya sean euclidianas o no, se utilizan frecuentemente para medir qué tan "grande en 1 dimensión" son los objetos multidimensionales. En nuestro caso, la primera dimensión es la de la varianza no espacial, y la segunda dimensión es la de la varianza espacial.

0voto

Julio Kaegi Puntos 16

Si no estás limitado a reducir la variabilidad a un solo número... podrías probar algún tipo de análisis de varianza de cuadrantes, lo que te permitiría comparar las escalas de parches/brechas entre transectos. Si tu objetivo es describir/comparar los patrones, esta podría ser una mejor opción.

Desafortunadamente, no estoy al tanto de un paquete en R que realice análisis de varianza de cuadrantes; tu mejor opción (en este momento) sería PASSaGE 2. Si eres inteligente, podrías escribir una función en R que llame al comando batch en PASSaGE 2... o simplemente escribir tu propia función en R.

Los métodos de varianza de cuadrantes fueron desarrollados por ecólogos de plantas y están bien descritos en libros de M. Dale (1999)... y Fortin y Dale (2005)... y varios artículos que se remontan a la década de 1950. El manual de usuario en PASSaGE 2 también proporciona la teoría básica.

i-Ciencias.com

I-Ciencias es una comunidad de estudiantes y amantes de la ciencia en la que puedes resolver tus problemas y dudas.
Puedes consultar las preguntas de otros usuarios, hacer tus propias preguntas o resolver las de los demás.

Powered by:

X