Сравнение двух групп данных с использованием t-статистики Стьюдента

Разработка алгоритма и программы на языке С++ для генерации значений случайных величин, имеющих нормальный закон распределения. Проверка нулевой гипотезы об отсутствии статистически значимых различий между двумя выборками с помощью t-критерия Стьюдента.

Рубрика Программирование, компьютеры и кибернетика
Вид лабораторная работа
Язык русский
Дата добавления 19.02.2014
Размер файла 763,5 K

Отправить свою хорошую работу в базу знаний просто. Используйте форму, расположенную ниже

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

Размещено на http://www.allbest.ru/

Федеральное государственное бюджетное образовательное учреждение высшего профессионального образования

Новгородский государственный университет имени Ярослава Мудрого

Кафедра Информационных Технологий и Систем

Лабораторная работа №1

Дисциплина: Обработка экспериментальных данных

Сравнение двух групп данных с использованием t-статистики Стьюдента

Преподаватель

Александров В.Н.

Студент гр.№0091: Многолетний А.В.

Великий Новгород 2011

Цель работы

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

Математическая модель решения

Сначала генерируется выборка. После получения выборки вычисляется среднее значение и среднеквадратическое отклонение. Этот процесс повторяется и для другой выборки. Из получившихся значений среднеквадратических отклонений вычисляется среднеквадратическое отклонение выборочных среднеквадратических отклонений и оценка среднеквадратического отклонения разности двух выборочных средних.

Исходя из вычисленных среднеквадратических отклонений, формируется критерий Фишера, и по приближенным формулам вычисляется его критическое значение. Если получившееся значение критерия Фишера превосходит критическое, следовательно, нулевая гипотеза не верна, о чем и выводится соответствующее сообщение. В противном случае производится проверка на t-критерии Стьюдента.

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

Таблица имен переменных

имя

описание

n1

Объем выборки №1

n2

Объем выборки №2

M1

Математическое ожидание выборки №1

M2

Математическое ожидание выборки №2

sg

Дисперсия

S1

Среднее значение выборки №1

S2

Среднее значение выборки №2

SQ1

Среднеквадратичное отклонение выборки №1

SQ2

Среднеквадратичное отклонение выборки №2

X1

Выборка №1

X2

Выборка №2

SS

среднеквадратическое отклонение выборочных среднеквадратических отклонений

S

оценка среднеквадратического отклонения разности двух выборочных средних

F

Критерий Фишера

u

Квантиль нормального распределения

L

Переменная для вычисления критического значения критерия Фишера

H

Переменная для вычисления критического значения критерия Фишера

W

Переменная для вычисления критического значения критерия Фишера

Fc

критическое значение критерия Фишера

t

Значение t-критерия Стьюдента

v

Число степеней свободы выборок

q1

Переменная для вычисления критического значения t-критерия Стьюдента

q2

Переменная для вычисления критического значения t-критерия Стьюдента

q3

Переменная для вычисления критического значения t-критерия Стьюдента

q4

Переменная для вычисления критического значения t-критерия Стьюдента

Tc

критическое значение t-критерия Стьюдента

Рисунок 1. Блок-схема программы

Код программы

// 1LAlex

#include "stdafx.h"

#include <iostream>

#include <stdlib.h>

#include <math.h>

using namespace std;

double NormRasp (double m, double sg); //Возвращает нормально распределённую случайную величину;

double S(double * X, int n); //Возвращает среднее значение для заданной выборки X, размером n

double SQ(double * X,int n,double S); //Возвращает среднеквадратическое отклонение

