Сравнение двух групп данных с использованием t-статистики Стьюдента
Разработка алгоритма и программы на алгоритмическом языке для генерации значений случайных величин, имеющих нормальный закон распределения. Проверка нулевой гипотезы об отсутствии статистических различий между выборками с помощью t-критерия Стьюдента.
Рубрика | Программирование, компьютеры и кибернетика |
Вид | лабораторная работа |
Язык | русский |
Дата добавления | 19.02.2014 |
Размер файла | 151,0 K |
Отправить свою хорошую работу в базу знаний просто. Используйте форму, расположенную ниже
Студенты, аспиранты, молодые ученые, использующие базу знаний в своей учебе и работе, будут вам очень благодарны.
Размещено на http://www.allbest.ru/
Федеральное государственное бюджетное образовательное учреждение
высшего профессионального образования
«Новгородский государственный университет имени Ярослава Мудрого»
Кафедра Информационных Технологий и Систем
Лабораторная работа №1
по дисциплине «Обработка экспериментальных данных»
Сравнение двух групп данных с использованием t-статистики Стьюдента
Преподаватель
Александров В.Н.
Студент гр.№8091:
Алексеев С.Н.
Великий Новгород
Введение
статистический стьюдент алгоритмический
Цель работы:
Разработать алгоритм и программу на одном из алгоритмических языков для генерации значений случайных величин, имеющих нормальный закон распределения, и проверить нулевую гипотезу об отсутствии статистически значимых различий между двумя выборками с помощью t-критерия Стьюдента.
1. Математическая модель решения
Сначала генерируется выборка. После получения выборки вычисляется среднее значение и среднеквадратическое отклонение. Этот процесс повторяется и для другой выборки. Из получившихся значений среднеквадратических отклонений вычисляется среднеквадратическое отклонение выборочных среднеквадратических отклонений и оценка среднеквадратического отклонения разности двух выборочных средних.
Исходя из вычисленных среднеквадратических отклонений, формируется критерий Фишера, и по приближенным формулам вычисляется его критическое значение. Если получившееся значение критерия Фишера превосходит критическое, следовательно, нулевая гипотеза не верна, о чем и выводится соответствующее сообщение. В противном случае производится проверка на 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. Блок-схема программы
3. Текст программы
#include <iostream>
#include <stdlib.h>
#include <math.h>
using namespace std;
double NormRasp (double m, double sg); //Возращает нормально распределённую случайную величину;
double S(double * X, int n); //Возвращает cреднее значение для заданной выборки 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));
}
4. Проверка работоспособности программы
Шаблон ввода входных данных
Результаты работы программы
n1 |
n2 |
M1 |
M2 |
sg |
Критерий Фишера |
Критерий Стьюдента |
Гипотеза |
|
Вывод
Был разработан алгоритм, а также написана программа на языке С++, генерирующая значения случайных величин, которые имеют нормальный закон распределения. С помощью ее удалось проверить нулевую гипотезу об отсутствии статистически значимых различий между двумя выборками с помощью t-критерия Стьюдента.
Результаты исследования приведены в таблице результатов работы программы
Размещено на Allbest.ru
Подобные документы
Разработка алгоритма и программы на языке С++ для генерации значений случайных величин, имеющих нормальный закон распределения. Проверка нулевой гипотезы об отсутствии статистически значимых различий между двумя выборками с помощью t-критерия Стьюдента.
лабораторная работа [763,5 K], добавлен 19.02.2014Принципы реализации программы проверки статистических гипотез с использованием 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Реализация алгоритма верификации данных; разработка программы обнаружения аномальных данных в одномерных выборках. Характеристика методов D-статистики, Титьена-Мура, диаграммы "Ящик с усами"; обеспечение эффективности оценок статистических данных.
курсовая работа [2,5 M], добавлен 27.05.2013Разработка программы на языке С++ по определению величин и направлений токов в ветвях электрической цепи с использованием метода Гаусса. Блок-схема алгоритма. Контрольный расчет с помощью электронных таблиц Excel, используя метод обратной матрицы.
курсовая работа [30,3 K], добавлен 10.11.2010Автоматизация промежуточного и финального контроля результатов обучения учащихся различных учебных заведений. Тестирование, основанное на диалоге вычислительной системы с пользователем. Реализация приложения генерации тестов из базы данных на языке РНР.
курсовая работа [234,1 K], добавлен 04.08.2009