You are on page 1of 9

Міністерство освіти і науки, молоді та спорту України

Харківський національний університет радіоелектроніки


Кафедра програмної інженерії

Лабораторна робота №1
Описові статистики

Виконав студенти групи ПЗПІ-20-2:


Захаров Юрій

Харків 2021
Мета: Отримання студентами практичних навичок розрахунку описових
статистик: математичного сподівання, дисперсії, середньоквадратичного
відхилення.
Масив значень:
static double[] data = new double[50]
{ 1, 2, 3, 4, 5, 6, 9, 23, 9, 10, 2, 5, 1, 78, 4, 7, 23, 7, 234, 76, 3, 68, 3, 54, 7, 3, 7, 9,
2, 22, 10, 24, 73, 37, 34, 6, 9, 31, 9, 35, 78, 24, 7, 89, 45, 24, 234, 79, 34, 76 };
Описові статистики що обчислюються:
‒ вибіркове середнє значення;
‒ вибіркова дисперсія;
‒ стандартне відхилення;
‒ медіана;
‒ мода;
‒ максимальне і мінімальне значення;
‒ розмах;
‒ квантилі: 0.1, 0.25, 0.5, 0.75
Вибіркове середнє значення:
public static double VibMiddle (double[] arr)
{
double x = 0;
double sum = 0;
foreach(double elem in arr)
{
sum += elem; //сума усіх елементів
}
x = sum / arr.Length; //ділення суми елементів на їх кількість
return x;
}
Вибіркова дисперсія:
public static double VibDisper(double[] arr, double M)
{
double D = 0;
double sum = 0;
foreach (double elem in arr)
{
sum = sum + ((elem - M) * (elem - M)); //сума дисперсій елементів
вибірки
}
D = sum / (arr.Length - 1); //ділення суми дисперсій на кількість
елементів вибірки - 1
return D;
}
Стандартне відхилення:
public static double StandVidh(double[] arr, double M)
{
double V = 0;
double sum = 0;
foreach (double elem in arr)
{
sum = sum + ((M - elem) * (M - elem)); //сума квадратів відхилень
}
V = Math.Sqrt(sum / (arr.Length - 1)); //ділення суми квадратів
відхилень на кількість елементів вибірки - 1

return V;
}
Медіана:
public static double Medi(double[] arr)
{

Array.Sort(arr);
if (arr.Length % 2 == 0) //дія якщо кількість елементів парна
{
double l1 = arr[arr.Length / 2 ];
double l2 = arr[arr.Length / 2 - 1];

return (l1 + l2) / 2; // підрахування середнього значення між


елементами у центрі

}
else //дія якщо кількість елементів непарна
{

return arr[arr.Length / 2 - 1/2]; // знаходження елемента у центрі


}

Мода:
static double Mode(double[] arr)
{
Dictionary<double, int> dict = new Dictionary<double, int>();
foreach (double elem in arr)
{
if (dict.ContainsKey(elem))
dict[elem]++;
else
dict[elem] = 1;
}
int maxCount = 0;
double mode = 0;
List<double> m = new List<double>();
foreach (double elem in dict.Keys)
{
if (dict[elem] >= maxCount)
{
maxCount = dict[elem];
mode = elem;

}
}
foreach (double elem in dict.Keys)
{
if (dict[elem] == maxCount)
{
m.Add(elem);
}
}
Console.Write("Мода: ");
foreach (double elem in m)
{
Console.Write(elem + " , ");
}
Console.WriteLine();
}Мінімальне та максимальне значення:

public static double Min(double [] arr)


{
double[] arrt = arr;
Array.Sort(arrt); //сортування за зростанням
return arrt[0]; //беремо перший елемент
}

public static double Max(double[] arr)


{
double[] arrt = arr;
Array.Sort(arrt); //сортування за зростанням
return arrt[arrt.Length - 1]; //беремо останній елемент

Розмах:
public static double Roz(double[] arr)
{
Array.Sort(arr); //сортування за зростанням

return arr[arr.Length - 1] - arr[0]; //вираховуємо різницю між


максимальним та мінімальним значенням
}

Квантилі:
public static double Kvan(double[] arr, double k)

// Рассчитаем границы процентов

int lowBound = Convert.ToInt32(Math.Floor((double)k * 100 /


((double)100 / (arr.Length - 1))));

int highBound = Convert.ToInt32(Math.Ceiling((double)k * 100 /


((double)100 / (arr.Length - 1))));
if (lowBound == highBound)

int elemNo = highBound;

return arr[elemNo];

else

double step = arr[highBound] - arr[lowBound];

double dif = (double)100 / (arr.Length - 1);

step /= dif;

double raz = k * 100 - (lowBound * 100 / (arr.Length - 1));

return arr[lowBound] + raz * step;

Програма:
static void Main(string[] args)
{
var M = VibMiddle(data);
Console.WriteLine("Вибiркове середнє: " + M);

var D = VibDisper(data, M);


Console.WriteLine("Вибiркова дисперсiя: " + D);

var V = StandVidh(data, M);


Console.WriteLine("Стандартне вiдхилення: " + V);
var Med = Medi(data);
Console.WriteLine("Медiана: " + Med);

Mode(data);
var min = Min(data);
Console.WriteLine("Мiнiмальне значення: " + min);

var max = Max(data);


Console.WriteLine("Максимальне значення: " + max);

var roz = Roz(data);


Console.WriteLine("Розмах: " + roz);

Console.WriteLine(Kvan(data, 0.1));

Console.WriteLine(Kvan(data, 0.25));

Console.WriteLine(Kvan(data, 0.5));

Console.WriteLine(Kvan(data, 0.75));

Скріншот виконаної програми:


Висковки:
У даній лабораторній роботі було:
 пояснено призначення базових статистичних величин: математичного
сподівання, дисперсії, середньоквадратичного відхилення;
 наведено приклади розрахунку базових статистичних величин;
 запропоновано самостійні завдання, які дозволять закріпити
теоретичний матеріал щодо розрахунку базових статистичних величин.

You might also like