int main(){

int n1,n2; //Объемы двух выборок;

double

M1,M2, //Генеральные значения математического ожидания для двух выборок;

sg; //Генеральное значение среднеквадратического отклонения; (сигма малое)

cout<<"Vvedite ob'em pervoy vuborki:\n\tn1=";

cin>> n1;

cout<<"Vvedite general'noe znachenie matematichescogo ozidaniya dlya pervoy vuborki:\n\tM1=";

cin>> M1;

cout<<"Vvedite ob'em vtoroy vuborki:\n\tn2=";

cin>> n2;

cout<<"Vvedite general'noe znachenie matematichescogo ozidaniya dlya vtoroy vuborki:\n\tM2=";

cin>> M2;

cout<<"Vvedite general'noe znachenie srednekvadratichescogo otcloneniya:\n\tsg=";

cin>> sg;

//Создание выборки

//Выделяем память для значений первой выборки

double * X1 = new double [n1];

double S1 = 0; //Среднее значение первой выборки

double SQ1= 0; //среднеквадратичное отклонение

for(int i=0;i<n1;i++) //Заполнение первой выборки

X1[i]=NormRasp(M1,sg);

S1=S(X1,n1);

SQ1=SQ(X1,n1,S1);

//Удаляем выборку

delete [] X1;

cout << "Srednee znachenie pervoy vuborci: \n\tS1="<<S1<<"\nSrednekvadratichnoe otclonenie pervoy vuborki:\n\tSQ1="<< SQ1 <<"\n";

//Выделяем память для значений второй выборки

double * X2 = new double [n2];

double S2 = 0; //Среднее значение первой выборки

double SQ2= 0; //среднеквадратичное отклонение

for(int i=0;i<n2;i++) //Заполнение первой выборки

X2[i]=NormRasp(M2,sg);

S2=S(X2,n2);

SQ2=SQ(X2,n2,S2);

//Удаляем выборку

delete [] X2;

cout << "Srednee znachenie vtoroy vuborci:\n\tS2="<<S2<<"\n Srednecvadratichnoe otclonenie vtoroy vuborci:\n\tSQ2="<< SQ2 <<"\n";

double SS=sqrt(((n1-1)*pow(S1,2)+(n2-1)*pow(S2,2))/(n1+n2-2));

cout << "Srednevzveshennoe srednecvadraticheskoe jtclonenie dvuh srednecvadraticheskih otcloneniy:\n\tSS=" << SS << "\n";

double S=SS*(1.0/(double)n1+1.0/(double)n2);

cout << "Ocenka srednekvadraticheskogo otkloneniya raznosti dvuh vuborochnuh srednih:\n\tS=" << S << "\n";

double F=pow(SQ1,2)/pow(SQ2,2);

if (F<1) F=1/F;

cout << "Znachenie kriteriya Fishera:\n\tF=" << F <<"\n";

double u=1.645; //квантиль нормального распределения

double v1=n1-1;//Число степеней свободы для числителя

double v2=n2-1;//Число степеней свободы для знаменателя

double L=(pow(u,2)-3)/6;

double H=2.0*(v1-1)*(v2-1)/(v1+v2-2);

double W=u*sqrt(H+L)/H-(1.0/(v1-1)-1.0/(v2-1))*(L+5.0/6.0-2.0/3.0/H);

double Fc=exp(W*2);

cout << "Kriticheskoe znachenie kriteriya Fushera:\n\t Fc=" << Fc <<"\n";

if (F>=Fc) cout << "Kriteriy Fishera ne vupolnen - nulevaya gipoteza ne verna!\n";

else

{

cout << "Kriteriy Fishera vupolnen!\n";

double t=(fabs(S1)-fabs(S2))/S;

cout << "Znachenie t-kriteriya St'yudenta\n\tt=" << t << "\n";

double q1=(pow(u,2)+1)*u/4;

double q2=((5*pow(u,2)+16)*pow(u,2)+3)*u/96;

double q3=(((3*pow(u,2)+19)*pow(u,2)+17)*pow(u,2)-15)*u/384;

double q4=((((79*pow(u,2)+776)*pow(u,2)+1482)*pow(u,2)-1920)*pow(u,2)-945)*u/92160;

double v=v1+v2;

double tc=u+q1/v+q2/v/v+q3/v/v/v+q4/v/v/v/v;

cout << "Kriticheskoe znachenie t-kriteriya St'yudenta: " << tc << "\n";

if (t<tc) cout << "t-kriteriy St'yudenta vupolnen. Nulevaya gipoteza verna\n";

else cout << "t-kriteriy St'yudenta ne vupolnen. Nulevaya gipoteza ne verna\n";

}

system("pause");

}

double NormRasp (double m, double sg){

double sum=0.0;

for(int i=0;i<12;i++)

sum+=((double)rand())/RAND_MAX;

return m+sg*(sum-1);

}

