Помощь в написании студенческих работ
Антистрессовый сервис

Разработка программы для статистических расчетов

КурсоваяПомощь в написанииУзнать стоимостьмоей работы

В теле основной функции описываются локальные переменные, принимается сигнал из файла и по формулам математической статистики проводятся вычисления дисперсии, математического ожидания, среднеквадратического отклонения и коэффициента Пирсона. Если на случайную величину оказывает воздействие пять и более случайных факторов, то закон распределения можно считать нормальным. Для проверки гипотезы… Читать ещё >

Разработка программы для статистических расчетов (реферат, курсовая, диплом, контрольная)

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 с.

Показать весь текст
Заполнить форму текущей работой