|
Равномерное распределение с размытыми границами, Как определить границы? |
|
|
|
May 14 2012, 09:44
|

Универсальный солдатик
     
Группа: Модераторы
Сообщений: 8 634
Регистрация: 1-11-05
Из: Минск
Пользователь №: 10 362

|
Допустим, измеряемая величина имеет равномерное распределение в диапазоне от Xm до Xn. Из-за погрешностей измерения, шума, дрейфа и т.п. края этого распределения не идеально ровные, а плавно спадают. Т.е. с малой вероятностью возможно получение результатов за пределами Xm...Xn. Так же возможно, что измеренные значения не будут занимать весь диапазон Xm...Xn. В обоих случаях нужно подкорректировать значения Xm и Xn. Как бы это сделать покрасивее и попроще? Например, так. Представим, что края спадают линейно. Тогда суммарная вероятность попадания в диапазон, соответствующий спадающему краю будет в 2 раза меньше, чем вероятность попадания в такой же по размеру диапазон где-нибудь в середине (площадь меньше в 2 раза). Если же вероятность оказывается больше или меньше половины, нужно сдвинуть Xm (или Xn).
|
|
|
|
3 страниц
1 2 3 >
|
 |
Ответов
(1 - 36)
|
May 14 2012, 10:53
|

Универсальный солдатик
     
Группа: Модераторы
Сообщений: 8 634
Регистрация: 1-11-05
Из: Минск
Пользователь №: 10 362

|
Цитата(scifi @ May 14 2012, 12:58)  варьируем Xm, Xn, максимизируя функцию Nin/(Ntot*(Xn-Xm)) Так не понятно, какую границу менять, Xm или Xn, и куда. Мне не хотелось бы болтать их туда-сюда, чтобы найти оптимальное значение, а сразу двигаться в нужную сторону. Пополам разбить, и для каждой половины свой алгоритм использовать?
|
|
|
|
|
May 14 2012, 11:22
|

Универсальный солдатик
     
Группа: Модераторы
Сообщений: 8 634
Регистрация: 1-11-05
Из: Минск
Пользователь №: 10 362

|
Цитата(alexvu @ May 14 2012, 14:08)  Не ясна Ваша задача. "Нужно подкорректировать" - для какой цели. Каков критерий, что значения "подкорректированы" именно так, как "нужно"? Найти эти два числа, Xm и Xn, максимально точно соответствующие реальным без погрешностей. Как, например, измеряя некое постоянное напряжение, путем усреднения получить точное значение (математическое ожидание, говоря языком теории вероятности). А здесь - два таких числа, на границах. Цитата Все значения должны попадать в диапазон (в этом случае теоретически он получится бесконечный), или 99%, или 90%. Какое распределение и дисперсию по отношению к измеряемой величине имеют "погрешности, шум и дрейф"? Теоретически пусть будет бесконечным. А на практике, естественно, будет ограничен. Распределение погрешностей - можно предположить близким к нормальному, хотя, естественно, не до бесконечности. Для простоты можно предположить и линейные спады. Типа - найти производную от функции распределения, и максимумы этой производной (когда распределение изменяется наиболее быстро) и будут соответствовать границам. Но все распределение хранить в памяти не вижу ни возможности, ни смысла. Или еще проще - когда плотность распределения пересекает уровень 0.5.
|
|
|
|
|
May 15 2012, 09:06
|
Профессионал
    
Группа: Свой
Сообщений: 1 172
Регистрация: 14-11-11
Из: Москва
Пользователь №: 68 299

|
Цитата(ViKo @ May 14 2012, 14:22)  Или еще проще - когда плотность распределения пересекает уровень 0.5. Ну вот и критерий появился. Накапливаете гистограмму (можно только по краям, если требуется экономить память и примерно известен диапазон) и находите в ней этот свой уровень 0.5. Так как про величину дисперсии ошибок Вы не ответили, то более простого (по объему памяти) способа пока нет.
|
|
|
|
|
May 15 2012, 10:43
|

Универсальный солдатик
     
Группа: Модераторы
Сообщений: 8 634
Регистрация: 1-11-05
Из: Минск
Пользователь №: 10 362

|
Цитата(alexvu @ May 15 2012, 12:06)  Ну вот и критерий появился. Накапливаете гистограмму (можно только по краям, если требуется экономить память и примерно известен диапазон) Пока размышляю над следующим. Около границ площадь под кривой плотности распределения будет в 2 раза меньше, чем в середине, для равных отрезков X. Можно взять, например, 8 точек около Xm, столько же в середине, столько же около Xn. И накапливать количество попаданий в эти участки. Если количество попаданий в участок около границы меньше, чем половина от попаданий в середину, значит, границу нужно передвинуть внутрь. Если больше - наружу. Вопрос, насколько?
|
|
|
|
|
May 17 2012, 07:42
|

