2014 dxdy logo

Научный форум dxdy

Математика, Физика, Computer Science, Machine Learning, LaTeX, Механика и Техника, Химия,
Биология и Медицина, Экономика и Финансовая Математика, Гуманитарные науки




 
 нормальный закон распределения, смоделировать выборку
Сообщение22.10.2008, 23:24 
Добрый ночия друзья!

Очень часто в институте надо было определить закон распределения по имеющимся данным. Сейчас у меня задача наоборот, построить данные которые максимально подходят под нормальный закон.

Подскажите пожалуйста как построить набор из 1000 чисел в котором числа будут от 0 до 100. Чтобы этот набор как можно сильнее был похож на нормальный. Никак не соображу как это сделать плотность распределения у нас же для непрерывной переменной а тут дискретное. Дело осложняется тем что мне нужно в общем виде без интегралов.
Так как эту последовательность нужно запрограммировать и запихнуть в таблицу БД.

Подскажите с чего начать,

 
 
 
 
Сообщение23.10.2008, 00:00 
Здесь Вам необходимо использовать следующий факт. Если случайная величина $X$ имеет непрерывную функцию распределения $F_X (x)$ то случайная величина $Y=F_X (X)$ имеет равномерное распределение на интервале $(0,1)$.

 
 
 
 Re: нормальный закон распределения
Сообщение23.10.2008, 04:05 
normalz писал(а):
Подскажите пожалуйста как построить набор из 1000 чисел в котором числа будут от 0 до 100. Чтобы этот набор как можно сильнее был похож на нормальный. Никак не соображу как это сделать плотность распределения у нас же для непрерывной переменной а тут дискретное. Дело осложняется тем что мне нужно в общем виде без интегралов.
Так как эту последовательность нужно запрограммировать и запихнуть в таблицу БД.

Ну, с дискретностью просто -- видимо, предполагалось составить последовательность вещественных числел, а потом округлить.

Правда, нюанс. Какова сигма? Если, по умолчанию, единичка, то практически все числа окажутся от нуля до трёх (ну или от 47 до 53, если сместить центр), так что сходство с нормальным будет весьма условным.

Поскольку речь о составлении базы, эффективность программы не важна и можно воспользоваться универсальным методом приёма-отклонения. Генерируем последовательность пар $(x,y)$, где $x\in[0;100]$ и $y\in[0;1]$ равномерно. Если оказывается $y<f_X(x)$, то данная точка $x$ принимается и заносится (после округления) в таблицу. И так до тех пор, пока не накопятся требуемые 1000 точек.

Если всё же нужна эффективность, то можно воспользоваться стандартным алгоритмом для именно нормального распределения. Основанным на том, что для нормально распределённых точек на плоскости расстояния до центру распределены по показательному закону, а он легко обращается. Генерируем два равномерно распределённых числа: $t\in(0;1]$ и $\alpha\in[0;2\pi)$. Берём $x=-\ln t\cdot\cos\alpha$ и $y=-\ln t\cdot\sin\alpha$. Эти два числа будут распределены независимо и нормально (сигму не помню, а считать лень).

 
 
 
 
Сообщение23.10.2008, 14:09 
Аватара пользователя
Можно взять 4000 целых, равномерно распределенных от 0 до 25, сложить их по 4. Эти 1000 сумм будут распределены почти нормально от 0 до 100. Некоторые датчики выдают именно целые СЧ. Я так понял, что нужны целые значения?

Для еще большей нормальности можно взять 10 тысяч [0,10] и сложить по 10.
А если 100 тысяч 0/1 и складывать по 100, то нормальней для целых и некуда. Тут и комп не нужен - подбрасывай себе монетку :)

Правда чем больше слагаемых, тем меньше дисперсия.

 
 
 
 
Сообщение23.10.2008, 18:27 
Аватара пользователя
Мне кажется, что наиболее естественно моделировать серию из 100 испытаний Бернулли и считать число успехов. Согласно теореме Муавра-Лапласа при этом будет получаться как раз что-то очень похожее на нормальное (насколько это только возможно при такой дискретности). Кстати, вероятность успеха при этом можно брать и не обязательно $\frac12$ (хотя, конечно, $\frac12$ наиболее естественно), при этом будут получаться различные средние. Главное только не брать вероятность успеха слишком близкой к 0 или к 1, где ЦПТ плохо работает.

 
 
 [ Сообщений: 5 ] 


Powered by phpBB © 2000, 2002, 2005, 2007 phpBB Group