пространстенная задача на теорию вероятности

Вопросы по нескольким пакетам сразу, или вопросы, которые непонятно к какой ГИС отнести
Ответить
kryl
Завсегдатай
Сообщения: 324
Зарегистрирован: 14 фев 2010, 20:42
Репутация: 0

пространстенная задача на теорию вероятности

Сообщение kryl » 06 дек 2010, 13:53

есть следующая задача:
выяснить зависимость вероятности пересечения случайно расположенных полигонов( куртин усыхания разного размера, упрощенно круглыми) другими полигонами (пробными площадями круглыми, квадратными, в форме вытянутого прямоугольника) от размеров тех и других полигонов и их количества. пространство дискретное (деревья, можно упрещенно считать что расположны на регулярной сетке - растре).
никому не попадалось аналитического решения? с какой стороны подступиться? или проще нагенерировать случайных гридов и попересекать?

[Сообщение с мобильного устройства] Изображение

Василиус
Интересующийся
Сообщения: 37
Зарегистрирован: 09 ноя 2010, 06:38
Репутация: 0

Re: пространстенная задача на теорию вероятности

Сообщение Василиус » 06 дек 2010, 20:38

Решать скорее всего надо по гридам. Куртины в виде грида и по нему запустить какую-нибудь программу от начала и до конца, которая считает вероятность перекрытия определенного радиуса. Куртины, скорее всего должны быть классифицированы - например - есть куртина 1, нет - 0. И т.д.

gamm
Гуру
Сообщения: 4170
Зарегистрирован: 15 окт 2010, 08:33
Репутация: 1107
Ваше звание: программист
Откуда: Казань

Re: пространстенная задача на теорию вероятности

Сообщение gamm » 06 дек 2010, 20:50

kryl писал(а):есть следующая задача:
выяснить зависимость вероятности пересечения случайно расположенных полигонов( куртин усыхания разного размера, упрощенно круглыми) другими полигонами (пробными площадями круглыми, квадратными, в форме вытянутого прямоугольника) от размеров тех и других полигонов и их количества. пространство дискретное (деревья, можно упрещенно считать что расположны на регулярной сетке - растре).
никому не попадалось аналитического решения? с какой стороны подступиться? или проще нагенерировать случайных гридов и попересекать?

[Сообщение с мобильного устройства] Изображение
если целевые полигоны можно (приблизительно) представить как прямоугольники, а "ловушки" (прямоугольники) уже такие, то это нетружно будет посчитать, взяв проекции на X и Y, а потом произведение вероятностей (вроде есть у Шеймоса в "Вычислительнйо геометрии" для прямоугольников, но нетрудно и самому, нужно только задать распределение,например равномерное). нужно считать вероятность непопадания проекций, это достаточно просто, завсит от расстояния до "границ мира". если апроксимация прямоугольниками годится, могу посчитать. Для кругов тоже можно попробовать, но нужно немного подумать, см. код (запустите в R, в середине вполне ничего себе окружность)).

Код: Выделить всё

x<-seq(0,100,by=0.1)
y<-2*sqrt(50^2-(x-50)^2)
y<-y/sum(y)
p<-expand.grid(x1=1:length(x),x2=1:length(x))
p.g<-matrix(y[p[,1]]*y[p[,2]],ncol=length(x),nrow=length(x))
p.range<-range(p.g)
image(x, x, p.g, col = terrain.colors(100), axes = FALSE)
contour(x, x, p.g, levels = seq(p.range[1], p.range[2], length.out = 10), add = TRUE, col = "peru")
Пересечение имеется в виду "наличие хть одно общей точки" или "Площадь не менее ..."?

kryl
Завсегдатай
Сообщения: 324
Зарегистрирован: 14 фев 2010, 20:42
Репутация: 0

Re: пространстенная задача на теорию вероятности

Сообщение kryl » 07 дек 2010, 00:18

