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

  • Вид работы:
    Курсовая работа (т)
  • Предмет:
    Информационное обеспечение, программирование
  • Язык:
    Русский
    ,
    Формат файла:
    MS Word
    107,73 Кб
  • Опубликовано:
    2012-11-12
Вы можете узнать стоимость помощи в написании студенческой работы.
Помощь в написании работы, которую точно примут!

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

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)

Вероятность попадания случайной величины в элементарный интервал Dx определится

P (x £ X £ x +Dx) = F (x +Dx) - F(x).         (2)

Разделим обе части равенства на Dx и найдем предел при Dx ® 0

.

Эта функция есть плотность распределения вероятности или дифференциальный закон распределения (рисунок 1). Функция распределения вероятности через плотность распределения вероятности может быть выражена следующим образом

. (3)

Оценкой плотности распределения вероятности является гистограмма частости.

Рисунок 1

Для ее построения необходимо выполнить следующие действия:

) центрировать значения случайной величины. Центрированной случайной величиной называется разность между значениями случайной величины и ее математическим ожиданием;

) упорядочить данные в порядке возрастания значений случайной величины;

3 определить длину интервала по формуле Стерджеса

,                           (4)

где n - общее количество реализаций случайной величины;

) область изменения случайной величины разбить на 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;

) на каждом интервале определить частость mi/n;

) построить гистограмму (рисунок 2). Соединив середины прямоугольников, получим кривую, близкую к функции f(x).

Вторая задача математической статистики - это оценка неизвестных параметров.

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

Основными параметрами являются моменты первого и второго порядка - это математическое ожидание и дисперсия. Их оценками являются среднее арифметическое и выборочная дисперсия, которые вычисляются по выражениям:

, (7)

. (8)

Третья задача - статистическая проверка гипотез. Задача формулируется следующим образом.

Пусть на основании некоторых соображений можно считать, что функция распределения исследуемой случайной величины X есть F1(x). Данное предположение называется нулевой гипотезой и обозначается H0. Как правило, нулевая гипотеза - это предположение о том, что реальный закон распределения не отличается от теоретического. Противоположная гипотеза (есть различия) называется альтернативной и обозначается через H1.

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

Методика проверки гипотезы заключается в следующем:

) весь диапазон изменения случайной величины X разбивают на k интервалов и в каждом из них находят частоты mk (см. п.п. 1…5 в первой задаче);

) оценить среднее арифметическое и выборочную дисперсию (см. вторую задачу);

) если частоты на крайних интервалах меньше пяти, то интервалы можно объединить в один до mi = 5…7 (согласно рекомендациям К. Кокрена;

4 в каждом интервале вычислить функцию Лапласа

, (9)

где ; yi - значение случайной величины в середине i-го интервала. Значения функции Ф(ti) можно найти по таблице 1 [1];

) определить теоретическую частоту в каждом интервале:

,         (10)

) вычислить расчетную статистику :

.             (11)

7) теоретическое значение  найти по таблице 7 [1] для n степеней свободы и уровня значимости a. Параметр n определяется по формуле n = k - b - 1, где b - количество параметров, оцениваемых по выборке (b = 2). Для статистически незначимых задач a = 0,5;

) если , то гипотеза о нормальном законе распределения принимается. Говорят, что нулевая гипотеза принимается на уровне значимости 5%.

2. Алгоритм основной программы










3. Алгоритмы функций

3.1 Алгоритм функции для построения графика исходного массива


























3.2 Алгоритм функции для построения гистограммы и графика функции Лапласа

























































4. Текст программы

// Программа для статистических расчетов

#include <stdio.h>

#include <stdlib.h>

#include <conio.h>

#include <math.h>

#include <graphics.h>

// Задание констант.

#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) // Проверка на наличие ошибки

{(«Ошибка:%s \n», grapherrormsg(errorcode)); («Для останова нажмите любую клавишу \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<COL; i++)

{(5); // .(y1, (115-V [i-1]*0.5), y2, (115-V[i]*0.5)); // Построение графика1=y2;

y2+=3; // Смещение координат по горизонтальной оси

}

}

