Однофакторный дисперсионный анализ
Label6. Text += «Критическое значение «+ Math. Round (Fkr, 3) + «n»; Label6. Text += «Дисперсия фактора «+ Math. Round (DA, 3) + «n»; Введите изменение математического ожидания: Label6. Text += «Влияние фактора «+ Math. Round (DA, 3) +» n»; Double H = 2.0 * (K — 2) * (K * (N — 1) — 1) / (K * N — 2); Критическое значение критерия Фишера. Однофакторный дисперсионный анализ. Double uq = Math. Pow… Читать ещё >
Однофакторный дисперсионный анализ (реферат, курсовая, диплом, контрольная)
Федеральное государственное бюджетное образовательное учреждение высшего профессионального образования
" Новгородский государственный университет имени Ярослава Мудрого"
Кафедра Информационных Технологий и Систем Лабораторная работа по дисциплине «Обработка экспериментальных данных»
Однофакторный дисперсионный анализ
Преподаватель:
Александров В.Н.
Студент гр.0091:
Многолетний А.В.
Великий Новгород
1. Цель работы
Ознакомиться с однофакторным дисперсионным анализом и разработать алгоритм и программу для его реализации.
Алгоритм решения:
Сначала генерируются К выборок из N элементов. Затем для каждой выборки определяется математическое ожидание и дисперсия. Исходя из полученных данных, определяется критерий Кохрана.
Определяется выборочная дисперсия, средняя дисперсия и дисперсия влияния фактора. Исходя из них определяется значение критерия Фишера, оно сравнивается с критическим, на основание чего делается вывод о существенности влияния фактора
2. Таблица имен
D | Дисперсия каждой выборки | |
Matrix | Массив выборок | |
D0 | Средняя дисперсия выборок | |
F | Значение критерия Фишера | |
Fkr | Критическое значение критерия Фишера | |
M1 | Мат. ожидание первой выборки | |
N | Объем выборок | |
g | Значение критерия Кохрана | |
K | Число выборок | |
DM | Шаг мат. ожидания | |
SumD | Сумма дисперсий выборок | |
MaxD | Максимальная дисперсия выборки | |
Dy | Общая выборочная дисперсия | |
DA | Дисперсия влияния фактора | |
SG | Генеральная дисперсия | |
M | Массив мат. ожиданий выборок | |
Mid | Среднее значение выборок | |
3. Текст программы
using System;
using System.Collections.Generic;
using System. ComponentModel;
using System. Data;
using System. Drawing;
using System. Linq;
using System. Text;
using System.Windows.Forms;
namespace oed5lab
{
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));
}
double InverseNormalCDF (double alpha)
{
double res = 0, p = 0, t = 0, q = 0;
if (alpha < 0.5)
p = alpha;
else
p = 1 — alpha;
t = Math. Sqrt (-2 * Math. Log (p, Math. E));
q = t — ((0.10 328 * t + 0.802 853) * t + 2.515 517) / (((0.1 308 * t + 0.189 269) * t + 1.432 788) * t + 1);
if (alpha > 0.5)
res = q;
else
res = -q;
return res;
}
private void button1_Click (object sender, EventArgs e)
{
//Введите объем выборки:
int N=Convert.ToInt32(textBox1.Text);
//Введите число уровней фактора:
int K = Convert. ToInt32(textBox4.Text);
//Введите математическое ожидание на первом уровне:
double M1 = Convert. ToDouble (textBox2.Text);
//Введите изменение математического ожидания:
double DM = Convert. ToDouble (textBox3.Text);
//Введите генеральное значение среднеквадратичного отклонения:
double SG= Convert. ToDouble (textBox5.Text);
richTextBox1.Text = «» ;
double[,] Matrix = new double[K, N];
for (int i = 0; i < K; i++)
{
for (int j = 0; j < N; j++)
{
Matrix[i, j] = NormRasp (M1 + i * DM, SG);
// label8. Text += Math. Round (Matrix[i, j], 3) + «t» ;
richTextBox1.Text += Math. Round (Matrix[i, j], 3) + «t» ;
}
//label8.Text += «n» ;
richTextBox1.Text += «n» ;
}
double[] M = new double[K];
for (int i = 0; i < K; i++)
{
M[i] = 0;
for (int j = 0; j < N; j++)
M[i] += Matrix[i, j];
M[i] /= (double)N;
}
double[] D = new double[K];
double MaxD = 0;
double SumD = 0;
for (int i = 0; i < K; i++)
{
D[i] = 0;
for (int j = 0; j < N; j++)
D[i] += (Matrix[i, j] - M[i]) * (Matrix[i, j] - M[i]);
D[i] = D[i] / (double)(N — 1);
if (D[i] > MaxD) MaxD = D[i];
SumD += D[i];
}
double g = MaxD / (SumD — MaxD);
label6.Text="Значение критерия Кохрана «+ Math. Round (g, 3) + «n» ;
double Mid = 0;
for (int i = 0; i < K; i++)
Mid += M[i];
Mid /= (double)K;
label6.Text += «Математическое ожидание «+ Math. Round (Mid, 3) + «n» ;
double Dy = 0;
for (int i = 0; i < K; i++)
for (int j = 0; j < N; j++)
Dy += (Matrix[i, j] - Mid) * (Matrix[i, j] - Mid);
Dy /= (double)K * N — 1;
label6.Text += «Общая выборочная дисперсия «+ Math. Round (Dy, 3) + «n» ;
double D0 = 0;
for (int i = 0; i < K; i++)
D0 += D[i];
D0 /= (double)K;
label6.Text += «Средняя дисперсия по уровням «+ Math. Round (D0,3) + «n» ;
double DA = 0;
for (int i = 0; i < K; i++)
DA += (M[i] - Mid) * (M[i] - Mid);
DA *= (double)N / (K — 1);
label6.Text += «Дисперсия фактора «+ Math. Round (DA, 3) + «n» ;
double F = DA / D0;
label6.Text += «Влияние фактора „+ Math. Round (DA, 3) +“ n» ;
double p = Convert. ToDouble (comboBox1.Text.ToString ());
double u = Math. Abs (InverseNormalCDF (p));//квинтиль нормального распределения
double uq = Math. Pow (u, 2);//квадрат квинтиля
double L = (uq — 3) / 6;
double H = 2.0 * (K — 2) * (K * (N — 1) — 1) / (K * N — 2);
double W = u * Math. Sqrt (H + L) / H — (1.0 / (K — 2) — 1.0 / (K * (N — 1) — 1)) * (L + 5.0 / 6 — 2.0 / 3 / H);
double Fkr = Math. Exp (W * 2);
label6.Text += «Критическое значение «+ Math. Round (Fkr, 3) + «n» ;
label6.Text +="Влияние фактора «;
if (F < Fkr) label6. Text += «Несущественноn» ;
else label6. Text += «Cущественноn» ;
}
}
}
4. Пример
Вывод
выборка распределение дисперсионный однофакторный Была разработана программа, генерирующая значения случайных величин, имеющих нормальный закон распределения. С помощью ее удалось реализовать и провести однофакторный дисперсионный анализ выборок.