double S(double * X,int n){

double sum=0.0;

for(int i=0; i<n; i++)

sum+=X[i];

return sum/n;

}

double SQ(double * X,int n,double S){

double SQ=0.0;

for (int i=0; i<n; i++)

SQ+=(X[i]-S)*(X[i]-S);

return sqrt(SQ/(n-1));

}

Пример ввода входных данных

Результаты работы программы

n1

n2

M1

M2

sg

Критерий Фишера

Критерий Стьюдента

Гипотеза

х

х

х

х

х

х

х

х

Пример

Вывод

Был разработан алгоритм, а также написана программа (язык написания программы: С++), генерирующая значения случайных величин, которые имеют нормальный закон распределения.

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

Федеральное государственное бюджетное образовательное учреждение высшего профессионального образования

Новгородский государственный университет имени Ярослава Мудрого

Кафедра Информационных Технологий и Систем

Лабораторная работа №1

по дисциплине: Обработка экспериментальных данных

Сравнение двух групп данных с использованием t-статистики Стьюдента

Преподаватель

Александров В.Н.

Студент гр.№8091:

Алексеев С.Н.

Великий Новгород 2011

Цель работы

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

Математическая модель решения

Сначала генерируется выборка. После получения выборки вычисляется среднее значение и среднеквадратическое отклонение. Этот процесс повторяется и для другой выборки. Из получившихся значений среднеквадратических отклонений вычисляется среднеквадратическое отклонение выборочных среднеквадратических отклонений и оценка среднеквадратического отклонения разности двух выборочных средних.

Исходя из вычисленных среднеквадратических отклонений, формируется критерий Фишера, и по приближенным формулам вычисляется его критическое значение. Если получившееся значение критерия Фишера превосходит критическое, следовательно, нулевая гипотеза не верна, о чем и выводится соответствующее сообщение. В противном случае производится проверка на t-критерии Стьюдента.

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

Таблица имен

n1

Объем выборки №1

n2

Объем выборки №2

M1

Математическое ожидание выборки №1

M2

Математическое ожидание выборки №2

sg

Дисперсия

S1

Среднее значение выборки №1

S2

Среднее значение выборки №2

SQ1

Среднеквадратичное отклонение выборки №1

SQ2

Среднеквадратичное отклонение выборки №2

X1

Выборка №1

X2

Выборка №2

SS

среднеквадратическое отклонение выборочных среднеквадратических отклонений

S

оценка среднеквадратического отклонения разности двух выборочных средних

F

Критерий Фишера

u

Квантиль нормального распределения

L

Переменная для вычисления критического значения критерия Фишера

H

Переменная для вычисления критического значения критерия Фишера

W

Переменная для вычисления критического значения критерия Фишера

Fc

критическое значение критерия Фишера

t

Значение t-критерия Стьюдента

v

Число степеней свободы выборок

q1

Переменная для вычисления критического значения t-критерия Стьюдента

q2

Переменная для вычисления критического значения t-критерия Стьюдента

q3

Переменная для вычисления критического значения t-критерия Стьюдента

q4

Переменная для вычисления критического значения t-критерия Стьюдента

Tc

критическое значение t-критерия Стьюдента

Рисунок 2. Блок-схема программы

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

случайный величина выборка стьюдент

#include <iostream>

#include <stdlib.h>

#include <math.h>

using namespace std;

double NormRasp (double m, double sg); //Возвращает нормально распределённую случайную величину;

double S(double * X, int n); //Возвращает среднее значение для заданной выборки X, размером n

double SQ(double * X,int n,double S); //Возвращает среднеквадратическое отклонение