Более строго можно переформулировать так:
Имеется область пространства от 0 до Xmax и от 0 до Ymax и общей площадью Smax=Xmax*Ymax (лесной фонд).
В ней имеется множество С1 С2 .. Сn кругов диаметром D общей площадью Sz случайно распределенных в пространстве(куртины усыхания). Внутри кругов значение усыхания Z=1, вне их – 0.
Имеется P1 P2 .. Pm прямоугольников(пробных площадей) размером a на b и общей площадью Spp случайно распределенных в пространстве.
Пересечение множества кругов С() и прямоугольников P() дает площадь усыхания внутри прямоугольников(пробных площадей) Szpp
Мы пытаемся оценить отношение Sz/Smax (площадь усохших насаждений в лесном фонде) зная соотношение Szpp/Spp (долю усохших деревьев на пробных площадях).
Sz/Smax=Szpp/Spp +/- Err (допустим при p=95%).
Задача найти функцию зависимости Err(ошибки) от D(диаметра куртин усыхания), Sz/Smax(доли усохших насаждений), a и b (размеров пробных площадей) и Spp/Smax(объема выборки).
В первом приближении можно заменить круги(куртины) квадратами.

gamm
Гуру
Сообщения: 4170
Зарегистрирован: 15 окт 2010, 08:33
Репутация: 1107
Ваше звание: программист
Откуда: Казань

Re: пространстенная задача на теорию вероятности

Сообщение gamm » 07 дек 2010, 10:55

kryl писал(а):Более строго можно переформулировать так:
Имеется область пространства от 0 до Xmax и от 0 до Ymax и общей площадью Smax=Xmax*Ymax (лесной фонд).
В ней имеется множество С1 С2 .. Сn кругов диаметром D общей площадью Sz случайно распределенных в пространстве(куртины усыхания). Внутри кругов значение усыхания Z=1, вне их – 0.
Имеется P1 P2 .. Pm прямоугольников(пробных площадей) размером a на b и общей площадью Spp случайно распределенных в пространстве.
Пересечение множества кругов С() и прямоугольников P() дает площадь усыхания внутри прямоугольников(пробных площадей) Szpp
Мы пытаемся оценить отношение Sz/Smax (площадь усохших насаждений в лесном фонде) зная соотношение Szpp/Spp (долю усохших деревьев на пробных площадях).
Sz/Smax=Szpp/Spp +/- Err (допустим при p=95%).
Задача найти функцию зависимости Err(ошибки) от D(диаметра куртин усыхания), Sz/Smax(доли усохших насаждений), a и b (размеров пробных площадей) и Spp/Smax(объема выборки).
В первом приближении можно заменить круги(куртины) квадратами.
тогда, если выборка достаточно большая, можно использовать бутстрап.

1) считаем выборку представительной, т.е. E[Sz/Smax] = E[Szpp/Spp], поэтому Szpp/Spp есть оценка
2) для оценки дисперсии делаем 10000 выборок с повтором из Szpp/Spp и вычисляем выборочное распределение средних, из него берем 5% границы

Код: Выделить всё

# Szpp_Spp.dat - площадь пересечения одной куртины с одной  пробной площадкой, число строк равно числу проб
# нули тоже пишем в данные, заголовка нет
p<-drop(read.table("Szpp_Spp.dat",header=FALSE))
n.data<-length(p)
n.boot<-10000
p.stat<-rep(NA,n.boot)
for(i in 1:n.boot) {
  ind<-sample(1:n.data,replace=TRUE)
  p.stat[i]<-mean(p[ind])
}
print(quantile(p.stat,c(0.025,0.975)))
теоретическое распределение я тоже прикинул, но там мороки много, если все честно делать - нужен учет граничного эффекта, возможности пересечения двух куртин одной тестовой площадкой, и пр.

результатом будет не площадь, а математическое ожидание числа куртин (откуда площадь нетрудно получить) и его доверительный интервал (исходя из того, сколько у нас ненулевых пересечений) - но и нулевых, и ненулевых должно быть много, иначе дисперсия оценки будет большой.

Код: Выделить всё

p.D <-20 # "диаметр" куртины (куртина - это квадрат)
p.lx<-5 # размер пробной площадки по X
p.ly<-3 # размер пробной площадки по Y
p.Xmax<-500
p.Ymax<-800

# считаем без учета всяких тонкостей. Считаем p.D << min(p.Xmax,p.Ymax), попасть в 2 курины невозможно

