Сравнение двух групп данных с использованием t-статистики Стьюдента
Исходя их среднеквадратических отклонений выборок, вычисляется t-критерий Стьюдента, и по приближенным формулам вычисляется его критическое значение. Если получившееся значение критерия превосходит критическое, следовательно, нулевая гипотеза не верна. Иначе нулевая гипотеза верна. Исходя из среднеквадратических отклонений выборок, вычисляется t-критерий Стьюдента, и по приближенным формулам… Читать ещё >
Сравнение двух групп данных с использованием t-статистики Стьюдента (реферат, курсовая, диплом, контрольная)
Федеральное государственное бюджетное образовательное учреждение высшего профессионального образования Новгородский государственный университет имени Ярослава Мудрого Кафедра Информационных Технологий и Систем Лабораторная работа № 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
#include
#include
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: ntn1=";
cin>> n1;
cout<<" Vvedite general’noe znachenie matematichescogo ozidaniya dlya pervoy vuborki: ntM1=";
cin>> M1;
cout<<" Vvedite ob’em vtoroy vuborki: ntn2=";
cin>> n2;
cout<<" Vvedite general’noe znachenie matematichescogo ozidaniya dlya vtoroy vuborki: ntM2=";
cin>> M2;
cout<<" Vvedite general’noe znachenie srednekvadratichescogo otcloneniya: ntsg=";
cin>> sg;
//Создание выборки
//Выделяем память для значений первой выборки
double * X1 = new double [n1];
double S1 = 0; //Среднее значение первой выборки
double SQ1= 0; //среднеквадратичное отклонение
for (int i=0;i
X1[i]=NormRasp (M1,sg);
S1=S (X1,n1);
SQ1=SQ (X1,n1,S1);
//Удаляем выборку
delete [] X1;
cout << «Srednee znachenie pervoy vuborci: ntS1="<<» nSrednekvadratichnoe otclonenie pervoy vuborki: ntSQ1="<< SQ1 <<" n" ;
//Выделяем память для значений второй выборки
double * X2 = new double [n2];
double S2 = 0; //Среднее значение первой выборки
double SQ2= 0; //среднеквадратичное отклонение
for (int i=0;i
X2[i]=NormRasp (M2,sg);
S2=S (X2,n2);
SQ2=SQ (X2,n2,S2);
//Удаляем выборку
delete [] X2;
cout << «Srednee znachenie vtoroy vuborci: ntS2="<<» n Srednecvadratichnoe otclonenie vtoroy vuborci: ntSQ2="<< 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: ntSS=» << SS << «n» ;
double S=SS*(1.0/(double)n1+1.0/(double)n2);
cout << «Ocenka srednekvadraticheskogo otkloneniya raznosti dvuh vuborochnuh srednih: ntS=» << S << «n» ;
double F=pow (SQ1,2)/pow (SQ2,2);
if (F<1) F=1/F;
cout << «Znachenie kriteriya Fishera: ntF=» << 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: nt 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’yudentantt=» << 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/92 160;
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<< «t-kriteriy St’yudenta vupolnen. Nulevaya gipoteza vernan» ;
else cout << «t-kriteriy St’yudenta ne vupolnen. Nulevaya gipoteza ne vernan» ;
}
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
sum+=X[i];
return sum/n;
}
double SQ (double * X, int n, double S){
double SQ=0.0;
for (int i=0; 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
#include
#include
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<<" Введите объем первой выборки: ntn1=";
cin>> n1;
cout<<" Введите генеральное значение математического ожидания для первой выборки: ntM1=";
cin>> M1;
cout<<" Введите объем второй выборки: ntn2=";
cin>> n2;
cout<<" Введите генеральное значение математического ожидания для второй выборки: ntM2=";
cin>> M2;
cout<<" Введите генеральное значение среднеквадратического отклонения: ntsg=";
cin>> sg;
//Создание выборки
//Выделяем память для значений первой выборки
double * X1 = new double [n1];
double S1 = 0; //Среднее значение первой выборки
double SQ1= 0; //среднеквадратичное отклонение
for (int i=0;i //Заполнение первой выборки
X1[i]=NormRasp (M1,sg);
S1=S (X1,n1);
SQ1=SQ (X1,n1,S1);
//Удаляем выборку
delete [] X1;
cout << «Среднее значение первой выборки: ntS1="<<» n Среднеквадратичное отклонение первой выборки: ntSQ1="<< SQ1 <<" n" ;
//Выделяем память для значений второй выборки
double * X2 = new double [n2];
double S2 = 0; //Среднее значение первой выборки
double SQ2= 0; //среднеквадратичное отклонение
for (int i=0;i //Заполнение первой выборки
X2[i]=NormRasp (M2,sg);
S2=S (X2,n2);
SQ2=SQ (X2,n2,S2);
//Удаляем выборку
delete [] X2;
cout << «Среднее значение второй выборки: ntS2="<<» n Среднеквадратичное отклонение второй выборки: ntSQ2="<< SQ2 <<" n" ;
double SS=sqrt (((n1−1)*pow (S1,2)+(n2−1)*pow (S2,2))/(n1+n2−2));
cout << «Средневзвешенное среднеквадратическое отклонение двух среднеквадратических отклонений: ntSS=» << SS << «n» ;
double S=SS*(1.0/(double)n1+1.0/(double)n2);
cout << «Оценка среднеквадратического отклонения разности двух выборочных средних: ntS=» << S << «n» ;
double F=pow (SQ1,2)/pow (SQ2,2);
if (F<1) F=1/F;
cout << «Значение критерия Фишера: ntF=» << 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 << «Критическое значение критерия Фишера: nt Fc=» << Fc <<" n" ;
if (F>=Fc) cout << «Критерий Фишера не выполнен — нулевая гипотеза не верна! n» ;
else
{
cout << «Критерий Фишера выполнен! n» ;
double t=(fabs (S1)-fabs (S2))/S;
cout << «Значение t-критерия Стьюдентаntt=» << 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/92 160;
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<< «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
sum+=X[i];
return sum/n;
}
double SQ (double * X, int n, double S){
double SQ=0.0;
for (int i=0; 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.