int main(){

int n1,n2; //Объемы двух выборок;

double

M1,M2, //Генеральные значения математического ожидания для двух выборок;

sg; //Генеральное значение среднеквадратического отклонения; (сигма малое)

cout<<"Введите объем первой выборки:\n\tn1=";

cin>> n1;

cout<<"Введите генеральное значение математического ожидания для первой выборки:\n\tM1=";

cin>> M1;

cout<<"Введите объем второй выборки:\n\tn2=";

cin>> n2;

cout<<"Введите генеральное значение математического ожидания для второй выборки:\n\tM2=";

cin>> M2;

cout<<"Введите генеральное значение среднеквадратического отклонения:\n\tsg=";

cin>> sg;

//Создание выборки

//Выделяем память для значений первой выборки

double * X1 = new double [n1];

double S1 = 0; //Среднее значение первой выборки

double SQ1= 0; //среднеквадратичное отклонение

for(int i=0;i<n1;i++) //Заполнение первой выборки

X1[i]=NormRasp(M1,sg);

S1=S(X1,n1);

SQ1=SQ(X1,n1,S1);

//Удаляем выборку

delete [] X1;

cout << "Среднее значение первой выборки:\n\tS1="<<S1<<"\n Среднеквадратичное отклонение первой выборки:\n\tSQ1="<< SQ1 <<"\n";

//Выделяем память для значений второй выборки

double * X2 = new double [n2];

double S2 = 0; //Среднее значение первой выборки

double SQ2= 0; //среднеквадратичное отклонение

for(int i=0;i<n2;i++) //Заполнение первой выборки

X2[i]=NormRasp(M2,sg);

S2=S(X2,n2);

SQ2=SQ(X2,n2,S2);

//Удаляем выборку

delete [] X2;

cout << "Среднее значение второй выборки:\n\tS2="<<S2<<"\n Среднеквадратичное отклонение второй выборки:\n\tSQ2="<< SQ2 <<"\n";

double SS=sqrt(((n1-1)*pow(S1,2)+(n2-1)*pow(S2,2))/(n1+n2-2));

cout << "Средневзвешенное среднеквадратическое отклонение двух среднеквадратических отклонений: \n\tSS=" << SS << "\n";

double S=SS*(1.0/(double)n1+1.0/(double)n2);

cout << "Оценка среднеквадратического отклонения разности двух выборочных средних:\n\tS=" << S << "\n";

double F=pow(SQ1,2)/pow(SQ2,2);

if (F<1) F=1/F;

cout << "Значение критерия Фишера:\n\tF=" << F <<"\n";

double u=1.645; //квантиль нормального распределения

double v1=n1-1;//Число степеней свободы для числителя

double v2=n2-1;//Число степеней свободы для знаменателя

double L=(pow(u,2)-3)/6;

double H=2.0*(v1-1)*(v2-1)/(v1+v2-2);

double W=u*sqrt(H+L)/H-(1.0/(v1-1)-1.0/(v2-1))*(L+5.0/6.0-2.0/3.0/H);

double Fc=exp(W*2);

cout << "Критическое значение критерия Фишера: \n\t Fc=" << Fc <<"\n";

if (F>=Fc) cout << "Критерий Фишера не выполнен - нулевая гипотеза не верна!\n";

else

{

cout << "Критерий Фишера выполнен! \n";

double t=(fabs(S1)-fabs(S2))/S;

cout << "Значение t-критерия Стьюдента\n\tt=" << t << "\n";

double q1=(pow(u,2)+1)*u/4;

double q2=((5*pow(u,2)+16)*pow(u,2)+3)*u/96;

double q3=(((3*pow(u,2)+19)*pow(u,2)+17)*pow(u,2)-15)*u/384;

double q4=((((79*pow(u,2)+776)*pow(u,2)+1482)*pow(u,2)-1920)*pow(u,2)-945)*u/92160;

double v=v1+v2;

double tc=u+q1/v+q2/v/v+q3/v/v/v+q4/v/v/v/v;

cout << "Критическое значение t-критерия Стьюдента: " << tc << "\n";

if (t<tc) cout << "t-критерий Стьюдента выполнен. Нулевая гипотеза верна\n";

else cout << "t-критерий Стьюдента не выполнен. Нулевая гипотеза не верна\n";

}

}

double NormRasp (double m, double sg){

double sum=0.0;

for(int i=0;i<12;i++)

sum+=((double)rand())/RAND_MAX;

return m+sg*(sum-1);

}

double S(double * X,int n){

double sum=0.0;

for(int i=0; i<n; i++)

sum+=X[i];

return sum/n;

}

double SQ(double * X,int n,double S){

double SQ=0.0;

for (int i=0; i<n; i++)

SQ+=(X[i]-S)*(X[i]-S);

return sqrt(SQ/(n-1));

}

Шаблон ввода входных данных

Результаты работы программы

n1

n2

M1

