Страница 1 из 1
пространстенная задача на теорию вероятности
Добавлено: 06 дек 2010, 13:53
kryl
есть следующая задача:
выяснить зависимость вероятности пересечения случайно расположенных полигонов( куртин усыхания разного размера, упрощенно круглыми) другими полигонами (пробными площадями круглыми, квадратными, в форме вытянутого прямоугольника) от размеров тех и других полигонов и их количества. пространство дискретное (деревья, можно упрещенно считать что расположны на регулярной сетке - растре).
никому не попадалось аналитического решения? с какой стороны подступиться? или проще нагенерировать случайных гридов и попересекать?
[Сообщение с мобильного устройства] 
Re: пространстенная задача на теорию вероятности
Добавлено: 06 дек 2010, 20:38
Василиус
Решать скорее всего надо по гридам. Куртины в виде грида и по нему запустить какую-нибудь программу от начала и до конца, которая считает вероятность перекрытия определенного радиуса. Куртины, скорее всего должны быть классифицированы - например - есть куртина 1, нет - 0. И т.д.
Re: пространстенная задача на теорию вероятности
Добавлено: 06 дек 2010, 20:50
gamm
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")
Пересечение имеется в виду "наличие хть одно общей точки" или "Площадь не менее ..."?
Re: пространстенная задача на теорию вероятности
Добавлено: 07 дек 2010, 00:18
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(объема выборки).
В первом приближении можно заменить круги(куртины) квадратами.
Re: пространстенная задача на теорию вероятности
Добавлено: 07 дек 2010, 10:55
gamm
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))
Если мало - придется считать площади, а там еще больше мороки, сейчас на это времени нет (будет только в январе)
P.S. все это писалось "из головы", без проверки и отладки. Т.е. следует воспринимать как идею, а не работающую программу

Re: пространстенная задача на теорию вероятности
Добавлено: 07 дек 2010, 11:52
kryl
Спасибо! Буду разбираться!
Re: пространстенная задача на теорию вероятности
Добавлено: 08 дек 2010, 08:15
gamm
небольшое добавление
1) Если известно отношение площади куртины к охватывающему прямоугольнику - для круга по отношению к квадрату это pi/4 ~ 0.79, то корректируете площадь умножением на него. Если известно распределение таких отношений, то коррекция тоже возможна включением его в модель.
2) Если известно еще и распределение размеров куртин, то его тоже можно включить в модель.
3) Все это скорее всего можно найти в мануалах либо у американской, либо у канадской лесной службы. Если этого нет, то можно написать статейку (проведя численные эксперименты на искусственных примерах для оценки качества модели и сравнение с фактическими данными)
Re: пространстенная задача на теорию вероятности
Добавлено: 08 дек 2010, 09:42
kryl
Статейку написать нужно.
В модели я не понял зачем использовать бутстап, если можно, вместо 10000 перетасовывания одной и той же выборки, сгенерировать 10000 случайных независимых новых матриц усыхания и матриц пп.
Re: пространстенная задача на теорию вероятности
Добавлено: 08 дек 2010, 12:49
gamm
kryl писал(а):Статейку написать нужно.
В модели я не понял зачем использовать бутстап, если можно, вместо 10000 перетасовывания одной и той же выборки, сгенерировать 10000 случайных независимых новых матриц усыхания и матриц пп.
1) было описано 2 способа подсчета: (а) бутстрап для получения эмпирического распределения, и (б) основанный на теоретичских выкладках
2) неясно что вы имеете в виду под термином "перетасовывание". В расчетах использовался "выбор с возвратом", а не перестановка элементов (для этого был указан параметр replace=TRUE), иначе дисперсия будет равна нулю.
3) в предположении, что мы одинаково понимаем "перетасовывание". Бутстрап (resampling, randomization) основан на измеренных данных (полевых), и имитирует сбор этих данных в 10000 "параллельных мирах" для одной и той же исходной территории при условии независимости измерений - это то же самое, как если бы вы послали 10000 бригад собирать те же данные. Никаких 10000 матриц
сгененировать (simulate) нельзя, поскольку для этого нужно знать распределение, которые не известно. Для получения 10000 независимых новых матриц вам нужно послать 10000 бригад в поле, что нереально. Бутстрап был придуман именно для того, что имитировать эти 10000 бригад в камеральных условиях.
Re: пространстенная задача на теорию вероятности
Добавлено: 08 дек 2010, 13:31
kryl
генерация случайных пп и куртин. работает правда медлено
Код: Выделить всё
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
}
Re: пространстенная задача на теорию вероятности
Добавлено: 08 дек 2010, 13:44
kryl
Извиняюсь за глупый вопрос, я и R и статистику очень плохо знаю, и в втором коде не понимаю как должно работать это:
Код: Выделить всё
p.fact<-as.integer(p > 0) # какими площадками зацепили
Re: пространстенная задача на теорию вероятности
Добавлено: 08 дек 2010, 14:08
gamm
kryl писал(а):Извиняюсь за глупый вопрос, я и R и статистику очень плохо знаю, и в втором коде не понимаю как должно работать это:
Код: Выделить всё
p.fact<-as.integer(p > 0) # какими площадками зацепили
отправил в личку ...