Разработка программы для статистических расчетов
В теле основной функции описываются локальные переменные, принимается сигнал из файла и по формулам математической статистики проводятся вычисления дисперсии, математического ожидания, среднеквадратического отклонения и коэффициента Пирсона. Если на случайную величину оказывает воздействие пять и более случайных факторов, то закон распределения можно считать нормальным. Для проверки гипотезы… Читать ещё >
Разработка программы для статистических расчетов (реферат, курсовая, диплом, контрольная)
1. Описание теоретической части
Математическая статистика — это раздел математики, посвященный установлению закономерностей случайных явлений или процессов на основании обработки статистических данных — результатов наблюдений или измерений.
Пусть некоторая случайная величина X (например, амплитуда сигнала A) задана значениями x0, x1,…, xn-1.
Первая задача заключается в оценке неизвестной функции распределения F (x) величины X или ее плотности распределения вероятности f (x), если X — непрерывная случайная величина.
Непрерывной называется случайная величина, которая принимает любые значения из некоторого конечного или бесконечного интервала.
Пусть случайная величина X принимает значения x0, x2,…, xi,…, xn-1 (рисунок 1). Функция распределения F (x) — это вероятность того, что случайная величина X примет значение меньше некоторого фиксированного действительного числа xi (рисунок 1). Функция F (x) — это интегральный закон распределения.
Вероятность попадания случайной величины в интервал [x1, x2] через функцию распределения можно выразить
P (x1 X x2) = F (x2) — F (x1). (1)
Вероятность попадания случайной величины в элементарный интервал x определится
P (x X x +x) = F (x +x) — F (x). (2)
Разделим обе части равенства на x и найдем предел при x 0
.
Эта функция есть плотность распределения вероятности или дифференциальный закон распределения (рисунок 1). Функция распределения вероятности через плотность распределения вероятности может быть выражена следующим образом
. (3)
Оценкой плотности распределения вероятности является гистограмма частости.
Рисунок 1
Для ее построения необходимо выполнить следующие действия:
1) центрировать значения случайной величины. Центрированной случайной величиной называется разность между значениями случайной величины и ее математическим ожиданием;
2) упорядочить данные в порядке возрастания значений случайной величины;
определить длину интервала по формуле Стерджеса
(4)
где n — общее количество реализаций случайной величины;
4) область изменения случайной величины разбить на k интервалов. Начало первого и конец последнего вычисляются по формулам:
y1 = xmin — h/2, y2 = xmax + h. (5)
5) на каждом участке определить частоту mi попадания случайной величины X в интервал i = 1,…, k. Частота mi находится как Рисунок 2
сумма значений случайной величины X, удовлетворяющих условию
yL < xj yR (6)
где yL и yR — левая и правая границы i-го интервала; j = 1,… n;
6) на каждом интервале определить частость mi/n;
7) построить гистограмму (рисунок 2). Соединив середины прямоугольников, получим кривую, близкую к функции f (x).
Вторая задача математической статистики — это оценка неизвестных параметров.
В этой задаче на основании физических или общетехнических соображений выдвигается гипотеза, что случайная величина X имеет функцию распределения определенного вида, зависящую от нескольких параметров, значения которых неизвестны. По результатам наблюдения случайной величины X нужно оценить значения этих параметров.
Основными параметрами являются моменты первого и второго порядка — это математическое ожидание и дисперсия. Их оценками являются среднее арифметическое и выборочная дисперсия, которые вычисляются по выражениям:
(7)
. (8)
Третья задача — статистическая проверка гипотез. Задача формулируется следующим образом.
Пусть на основании некоторых соображений можно считать, что функция распределения исследуемой случайной величины X есть F1(x). Данное предположение называется нулевой гипотезой и обозначается H0. Как правило, нулевая гипотеза — это предположение о том, что реальный закон распределения не отличается от теоретического. Противоположная гипотеза (есть различия) называется альтернативной и обозначается через H1.
Если на случайную величину оказывает воздействие пять и более случайных факторов, то закон распределения можно считать нормальным. Для проверки гипотезы о нормальном законе распределения можно воспользоваться критерием Пирсона .
Методика проверки гипотезы заключается в следующем:
1) весь диапазон изменения случайной величины X разбивают на k интервалов и в каждом из них находят частоты mk (см. п.п. 1…5 в первой задаче);
2) оценить среднее арифметическое и выборочную дисперсию (см. вторую задачу);
3) если частоты на крайних интервалах меньше пяти, то интервалы можно объединить в один до mi = 5…7 (согласно рекомендациям К. Кокрена;
в каждом интервале вычислить функцию Лапласа
(9)
где; yi — значение случайной величины в середине i-го интервала. Значения функции Ф (ti) можно найти по таблице 1 [1];
5) определить теоретическую частоту в каждом интервале:
(10)
6) вычислить расчетную статистику :
. (11)
7) теоретическое значение найти по таблице 7 для степеней свободы и уровня значимости. Параметр определяется по формуле = k — b — 1, где b — количество параметров, оцениваемых по выборке (b = 2). Для статистически незначимых задач = 0,5;
8) если, то гипотеза о нормальном законе распределения принимается. Говорят, что нулевая гипотеза принимается на уровне значимости 5%.
2. Алгоритм основной программы
3. Алгоритмы функций
3.1 Алгоритм функции для построения графика исходного массива
3.2 Алгоритм функции для построения гистограммы и графика функции Лапласа
4. Текст программы
// Программа для статистических расчетов
#include
#include
#include
#include
#include
// Задание констант.
#define COL 256
#define MAX 50
// Инициализация глобальных переменных
int i, y1, y2;
// Функция инициализации графического режима
void initgr (void) // Тип и имя функции
{
int gdriver=DETECT, gmode, errorcode; /*Задание необходимых переменных*/
initgraph (&gdriver, &gmode, «D:»); /*Установка видеоадаптера в графический режим*/
errorcode=graphresult (); /*Возращение кода ошибки и присвоение его переменной errorcode*/
if (errorcode≠ grOk) // Проверка на наличие ошибки
{
printf («Ошибка:%s n», grapherrormsg (errorcode));
printf («Для останова нажмите любую клавишу n»);
getch ();
exit (1);
}
}
// Функция построения графика исходного массива
void graphmas (float V[]) // Тип и имя функции и аргумента
{
y1=3;
y2=6; // Определение изначальных координат по горизонтальной оси
setcolor (7); // Задание цвета
setviewport (20,10,630,235,1); // Создание графического окна
rectangle (1,1,610,225); // Обозначение границ окна
line (1,115,610,115);
for (i=1; i
{
setcolor (5); // .
line (y1, (115-V [i-1]*0.5), y2, (115-V[i]*0.5)); // Построение графика
y1=y2;
y2+=3; // Смещение координат по горизонтальной оси
}
}
// Функция для построения гистограммы и графика функции Лапласа
void gistfun (float m[], float F[], int k)
{
y1=23;
y2=43;
setcolor (7);
setviewport (20,236,630,470,1);
rectangle (1,1,610,225);
for (i=1; i<=k; i++)
{
setfillstyle (1,5); // Задание типа и цвета заполнения
bar (y1,115, y2, (115-m[i]*50)); /*Построение гистограммы в соответствии с масштабом*/
setcolor (RED);
rectangle (y1,115, y2, (115-m[i]*50));
setcolor (GREEN);
if (i≠k)
line (y1, (115-F[i]*50), y2, (115-F [i+1]*50)); /*Построение графика функции Лапласа*/
y1=y2;
y2+=20;
}
}
void main (void) // Основная функция
{
clrscr ();
// Инициализация необходимых переменных
int j;
float ojid, V[COL], sum=0, dis=0, otkl=0, VC[COL], pr, h, y1, y2, k, m[MAX], t[MAX],
F[MAX], fn[MAX], x, xn;
// Приём сигнала.
FILE *fptr; // Инициализация файловой переменной
fptr=fopen («D:\B1B015.TXT», «rt»); // Открытие файла, содержащего сигнал
if (fptr==NULL) // Проверка
{
printf («Ошибка n»);
getch ();
exit (1); //
}
for (i=0; i
{
fscanf (fptr, «%f»,&V[i]);
sum+=V[i];
}
fclose (fptr); // Закрытие файла
/*Расчёт математического ожидания, дисперсии и среднеквадратического отклонения*/
ojid=sum/COL; // Определение математического ожидания
printf («n»);
printf («Математическое ожидание =%f n», ojid);
for (i=0; i
dis+=(V[i] - ojid)*(V[i] - ojid);
dis/=COL-1; // Дисперсия
otkl=sqrt (dis); // Отклонение
printf («Дисперсия =%f n», dis);
printf («Среднеквадратическое отклонение =%f n», otkl);
// Расчёт функции Лапласа
for (i=0; i
VC[i]=V[i] - ojid; // Центрирование
for (i=0; i
for (j=i+1; j
if (VC[i]>VC[j])
{
pr=VC[i];
VC[i]=VC[j];
VC[j]=pr;
}
h=(VC[255] - VC[0])/(1+3.322*log (COL)); /*Определение длины интервала по формуле Стерджеса*/
y1=VC[0] - h/2; // Начало первого интервала
y2=VC[255]+h; // Конец последнего
k=(y2-y1)/h; // Количество интервалов
k=int (k);
y2=y1+h;
for (i=1; i<=k; i++)
m[i]=0;
for (i=1; i<=k; i++) /*Частота попадания случайной величины в каждый интервал*/
{
for (j=0; j
if ((VC[j]>y1)&&(VC[j]<=y2))
m[i]+=VC[j];
y1=y2;
y2+=h;
}
y1=VC[0] - h/2;
x=0;
for (i=1; i<=k; i++)
{
m[i]=m[i]/COL; // Частость на данном интервале
t[i]=(y1+h/2-ojid)/dis;
y1+=h;
F[i]=exp (-t[i]*t[i]/2)/sqrt (6.28); // Функция Лапласа для текущего интервала
fn[i]=F[i]*h*COL/dis; // Теоретическая частота текущего интервала
x+=(m[i] - fn[i])*(m[i] - fn[i])/fn[i]; // Критерий Пирсона
}
xn=35.5; // Табличное значение расчётной статистики
xn*=xn;
printf («n»);
// Проверка гипотезы о нормальном распределении случайной величины
if (x<=xn)
printf («Нулевая гипотеза принимается на уровне значимости 5%.»);
else printf («Гипотеза не принимается. Ищите ошибку.»);
printf («n»);
getch ();
// Построение графиков
initgr (); // Функция инициализации графического режима
graphmas (V); // Построение графика исходного массива
gistfun (m, F, k); // Гистограмма и функция Лапласа
getch ();
closegraph (); // Закрытие графического режима
// Запись исходных данных и результатов расчётов в текстовый файл
fptr=fopen («D:\kursrin.txt», «w+t»); /*Создание файла для записи по указанному адресу*/
if (fptr==NULL) // Проверка
{
printf («Ошибка n»);
getch ();
exit (1);
}
fprintf (fptr, «Исходные данные: n»);
for (i=0; i
fprintf (fptr, «%f n», V[i]); // Запись элементов массива
fprintf (fptr, «Математическое ожидание =%f n», ojid); /*Запись математического ожидания*/
fprintf (fptr, «Дисперсия =%f n», dis); // Запись дисперсии
fprintf (fptr, «Среднеквадратическое отклонение =%f n», otkl); /*Запись отклонения*/
if (x<=xn) // Запись результатов проверки гипотезы.
fprintf (fptr, «Нулевая гипотеза принимается на уровне значимости 5%.»);
else fprintf (fptr, «Гипотеза не принимается. Ищите ошибку.»);
fclose (fptr); // Закрытие файла.
}
5. Описание программы
При разработке программы использованы возможности стандартных библиотек stdio. h, stdlib. h, math. h, conio. h, graphics.h.
Далее производится описание констант и глобальных переменных.
Подпрограммы, в которых выполняются инициализация графического режима и построение всех необходимых графиков, оформлены в виде функций.
В теле основной функции описываются локальные переменные, принимается сигнал из файла и по формулам математической статистики проводятся вычисления дисперсии, математического ожидания, среднеквадратического отклонения и коэффициента Пирсона.
С помощью условного оператора if сравниваются расчётные и табличные значения коэффициента Пирсона и делается вывод относительно гипотезы о нормальном распределении случайной величины.
Центрирование сигнала производиться в цикле for, для сортировки по возрастанию используется вложенный цикл. На основе сортированного центрированного сигнала рассчитывается шаг по формуле Стерджиса, начало первого и конец последнего интервалов, а также их количество.
С использованием циклов рассчитывается частота попадания случайной величины в интервал m[i], частость m[i]/COL и функция Лапласа Ф[i].
Графики строятся введением соответствующих функций.
В конце производится запись в текстовый файл исходного сигнала столбиком и результатов расчётов дисперсии, ожидания, отклонения и проверки гипотезы о нормальном распределении случайной величины.
6. Результаты выполнения программы
вероятность алгоритм сейсмический программа В результаты выполнения программы по обработке сейсмического сигнала, приведенного на рисунке 3, были получены следующие результаты (рисунок 4).
Рисунок 3 — График принимаемого сейсмического сигнала
Рисунок 4 — Результаты выполнения программы
Выводы
В процессе выполнения программы, предназначенной для статистических расчетов, выявлено, что гипотеза о нормальном распределении случайной величины принимается, а дисперсия, математическое ожидание и среднеквадратическое отклонение имеют следующие значения соответственно:
1023.460 449
— 0.226 562
31.991 568
Были построены графики исходного сигнала и функции Лапласа, а также гистограмма распределения случайной величины.
1. Вентцель Е. С. Теория вероятностей. — М.: Наука, 1969.
2. Основы языка С в примерах: учеб. пособие / Акимова Ю. С., Чистова Г. К., Механов В. Б. — Пенза: Изд-во Пенз. гос. ун-та, 2010. — 80 с.