Универсальный солдатик
     
Группа: Модераторы
Сообщений: 8 634
Регистрация: 1-11-05
Из: Минск
Пользователь №: 10 362

|
Если распределение Xm...Xn прямоугольное, то сочинил следующий алгоритм. После каждого измерения.
1. Вычисляю среднее, с помощью экспоненциального фильтра, Mnew = Mold * (1 - a) + X * a где a - коэффициент усреднения, например 1/1024. 2. Вычисляю средний модуль отклонения таким же фильтром, Dnew = Dold * (1 - a) + (|Mold - X|) * a (Может, здесь нужно Mnew - X?) 3. Вычисляю границы (они отстоят от среднего в 2 раза дальше, чем средний модуль отклонения) Xm,n = Mnew +- Dnew * 2
Как, годится? Надо проверить в MatLab, но я пока на стадии освоения его.
|
|
|
|
|
May 17 2012, 09:21
|
Профессионал
    
Группа: Свой
Сообщений: 1 172
Регистрация: 14-11-11
Из: Москва
Пользователь №: 68 299

|
Цитата(ViKo @ May 15 2012, 13:43)  Если количество попаданий в участок около границы меньше, чем половина от попаданий в середину, значит, границу нужно передвинуть внутрь. Если больше - наружу. Вопрос, насколько? Поищите формулу оценки достоверности гипотез, по ней можно определить, сколько данных надо накопить для заданной точности и на сколько двигать границу. Но все равно, Вам понадобится распределение и дисперсия ошибок, которые Вы тщательно скрываете
|
|
|
|
|
May 17 2012, 11:41
|

Универсальный солдатик
     
Группа: Модераторы
Сообщений: 8 634
Регистрация: 1-11-05
Из: Минск
Пользователь №: 10 362

|
Какие-то есть  это все, что я могу предположить. Вопрос стоит не в том, чтобы знать, насколько точно измеряет измеритель. А в том, насколько стабильна сама измеряемая величина (у меня же созданная). Которая должна принимать некие значения, равномерно распределенные в диапазоне Xm...Xn, но может плавать по разным причинам. Ну, и сам измеритель добавляет ошибок. Высчитывать влияние этих причин мне не кажется благодарным делом. Знание вероятной дисперсии результата с учетом всех факторов мне поможет разве что в оценке качества нужного фильтра (та самая "a" (альфа должна называться), которую я указал в сообщении №8). Начну с чего-нибудь... Мне достаточно следить за результирующим диапазоном Xm...Xn и использовать его для правильной интерпретации каждого результата измерения. Важны относительные измерения, не абсолютные.
|
|
|
|
|
May 17 2012, 18:36
|
Гуру
     
Группа: Модераторы
Сообщений: 8 752
Регистрация: 6-01-06
Пользователь №: 12 883

|
Цитата(ViKo @ May 17 2012, 17:16)  Средний модуль отклонения! Подправил алгоритм. Просто не описал, хотя предполагал, естественно.
Что касается экспериментов, то получались примерно следующие результаты: весь диапазон около 100...200, плавает на 1-2 в течение минуты. Намного ближе к равномерному распределению, чем к нормальному. А зачем нужен средний модуль отклонения? Вы немного нас (или только меня ?) недопонимаете. Речь идет о том, что Вы измеряете границу. Пусть нижнюю. Это одно значение. Но неплохо было бы знать функцию распределения. Она может быть очень даже разной. А Вы еще хотите ее (границу) точно определить в некоторый момент времени. Это не всегда можно сделать корректно. Вот хорошо, если она быстро осциллирует, а дрейф пренебрежимо мал за время измерения. А если дрейф не мал?
|
|
|
|
|
May 17 2012, 18:49
|

Универсальный солдатик
     
Группа: Модераторы
Сообщений: 8 634
Регистрация: 1-11-05
Из: Минск
Пользователь №: 10 362

|
Цитата(Tanya @ May 17 2012, 21:36)  А зачем нужен средний модуль отклонения? Вы немного нас (или только меня ?) недопонимаете. Речь идет о том, что Вы измеряете границу. Пусть нижнюю. Это одно значение. Но неплохо было бы знать функцию распределения. Она может быть очень даже разной. А Вы еще хотите ее (границу) точно определить в некоторый момент времени. Это не всегда можно сделать корректно. Вот хорошо, если она быстро осциллирует, а дрейф пренебрежимо мал за время измерения. А если дрейф не мал? Границы я не измеряю, а вычисляю статистически, по массиву измеренных значений. Считая распределение равномерным (а оно таким и должно быть в моем устройстве, в идеале, это я знаю точно, но дрейфующим), средний модуль отклонения будет равен половине от максимального. Дрейф мал. Но возможны редкие ошибочные измерения (никто ж не застрахован) из-за помех, и шум. Вот этот малый дрейф (смещение, усиление) и хочу отследить, и эти ошибки хочу отфильтровать. Я уже в MatLab экспериментирую, покажу, что вышло.
|
|
|
|
|
May 17 2012, 20:21
|