M2

sg

Критерий Фишера

Критерий Стьюдента

Гипотеза

х

х

х

х

х

х

х

х

Вывод

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

Результаты исследования приведены в таблице результатов работы программы.

Контрольные вопросы

ь Что такое t-статистика Стьюдента?

Ш Класс методов статистической проверки гипотез (статистических критериев), основанных на сравнении с распределением Стьюдента. Наиболее частые случаи применения t-критерия связаны с проверкой равенства средних значений в двух выборках.

ь Какие существуют ограничения применения t-статистики Стьюдента?

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

ь Для чего используется F-статистика Фишера?

Ш Критерий Фишера применяется для проверки равенства дисперсий двух выборок.

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

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

§ Алгоритм суммирования для и :

для произвольных и :

§ Приближенный алгоритм

,

где

§ Алгоритм обратных функций

где и - два разных значения случайного числа с равномерным законом распределения в интервале от 0 до 1.

Размещено на Allbest.ru


Подобные документы

  • Принципы реализации программы проверки статистических гипотез с использованием t-критерия Стьюдента, ее общий алгоритм. Особенности применения двухвыборочного критерия для независимых выборок. Функциональные модели решения задачи для различных функций.

    курсовая работа [644,2 K], добавлен 25.01.2010

  • Сущность и методика исследования вероятностной структуры сигналов, законы распределения случайных величин. Проверка гипотезы по критерию Колмогорова-Смирнова и Пирсона. Разработка программы вычисления признаков и формирования обучающего множества данных.

    курсовая работа [509,6 K], добавлен 03.12.2009

  • Написание программы для генерации случайных чисел, в которой реализуются возможности генерации абсолютно случайных чисел. Приложение на языке С/С++. Описание узла, содержащего данные; функций и методов работы; чтения данных из памяти и вывода их на экран.

    курсовая работа [172,4 K], добавлен 23.05.2012

  • Моделирование работы генератора случайных двоичных чисел с ограниченной последовательностью 0 и 1, подчиняющегося равномерному закону распределения, заданному с помощью модели Гильберта. Представление программного решения задачи средствами языка С++.

    лабораторная работа [857,7 K], добавлен 05.06.2011

  • Обнаружение грубых погрешностей. Проверка случайности и независимости результатов измерений в выборке. Приближенная проверка гипотезы о нормальном распределении экспериментальных данных. Проверка гипотезы о равенстве дисперсий и средних значений.

    курсовая работа [1,1 M], добавлен 01.07.2011

  • Генерирование выборок, имеющих нормальный закон распределения, и определение для них математического ожидания и дисперсии. Нахождение значения критерия Фишера, сравнивнение его с критическим. Проведение однофакторного дисперсионного анализа выборок.

    лабораторная работа [291,0 K], добавлен 19.02.2014

  • Разработка программы на языке С++ по определению величин и направлений токов в ветвях электрической цепи с использованием метода Гаусса. Блок-схема алгоритма. Контрольный расчет с помощью электронных таблиц Excel, используя метод обратной матрицы.

    курсовая работа [30,3 K], добавлен 10.11.2010

  • Автоматизация промежуточного и финального контроля результатов обучения учащихся различных учебных заведений. Тестирование, основанное на диалоге вычислительной системы с пользователем. Реализация приложения генерации тестов из базы данных на языке РНР.

    курсовая работа [234,1 K], добавлен 04.08.2009

  • Исследование арифметических выражений и разработка простых программ. Таблица переменных для алгоритма и программы. Алгоритм решения, текст программы на языке С. Разработка программы вычисления значений выражений, сравнение результатов с ручным подсчетом.

    лабораторная работа [282,7 K], добавлен 30.01.2015

  • Понятие фрактала, принципы создания изображения. Разработка алгоритма и режимов генерации ландшафта. Описание программы FracLandscapes.exe. в среде разработки Delphi 10. Примеры построения ландшафта с использованием различных режимов и количества изгибов.

    курсовая работа [688,9 K], добавлен 04.05.2014

Работы в архивах красиво оформлены согласно требованиям ВУЗов и содержат рисунки, диаграммы, формулы и т.д.
PPT, PPTX и PDF-файлы представлены только в архивах.
Рекомендуем скачать работу.