Метод Фостера-Стюарта для обнаружения тренда значений среднего и дисперсии
Разработка блок-схемы алгоритма и программы на одном из алгоритмических языков для генерации значений случайных величин, подчиняющихся нормальному закону распределения. Проверка гипотезы о существовании тенденций изменения дисперсий от уровней фактора.
Рубрика | Программирование, компьютеры и кибернетика |
Вид | лабораторная работа |
Язык | русский |
Дата добавления | 19.02.2014 |
Размер файла | 486,9 K |
Отправить свою хорошую работу в базу знаний просто. Используйте форму, расположенную ниже
Студенты, аспиранты, молодые ученые, использующие базу знаний в своей учебе и работе, будут вам очень благодарны.
Размещено на http://www.allbest.ru/
Федеральное государственное бюджетное образовательное учреждение
высшего профессионального образования
"Новгородский государственный университет имени Ярослава Мудрого"
Кафедра Информационных Технологий и Систем
Дисциплина: "Обработка экспериментальных данных"
Лабораторная работа
Метод Фостера-Стюарта для обнаружения тренда значений
среднего и дисперсии
Преподаватель Александров В.Н.
Студент Многолетний А.В.
Великий Новгород
Цель работы:
Разработать блок-схему алгоритма и программу на одном из алгоритмических языков для генерации значений случайных величин, подчиняющихся нормальному закону распределения. Сформулировать динамический ряд значений случайной величины для различных уровней некоторого фактора, в частности для различных моментов времени.
Проверить гипотезы о существовании тенденций (трендов) изменения средних и дисперсий в зависимости от уровней фактора.
Математическая модель решения
Сначала генерируется выборка из К элементов. Потом находим значения компонент векторов U и L.
Далее вычисляем характеристики A и B по заданным формулам. Показатель А применяется для обнаружения тенденции изменения средних. Показатель B используется для выявления тенденций изменения дисперсий вокруг средних. После вычисления А и В проводим проверку гипотез о том, можно ли считать статистически незначимыми характеристики A-M и B с помощью t-статистики Стьюдента.
Таблица имен
XI |
массив выборки из K элементов. |
|
U |
вектор U |
|
L |
вектор L |
|
AI |
ui-li |
|
BI |
ui+li |
|
A |
характеристика A |
|
B |
характеристика B |
|
tkr |
критическое значение t-статистики |
|
MA |
Мат. ожидание А |
|
MB |
Мат. ожидание В |
|
SA |
Среднеквадратичное отклонение А |
|
SB |
Среднеквадратичное отклонение В |
|
t1 |
для A-M |
|
t2 |
для B |
Код программы:
using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Drawing;
using System.Text;
using System.Windows.Forms;
namespace OED2
{
public partial class Form1 : Form
{
public Form1()
{
InitializeComponent();
}
private Random R = new Random();
private float NormRasp(double m, double sg)
{
float sum = 0;
for (int i = 0; i < 12; i++)
sum += (float)R. NextDouble();
return (float)(m + sg * (sum - 6));
}
private void button1_Click(object sender, EventArgs e)
{
int N1 = Convert.ToInt32(textBox1.Text);
double M1 = Convert.ToDouble(textBox2.Text);
double SG = Convert.ToDouble(textBox3.Text);
//создание и анализ выбороки
List<float> X1 = new List<float> (N1); //память для выборки
List<int> U = new List<int> (N1);
List<int> L = new List<int>(N1);
List<int> AI = new List<int>(N1);
List<int> BI = new List<int>(N1);
int A = 0, B = 0;
for (int i = 0; i < N1; i++)
{
X1.Add(NormRasp(M1, SG));
bool IsMin = (i > 0);
bool IsMax = (i > 0);
for (int j = 0; j < i; j++)
{
if (X1[j] > X1[i]) IsMax = false;
if (X1[j] < X1[i]) IsMin = false;
}
if (IsMin) L. Add(1);
else L. Add(0);
if (IsMax) U. Add(1);
else U. Add(0);
AI.Add(U[i] - L[i]);
BI.Add(U[i] + L[i]);
A += AI[i];
B += BI[i];
}
string Result = "Значение A: " + A. ToString() +
"\nЗначение B: " + B. ToString() + "\n";
double MA = A * 1.0 / N1;
double MB = B * 1.0 / N1;
Result += "Мат. ожидание A: " + MA.ToString() +
"\nМат. ожидание B: " + MB.ToString() + "\n";
double SA = 0;
double SB = 0;
for (int i = 0; i < N1; i++)
{
SA += (AI[i] - MA) * (AI[i] - MA);
SB += (BI[i] - MB) * (BI[i] - MB);
}
SA = Math.Sqrt(SA / (N1 - 1));
SB = Math.Sqrt(SB / (N1 - 1));
Result += "Среднеквадратичное отклонение A: " + SA.ToString() + "\n";
Result += "Среднеквадратичное отклонение B: " + SB.ToString() + "\n";
double t1 = (A - MA) / SA;
double t2 = B / SB;
Result += "t1=" + t1.ToString() +
"\nt2=" + t2.ToString() + "\n";
double u = 1.645; //квинтиль нормального распределения
double q1 = (u * u + 1) * u / 4;
double q2 = ((5 * u * u + 16) * u * u + 3) * u / 96;
double q3 = (((3 * u * u + 19) * u * u + 17) * u * u - 15) * u / 384;
double q4 = ((((79 * u * u + 776) * u * u + 1482) * u * u - 1920) * u * u - 945) * u / 92160;
double v = N1 - 1;
double tkr = u + q1 / v + q2 / v / v + q3 / v / v / v + q4 / v / v / v / v;
Result += "Критическое значение " + tkr.ToString() + "\n";
Result += "Вывод: гипотеза об отсутсивие тренда средних или дисперсий ";
if ((t1 < tkr) && (t2 < tkr))
Result += "принимается\n";
else
Result += "отвергается\n";
listView1.Items.Clear();
for (int i = 0; i < N1; i++)
listView1.Items.Add(new ListViewItem(new string[] {
X1[i].ToString(),
U[i].ToString(),
L[i].ToString(),
AI[i].ToString(),
BI[i].ToString()}));
float min = X1[0], max = X1[0];
for (int i = 0; i < N1; i++)
{
if (X1[i] < min) min = X1[i];
if (X1[i] > max) max = X1[i];
}
float SX = (float)pictureBox1.Width / N1;
float SY = (float)pictureBox1.Height / (max - min);
Bitmap bmp = new Bitmap(pictureBox1.Width, pictureBox1.Height);
Graphics gr = Graphics.FromImage(bmp);
gr.Clear(Color.White);
for (int i = 0; i < N1-1; i++)
gr.DrawLine(Pens.Black, i * SX, (X1[i] - min) * SY, (i + 1) * SX, (X1[i + 1] - min) * SY);
for (int i = 1; i < 10; i++)
{
gr.DrawLine(Pens.LightGray, i * SX * N1 / 10, 0, i * SX * N1 / 10, pictureBox1.Height);
gr.DrawString(Convert.ToString(i * N1 / 10), Font, Brushes.Black, i * SX * N1 / 10, 0);
}
for (int i = 1; i < 4; i++)
{
gr.DrawLine(Pens.LightGray, 0, i * SY * (max - min) / 4, pictureBox1.Width, i * SY * (max - min) / 4);
gr.DrawString(Convert.ToString(i * (max - min) / 4 + min), Font, Brushes.Black, 0, i * SY * (max - min) / 4);
}
pictureBox1.Image = bmp;
MessageBox.Show(Result);
}
}}
Шаблон ввода входных данных:
Результаты работы программы
Вывод
Был разработан алгоритм, а также написана программа на языке С#. Сформулирован динамический ряд значений случайной величины для различных уровней некоторого фактора, в частности для различных моментов времени. Проверяются гипотезы о существовании тенденций (трендов) изменения средних и дисперсий в зависимости от уровней фактора.
Результаты исследования приведены в таблице результатов работы программы дисперсия алгоритм программа
Размещено на Allbest.ru
Подобные документы
Разработка алгоритма и программы на языке С++ для генерации значений случайных величин, имеющих нормальный закон распределения. Проверка нулевой гипотезы об отсутствии статистически значимых различий между двумя выборками с помощью t-критерия Стьюдента.
лабораторная работа [763,5 K], добавлен 19.02.2014Обнаружение грубых погрешностей. Проверка случайности и независимости результатов измерений в выборке. Приближенная проверка гипотезы о нормальном распределении экспериментальных данных. Проверка гипотезы о равенстве дисперсий и средних значений.
курсовая работа [1,1 M], добавлен 01.07.2011Табличный вывод значений суммы ряда и номера последнего элемента суммы в зависимости от значений величин входных параметров с применением операторов ветвления и циклов. Блок-схема алгоритма решения. Время работы программы для расчета одного значения.
контрольная работа [762,9 K], добавлен 14.05.2013Разработка различных программ для вычисления X и Y по формуле, для вычисления интеграла, для вычисления таблицы значений функции и для вычисления элементов вектора. Составление блок-схемы программы. Ввод значений, описание переменных и условия расчета.
контрольная работа [148,1 K], добавлен 08.11.2013Сущность и методика исследования вероятностной структуры сигналов, законы распределения случайных величин. Проверка гипотезы по критерию Колмогорова-Смирнова и Пирсона. Разработка программы вычисления признаков и формирования обучающего множества данных.
курсовая работа [509,6 K], добавлен 03.12.2009Основные аналитические соотношения. Блок схемы и алгоритм решения задачи. Проверка работоспособности алгоритма вручную. Таблица идентификации переменных. Формы входной и выходной печати. Разработка и отладка программы. Инструкция для работы с программой.
курсовая работа [69,8 K], добавлен 13.02.2012Разработка программы для отображения текущих значений полей файлового и необязательного заголовков и предоставление возможности изменения значений. Реализация файлового заголовка COFF для Windows поля и каталоги данных (адреса и размеры таблиц).
курсовая работа [18,9 K], добавлен 23.06.2011Моделирование работы генератора случайных двоичных чисел с ограниченной последовательностью 0 и 1, подчиняющегося равномерному закону распределения, заданному с помощью модели Гильберта. Представление программного решения задачи средствами языка С++.
лабораторная работа [857,7 K], добавлен 05.06.2011Составление алгоритма генерации полиномов по введенной степени и корням. Написание программы, реализующей этот алгоритм. Организация ввода значений и проверка его корректности. Проверки, чтобы при работе не произошел выход за диапазон используемого типа.
курсовая работа [65,6 K], добавлен 28.05.2009Алгоритм решения задачи: расположение значений ветора в порядке возрастания методом "Всплывающих пузырьков". Блок-схема алгоритма решения задачи. Описание блок-схемы, распечатка программы. Операторы: rem, dim, print, input, lprint using, for-next.
курсовая работа [17,4 K], добавлен 27.02.2010