Универсальный солдатик
     
Группа: Модераторы
Сообщений: 8 634
Регистрация: 1-11-05
Из: Минск
Пользователь №: 10 362

|
Вот скрипт (первый опыт) Код %{ Проверка слежения за границами прямоугольного распределения %} N = 1000; t = 1:N; % a = 1/1024; x(t) = randi([100,200],[N,1]);
M(1)=x(1); D(1)=0; R(1)=0; L(1)=0;
for i = 2:N a = 1/i; M(i) = M(i-1)*(1-a) + x(i)*a; D(i) = D(i-1)*(1-a) + abs(M(i-1)-x(i))*a; L(i) = M(i) - D(i)*2; R(i) = M(i) + D(i)*2; end
% plot(t,x); % plot(t,x, t,M); plot (t,x, t,M, t,L, t,R); Вот результат
Эскизы прикрепленных изображений
|
|
|
|
|
May 18 2012, 07:36
|

Универсальный солдатик
     
Группа: Модераторы
Сообщений: 8 634
Регистрация: 1-11-05
Из: Минск
Пользователь №: 10 362

|
Цитата(Tanya @ May 18 2012, 08:53)  Смысл моего вопроса в том, как себя ведет измеряемая величина? У Вас должна быть модель или экспериментальная или априорная. Так сказал же уже раз пять, начиная с заголовка темы. Равномерное распределение. Плюс небольшой шум, ошибки, помехи, дрейфы, метастабильные эффекты, которые можно считать нормально распределенными (а как же иначе?), но этот "плюс" весьма небольшой. Создано моим собственным трудом.
|
|
|
|
|
May 18 2012, 08:10
|
Гуру
     
Группа: Модераторы
Сообщений: 8 752
Регистрация: 6-01-06
Пользователь №: 12 883

|
Цитата(ViKo @ May 18 2012, 11:36)  Так сказал же уже раз пять, начиная с заголовка темы. Равномерное распределение. Плюс небольшой шум, ошибки, помехи, дрейфы, метастабильные эффекты, которые можно считать нормально распределенными (а как же иначе?), но этот "плюс" весьма небольшой. Создано моим собственным трудом. Вы зря пять раз повторяете, а не читаете. Речь (моя) о распределении той самой границы, которую Вы хотите найти.
|
|
|
|
|
May 18 2012, 09:18
|

Универсальный солдатик
     
Группа: Модераторы
Сообщений: 8 634
Регистрация: 1-11-05
Из: Минск
Пользователь №: 10 362

|
Цитата(Tanya @ May 18 2012, 11:10)  Речь (моя) о распределении той самой границы, которую Вы хотите найти. Будем считать нормальным. Складывая с распределением между границами, получаем некое плавное нарастание от 0 до p, и такой же спад на другом конце. (Можно попробовать в Matlab добавить к равномерному распределению легкий нормальный шум, займусь и этим.) Точки перегиба этих нарастания и спада меня вполне устроят в качестве границ. Считаю, что тот алгоритм, который я описал, учтет и "нормальные хвосты". "Хвост" приложится к "голове" и в результате даст p. P.S. Границы для меня - только ... границы, относительно которых я вычисляю нужное мне значение при каждом измерении X.
|
|
|
|
|
May 18 2012, 09:55
|
Гуру
     
Группа: Модераторы
Сообщений: 8 752
Регистрация: 6-01-06
Пользователь №: 12 883

|
Цитата(ViKo @ May 18 2012, 13:18)  Будем считать нормальным. Тогда... Или определять два числа - среднее положение границы и дисперсию, или, если дисперсия предполагается константой, - только среднее. А дисперсию измерить один раз. Это легче. Цитата(ViKo @ May 18 2012, 13:18)  (Можно попробовать в Matlab добавить к равномерному распределению легкий нормальный шум, займусь и этим.) Это называется -"химичить с бубном"?
|
|
|
|
|
May 18 2012, 10:11
|
    
Группа: Свой
Сообщений: 1 928
Регистрация: 11-07-06
Пользователь №: 18 731

|
Цитата(ViKo @ May 18 2012, 13:18)  Будем считать нормальным. Тогда при условии "площадь центра трапеции >> площади крыльев" можете считать, что крылья двигаются параллельным переносом (с постоянным углом относительно основания), а не поворотом. Цитата я вычисляю нужное мне значение при каждом измерении X. имхо, избыточно. Ваша задача решается в целочисленной арифметике на 3-ёхстолбцовой гистограмме. Хотя можно остаться в её рамках, используя, н-р, целочисленного Брезенхайма и на каждом измерении.
|
|
|
|
|
May 18 2012, 10:39
|