P.x<-(p.D + p.lx)/(p.Xmax-p.lx) # вероятность "зацепить" пробной площадкой прекцию куртины по X
P.y<-(p.D + p.ly)/(p.Ymax-p.ly) # вероятность "зацепить" пробной площадкой прекцию куртины по Y
P.xy<-P.x * P.y # вероятность "зацепить" куртину пробной площадкой

p.fact<-as.integer(p > 0) # какими площадками зацепили
p.y<-sum(p.fact)          # сколько площадок зацепились за куртины

# логарифмическая функция правдоподобия (вероятность зацепить одну из k куртин есть k*P.xy в силу редкости куртин):
# LL(p.y)=p.y*ln(p.k*P.xy) + (n.data-p.y)*ln(1-p.k*P.xy)
# находим максимум по k
k.ML<-p.y/(P.xy*n.data)
S.ML<-k.ML*p.D^2 / (p.Xmax*p.Ymax)

# дисперсия числа куртин K: Var(K)=n.data*(1-K*P.xy)*(K*P.xy)
k.ML.var<-n.data*(1-k.ML*P.xy)*(k.ML*P.xy)

# дисперсия S.ML: Var(S.ML)=Var(k)*(p.D^2 / (p.Xmax*p.Ymax))^2
S.ML.var<-k.ML.var*(p.D^2 / (p.Xmax*p.Ymax))^2

# считая биномиальное распределение более-менее нормальным, получаем интервал:
S.ML.sd<-sqrt(S.ML.var)
print(c(S.ML+qnorm(0.025,0,1)*S.ML.sd,S.ML+qnorm(0.975,0,1)*S.ML.sd))
Если мало - придется считать площади, а там еще больше мороки, сейчас на это времени нет (будет только в январе) :D

P.S. все это писалось "из головы", без проверки и отладки. Т.е. следует воспринимать как идею, а не работающую программу :lol:

kryl
Завсегдатай
Сообщения: 324
Зарегистрирован: 14 фев 2010, 20:42
Репутация: 0

Re: пространстенная задача на теорию вероятности

Сообщение kryl » 07 дек 2010, 11:52

Спасибо! Буду разбираться!

gamm
Гуру
Сообщения: 4170
Зарегистрирован: 15 окт 2010, 08:33
Репутация: 1107
Ваше звание: программист
Откуда: Казань

Re: пространстенная задача на теорию вероятности

Сообщение gamm » 08 дек 2010, 08:15

небольшое добавление

1) Если известно отношение площади куртины к охватывающему прямоугольнику - для круга по отношению к квадрату это pi/4 ~ 0.79, то корректируете площадь умножением на него. Если известно распределение таких отношений, то коррекция тоже возможна включением его в модель.

2) Если известно еще и распределение размеров куртин, то его тоже можно включить в модель.

3) Все это скорее всего можно найти в мануалах либо у американской, либо у канадской лесной службы. Если этого нет, то можно написать статейку (проведя численные эксперименты на искусственных примерах для оценки качества модели и сравнение с фактическими данными)

kryl
Завсегдатай
Сообщения: 324
Зарегистрирован: 14 фев 2010, 20:42
Репутация: 0

Re: пространстенная задача на теорию вероятности

Сообщение kryl » 08 дек 2010, 09:42

Статейку написать нужно.
В модели я не понял зачем использовать бутстап, если можно, вместо 10000 перетасовывания одной и той же выборки, сгенерировать 10000 случайных независимых новых матриц усыхания и матриц пп.

gamm
Гуру
Сообщения: 4170
Зарегистрирован: 15 окт 2010, 08:33
Репутация: 1107
Ваше звание: программист
Откуда: Казань

Re: пространстенная задача на теорию вероятности

Сообщение gamm » 08 дек 2010, 12:49

kryl писал(а):Статейку написать нужно.
В модели я не понял зачем использовать бутстап, если можно, вместо 10000 перетасовывания одной и той же выборки, сгенерировать 10000 случайных независимых новых матриц усыхания и матриц пп.
1) было описано 2 способа подсчета: (а) бутстрап для получения эмпирического распределения, и (б) основанный на теоретичских выкладках

