Метод Фостера-Стюарта для обнаружения тренда значений среднего и дисперсии

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

Рубрика Программирование, компьютеры и кибернетика
Вид лабораторная работа
Язык русский
Дата добавления 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

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