Универсальный солдатик
     
Группа: Модераторы
Сообщений: 8 634
Регистрация: 1-11-05
Из: Минск
Пользователь №: 10 362

|
Цитата(Tanya @ May 18 2012, 12:55)  Тогда... Или определять два числа - среднее положение границы и дисперсию, или, если дисперсия предполагается константой, - только среднее. А дисперсию измерить один раз. Это легче. Дисперсия = константа. Ну, и как вычислять среднее для границы? Об этом, собственно, и тема. Цитата(xemul @ May 18 2012, 13:11)  Тогда при условии "площадь центра трапеции >> площади крыльев" можете считать, что крылья двигаются параллельным переносом (с постоянным углом относительно основания), а не поворотом. Да. Я говорю о том, что приложив "крылья" ("хвосты") из-за границы (  ) к частям внутри границ (рядом с границами, там же уже спад распределения), можно приблизительно считать все распределение между границами равномерным. Цитата имхо, избыточно. Ваша задача решается в целочисленной арифметике на 3-ёхстолбцовой гистограмме. Это то, что я дальше делаю. То, что я подразумеваю под понятием "измерение". К делу не относится. В данной теме мне нужно лишь найти границы и отслеживать их изменение. По алгоритму в сообщении №8 это проще, чем накапливать 3 столбца. Мне нужно будет накапливать только среднее значение, и среднее абсолютное отклонение.
|
|
|
|
|
May 21 2012, 11:52
|

Универсальный солдатик
     
Группа: Модераторы
Сообщений: 8 634
Регистрация: 1-11-05
Из: Минск
Пользователь №: 10 362

|
Продолжаю эксперименты. Добавил нормальный шум. Код %{ Проверка слежения за границами прямоугольного распределения Границы размыты нормальным распределением %} N = 100000; t = 1:N; % a = 1/1024; X(t) = randi([100,200],[N 1]) + round(randn([N 1]) * 5);
M(1) = X(1); D(1) = 0; R(1) = 0; L(1) = 0;
for i = 2:N a = 1 / i; M(i) = M(i-1) * (1-a) + X(i) * a; D(i) = D(i-1) * (1-a) + abs(M(i-1) - X(i)) * a; L(i) = M(i) - D(i) * 2; R(i) = M(i) + D(i) * 2; end
% plot(t,x); % plot(t,x, t,M); % plot (t,x, t,M, t,L, t,R); grid on; hist (X, 120); Получил следующую гистограмму для X. Что я сделал не так?
Эскизы прикрепленных изображений
|
|
|
|
|
May 25 2012, 11:13
|
Участник

Группа: Участник
Сообщений: 39
Регистрация: 4-03-12
Пользователь №: 70 608

|
Цитата(ViKo @ May 14 2012, 13:44)  Допустим, измеряемая величина имеет равномерное распределение в диапазоне от Xm до Xn. Из-за погрешностей измерения, шума, дрейфа и т.п. края этого распределения не идеально ровные, а плавно спадают. Т.е. с малой вероятностью возможно получение результатов за пределами Xm...Xn. Так же возможно, что измеренные значения не будут занимать весь диапазон Xm...Xn. В обоих случаях нужно подкорректировать значения Xm и Xn. Как бы это сделать покрасивее и попроще? Например, так. Представим, что края спадают линейно. Тогда суммарная вероятность попадания в диапазон, соответствующий спадающему краю будет в 2 раза меньше, чем вероятность попадания в такой же по размеру диапазон где-нибудь в середине (площадь меньше в 2 раза). Если же вероятность оказывается больше или меньше половины, нужно сдвинуть Xm (или Xn). Я думаю что это можно решить с помощью оценки. Скажем X это случайная переменная с равномерным распределением в диапазоне от Xm до Xn. Обозначим оценку Xm как Xm_hat а оценку Xn как Xn_hat Вычисляем среднее значение: E(X)_hat=1/N(Sum(Yi,1,N)); где Yi измеряемая величина: Yi=X+N, где N Гаусовский шум Вычисляем дисперсию: Var_hat=1/N(Sum(Yi^2,1,N) - E(X)_hat^2; Теперь решаем два уровнения с двумя неизвестными Xm_hat и Xn_hat 1. (Xm_hat + Xn_hat)/2=E(X)_hat 2. sqrt((Xn_hat-Xm_hat)^2/12)=sqrt(Var_hat) чем лучше SNR тем лучше оценка
Сообщение отредактировал reginil_y - May 25 2012, 11:14
|
|
|
|
1 чел. читают эту тему (гостей: 1, скрытых пользователей: 0)
Пользователей: 0
|
|
|