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

    Your reply will be screened

    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