2) неясно что вы имеете в виду под термином "перетасовывание". В расчетах использовался "выбор с возвратом", а не перестановка элементов (для этого был указан параметр replace=TRUE), иначе дисперсия будет равна нулю.

3) в предположении, что мы одинаково понимаем "перетасовывание". Бутстрап (resampling, randomization) основан на измеренных данных (полевых), и имитирует сбор этих данных в 10000 "параллельных мирах" для одной и той же исходной территории при условии независимости измерений - это то же самое, как если бы вы послали 10000 бригад собирать те же данные. Никаких 10000 матриц сгененировать (simulate) нельзя, поскольку для этого нужно знать распределение, которые не известно. Для получения 10000 независимых новых матриц вам нужно послать 10000 бригад в поле, что нереально. Бутстрап был придуман именно для того, что имитировать эти 10000 бригад в камеральных условиях.

kryl
Завсегдатай
Сообщения: 324
Зарегистрирован: 14 фев 2010, 20:42
Репутация: 0

Re: пространстенная задача на теорию вероятности

Сообщение kryl » 08 дек 2010, 13:31

генерация случайных пп и куртин. работает правда медлено

Код: Выделить всё

k<-100
rez1<-matrix(0,nrow=k,ncol=1)
rez2<-matrix(0,nrow=k,ncol=1)

for (k in 1:100){
Xmax<-800
us<-matrix(0,nrow=Xmax,ncol=Xmax)
pp<-matrix(0,nrow=Xmax,ncol=Xmax)
n<-200
m<-200
D<-10
plx<-5
ply<-3
Sz<-D^2*n
Spp<-plx*ply*m
Smax<-Xmax^2
Dz<-(Sz/Smax)
Dzpp<-(Szpp/Spp)

for (i in 1:m) {
x_rand<- ceiling(runif(1)*Xmax)
y_rand<-ceiling(runif(1)*Xmax)
   for(i3 in 1:ply) {
    for(i2 in 1:plx) {
	xi<-x_rand+i2-1
	yi<-y_rand+i3-1
	xic=ifelse(xi<Xmax, xi, xi-Xmax)
        yic=ifelse(yi<Xmax, yi, yi-Xmax)
    pp[(xic), (yic)]<-1
    }
   }
}
for (i in 1:n) {
x_rand<- ceiling(runif(1)*Xmax)
y_rand<-ceiling(runif(1)*Xmax)
   for(i3 in 1:D) {
    for(i2 in 1:D) {
	xi<-x_rand+i2-1
	yi<-y_rand+i3-1
	xic=ifelse(xi<Xmax, xi, xi-Xmax)
        yic=ifelse(yi<Xmax, yi, yi-Xmax)
    us[(xic), (yic)]<-1
    }
  }
}
inter1<- us*pp
Szpp<-sum(inter1)
Err<-(Szpp/Spp)-(Sz/Smax)


rez1[k,1]<-Szpp
rez2[k,1]<-Err
}

kryl
Завсегдатай
Сообщения: 324
Зарегистрирован: 14 фев 2010, 20:42
Репутация: 0

Re: пространстенная задача на теорию вероятности

Сообщение kryl » 08 дек 2010, 13:44

Извиняюсь за глупый вопрос, я и R и статистику очень плохо знаю, и в втором коде не понимаю как должно работать это:

Код: Выделить всё

p.fact<-as.integer(p > 0) # какими площадками зацепили

gamm
Гуру
Сообщения: 4170
Зарегистрирован: 15 окт 2010, 08:33
Репутация: 1107
Ваше звание: программист
Откуда: Казань

Re: пространстенная задача на теорию вероятности

Сообщение gamm » 08 дек 2010, 14:08

kryl писал(а):Извиняюсь за глупый вопрос, я и R и статистику очень плохо знаю, и в втором коде не понимаю как должно работать это:

Код: Выделить всё

p.fact<-as.integer(p > 0) # какими площадками зацепили
отправил в личку ...

Ответить

Вернуться в «Общий - ПО»

Кто сейчас на конференции

Сейчас этот форум просматривают: Ahrefs [Bot] и 2 гостя