// Функция для построения гистограммы и графика функции Лапласа

void gistfun (float m[], float F[], int k)

{=23;=43;(7);(20,236,630,470,1);(1,1,610,225); (i=1; i<=k; i++)

{

setfillstyle (1,5); // Задание типа и цвета заполнения

bar (y1,115, y2, (115-m[i]*50)); /*Построение гистограммы в соответствии с масштабом*/

setcolor(RED);(y1,115, y2, (115-m[i]*50));(GREEN);(i!=k) (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],[MAX], fn[MAX], x, xn;

 // Приём сигнала.

FILE *fptr; // Инициализация файловой переменной

fptr=fopen («D:\\B1B015.TXT», «rt»); // Открытие файла, содержащего сигнал

if (fptr==NULL) // Проверка

{

printf («Ошибка \n»);

getch();(1); //

}(i=0; i<COL; i++)

{(fptr, «%f»,&V[i]);+=V[i];

}

fclose(fptr); // Закрытие файла

/*Расчёт математического ожидания, дисперсии и среднеквадратического отклонения*/

ojid=sum/COL; // Определение математического ожидания

printf («\n»);

printf («Математическое ожидание =%f \n», ojid);

for (i=0; i<COL; i++)+=(V[i] - ojid)*(V[i] - ojid);/=COL-1; // Дисперсия=sqrt(dis); // Отклонение(«Дисперсия =%f \n», dis); («Среднеквадратическое отклонение =%f \n», otkl);

// Расчёт функции Лапласа(i=0; i<COL; i++)[i]=V[i] - ojid; // Центрирование

for (i=0; i<COL; i++) // Сортировка методом выбора

for (j=i+1; j<COL; j++)(VC[i]>VC[j])

{=VC[i];[i]=VC[j];[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);=y1+h;(i=1; i<=k; i++)[i]=0;

for (i=1; i<=k; i++) /*Частота попадания случайной величины в каждый интервал*/

{(j=0; j<COL; j++)((VC[j]>y1)&&(VC[j]<=y2))[i]+=VC[j];=y2;+=h;

for (i=1; i<=k; i++)

{

m[i]=m[i]/COL; // Частость на данном интервале

t[i]=(y1+h/2-ojid)/dis;1+=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 («Гипотеза не принимается. Ищите ошибку.»);(«\n»);();

 // Построение графиков

initgr(); // Функция инициализации графического режима

graphmas(V); // Построение графика исходного массива

gistfun (m, F, k); // Гистограмма и функция Лапласа

getch();

closegraph(); // Закрытие графического режима

// Запись исходных данных и результатов расчётов в текстовый файл

fptr=fopen («D:\\kurs\rin.txt», «w+t»); /*Создание файла для записи по указанному адресу*/

if (fptr==NULL) // Проверка

{

printf («Ошибка \n»);

getch();

exit(1);

}

fprintf (fptr, «Исходные данные:\n»);

for (i=0; i<COL; i++) (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, «Гипотеза не принимается. Ищите ошибку.»);(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 - Результаты выполнения программы

Выводы

В процессе выполнения программы, предназначенной для статистических расчетов, выявлено, что гипотеза о нормальном распределении случайной величины принимается, а дисперсия, математическое ожидание и среднеквадратическое отклонение имеют следующие значения соответственно:

.460449

.226562

.991568

Были построены графики исходного сигнала и функции Лапласа, а также гистограмма распределения случайной величины.

Список литературы

1. Вентцель Е.С. Теория вероятностей. - М.: Наука, 1969.

. Основы языка С в примерах: учеб. пособие / Акимова Ю.С., Чистова Г.К., Механов В.Б. - Пенза: Изд-во Пенз. гос. ун-та, 2010. - 80 с.

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

 

Не нашли материал для своей работы?
Поможем написать уникальную работу
Без плагиата!