answer_42 (answer_42) wrote,
answer_42
answer_42

Category:

Полная пространственная случайность - Complete spatial randomness

Обычная вопрос появляющийся перед исследователем - оценка случайности точечного процесса. Есть например точки - очаги пожаров и есть вопрос, случайны ли они? Разумеется речь идет о статистической оценке, хочется какого-то теста. По идее такая оценка должна предварять любые предварительные анализы с участием точечных процессов. Ведь если процесс случаен, то его объяснение или выявление связи с другими процессами не имеют смысла.

Complete spatial randomness (CSR) - специальный тест позволяющий проверить гипотезу, что точки распределены по территории независимо случайно и однородно.

Отличная презентация по теме.

Пример возьму из Bivand, R.S., Pebesma, E.J., & Gomez-Rubio, V. (2008). Applied Spatial Data Analysis with R: Springer, с переработанным немного кодом и графиками (такие красивые, как в книжке делать лень).

Сначала укажем какие нужны пакеты, возьмем наборы данных и симулируем теоретический разброс (конверты):

#Adapted from Bivand, R.S., Pebesma, E.J., & Gomez-Rubio, V. (2008). Applied Spatial Data Analysis with R: Springer
library(spatstat)
library(maptools)

r = seq(0,sqrt(2)/6,by = 0.005)

data(japanesepines)
data(redwoodfull)
data(cells)

#japanese pines
spjpines = as(japanesepines, "SpatialPoints")
spjpines1 = elide(spjpines, scale = T, unitsq = T)
#california redwood
spjred = as(redwoodfull, "SpatialPoints")
spjred1 = elide(spjred, scale = T, unitsq = T)
#cells
spjcells = as(cells, "SpatialPoints")
spjcells1 = elide(spjcells, scale = T, unitsq = T)

envjap = envelope(as(spjpines1, "ppp"), fun = Gest, r = r, nrank = 2, nsim = 99)
envred = envelope(as(spjred1, "ppp"), fun = Gest, r = r, nrank = 2, nsim = 99)
envcells = envelope(as(spjcells1, "ppp"), fun = Gest, r = r, nrank = 2, nsim = 99)
Ключевая строка здесь - расчет конверта, по которому мы будем определять, "вошло" ли в него наблюдаемое распределение (тогда гипотеза CSR принимается и данные случайные или не вошло). Количество тестов - 99, функция называетя Gest, в нее подает набор расстояний r, представляющих собой просто диапазон значений от 0 до максимального расстояния на котором мы хотим получить значение функции.

Итак, вот распределение клеток, несмотря на то что кажется, распределение не случайное, а скорее регулярно, что объясняется конкуренцией (по моему очень круто! :)).

par(mfrow=c(1,2))
plot(cells)
plot(envcells$theo,envcells$obs,type="b",lwd=2)
arrows(envcells$theo,envcells$hi,envcells$theo,envcells$lo,code=3,angle=90,length=0.02,col="gray")





Японские сосны полностью попадают в конверт теоретически возможного разброса при таких плотностях, поэтому тест на CSR проходят.
par(mfrow=c(1,2))
plot(japanesepines)
plot(envjap$theo,envjap$obs,type="b",lwd=2)
arrows(envjap$theo,envjap$hi,envjap$theo,envjap$lo,code=3,angle=90,length=0.02,col="gray")




Калифорнийские секвойи слишком кластеризованы и наблюдаемые значения G-функции сильно больше чем теоретические, поэтому тест на CSR не проходят и случайными мы их объявить не можем.
par(mfrow=c(1,2))
plot(redwoodfull)
plot(envred$theo,envred$obs,type="b",lwd=2)
arrows(envred$theo,envred$hi,envred$theo,envred$lo,code=3,angle=90,length=0.02,col="gray")


Tags: csr, r
Subscribe
  • Post a new comment

    Error

    default userpic
    When you submit the form an invisible reCAPTCHA check will be performed.
    You must follow the Privacy Policy and Google Terms of use.
  • 2 comments