ΠŸΠΎΠΌΠΎΡ‰ΡŒ Π² написании студСнчСских Ρ€Π°Π±ΠΎΡ‚
АнтистрСссовый сСрвис

Π›ΠΈΠ½Π΅ΠΉΠ½Ρ‹ΠΉ рСгрСссионный Π°Π½Π°Π»ΠΈΠ·

Лабораторная Ρ€Π°Π±ΠΎΡ‚Π°ΠŸΠΎΠΌΠΎΡ‰ΡŒ Π² Π½Π°ΠΏΠΈΡΠ°Π½ΠΈΠΈΠ£Π·Π½Π°Ρ‚ΡŒ ΡΡ‚ΠΎΠΈΠΌΠΎΡΡ‚ΡŒΠΌΠΎΠ΅ΠΉ Ρ€Π°Π±ΠΎΡ‚Ρ‹

Float minY1 = max — (float) (MY — deltaM + (Betta — deltaB) * (i / SizeX — MX) — min); Gr. FillRectangle (Brushes. Green, (float) MX * SizeX, (max + min — (float) MY) * SizeY, 3, 3); Float minY2 = max — (float) (MY — deltaM + (Betta + deltaB) * (i / SizeX — MX) — min); Float maxY1 = max — (float) (MY + deltaM + (Betta — deltaB) * (i / SizeX — MX) — min); ΠŸΠΎΠ»ΡƒΡ‡Π΅Π½Π½Ρ‹ΠΉ Ρ€Π΅Π·ΡƒΠ»ΡŒΡ‚Π°Ρ‚ Π²Ρ‹Π²ΠΎΠ΄ΠΈΠΌ Π½Π° ΡΠΊΡ€Π°Π½… Π§ΠΈΡ‚Π°Ρ‚ΡŒ Π΅Ρ‰Ρ‘ >

Π›ΠΈΠ½Π΅ΠΉΠ½Ρ‹ΠΉ рСгрСссионный Π°Π½Π°Π»ΠΈΠ· (Ρ€Π΅Ρ„Π΅Ρ€Π°Ρ‚, курсовая, Π΄ΠΈΠΏΠ»ΠΎΠΌ, ΠΊΠΎΠ½Ρ‚Ρ€ΠΎΠ»ΡŒΠ½Π°Ρ)

Π›ΠΈΠ½Π΅ΠΉΠ½Ρ‹ΠΉ рСгрСссионный Π°Π½Π°Π»ΠΈΠ·

1. Алгоритм Ρ€Π΅ΡˆΠ΅Π½ΠΈΡ

Π‘Π½Π°Ρ‡Π°Π»Π° Π³Π΅Π½Π΅Ρ€ΠΈΡ€ΡƒΡŽΡ‚ΡΡ К Π²Ρ‹Π±ΠΎΡ€ΠΎΠΊ ΠΈΠ· N ΡΠ»Π΅ΠΌΠ΅Π½Ρ‚ΠΎΠ². Π—Π°Ρ‚Π΅ΠΌ для ΠΊΠ°ΠΆΠ΄ΠΎΠΉ Π²Ρ‹Π±ΠΎΡ€ΠΊΠΈ опрСдСляСтся матСматичСскоС ΠΎΠΆΠΈΠ΄Π°Π½ΠΈΠ΅ ΠΈ Π΄ΠΈΡΠΏΠ΅Ρ€ΡΠΈΡ. Π˜ΡΡ…ΠΎΠ΄Ρ ΠΈΠ· ΠΏΠΎΠ»ΡƒΡ‡Π΅Π½Π½Ρ‹Ρ… Π΄Π°Π½Π½Ρ‹Ρ…, Π²Ρ‹Ρ‡ΠΈΡΠ»ΡΡŽΡ‚ΡΡ ΠΏΠ°Ρ€Π°ΠΌΠ΅Ρ‚Ρ€Ρ‹ уравнСния Π»ΠΈΠ½Π΅ΠΉΠ½ΠΎΠΉ рСгрСссии. Для этих ΠΏΠ°Ρ€Π°ΠΌΠ΅Ρ‚Ρ€ΠΎΠ² опрСдСляСтся ΠΌΠ°Ρ‚. ΠΎΠΆΠΈΠ΄Π°Π½ΠΈΠ΅, ΠΎΡ‚ΠΊΠ»ΠΎΠ½Π΅Π½ΠΈΠ΅ ΠΈ Π΄ΠΎΠ²Π΅Ρ€ΠΈΡ‚Π΅Π»ΡŒΠ½Ρ‹ΠΉ ΠΈΠ½Ρ‚Π΅Ρ€Π²Π°Π». ΠžΠΏΡ€Π΅Π΄Π΅Π»ΡΠ΅Ρ‚ΡΡ ΠΊΡ€ΠΈΡ‚Π΅Ρ€ΠΈΠΉ Π€ΠΈΡˆΠ΅Ρ€Π°, ΠΈ Π΅Π³ΠΎ Π·Π½Π°Ρ‡Π΅Π½ΠΈΠ΅ сравниваСтся с ΠΊΡ€ΠΈΡ‚ичСским. Если ΠΏΠΎΠ»ΡƒΡ‡Π΅Π½Π½ΠΎΠ΅ Π·Π½Π°Ρ‡Π΅Π½ΠΈΠ΅ мСньшС критичСского, Ρ‚ΠΎ Π»ΠΈΠ½Π΅ΠΉΠ½Π°Ρ модСль Π°Π΄Π΅ΠΊΠ²Π°Ρ‚Π½Π° ΠΏΠΎΠ»ΡƒΡ‡Π΅Π½Π½Ρ‹ΠΌ Π΄Π°Π½Π½Ρ‹ΠΌ.

ΠŸΠΎΠ»ΡƒΡ‡Π΅Π½Π½Ρ‹ΠΉ Ρ€Π΅Π·ΡƒΠ»ΡŒΡ‚Π°Ρ‚ Π²Ρ‹Π²ΠΎΠ΄ΠΈΠΌ Π½Π° ΡΠΊΡ€Π°Π½ Π’Π°Π±Π»ΠΈΡ†Π° ΠΈΠΌΠ΅Π½

K

Число Π²Ρ‹Π±ΠΎΡ€ΠΎΠΊ

N

ОбъСм Π²Ρ‹Π±ΠΎΡ€ΠΎΠΊ

M1

ΠœΠ°Ρ‚. ΠΎΠΆΠΈΠ΄Π°Π½ΠΈΠ΅ ΠΏΠ΅Ρ€Π²ΠΎΠΉ Π²Ρ‹Π±ΠΎΡ€ΠΊΠΈ

DM

Π¨Π°Π³ ΠΌΠ°Ρ‚. ОТидания

S

Π“Π΅Π½Π΅Ρ€Π°Π»ΡŒΠ½Π°Ρ диспСрсия

Matrix

Массив Π²Ρ‹Π±ΠΎΡ€ΠΎΠΊ

Mid

БрСдняя диспСрсия Π²Ρ‹Π±ΠΎΡ€ΠΎΠΊ

SG

ДиспСрсия ΠΊΠ°ΠΆΠ΄ΠΎΠΉ Π²Ρ‹Π±ΠΎΡ€ΠΊΠΈ

Betta

ΠŸΠ°Ρ€Π°ΠΌΠ΅Ρ‚Ρ€Ρ‹ уравнСния рСгрСссии

Alpha

Dos

Π Π΅Π·ΡƒΠ»ΡŒΡ‚ΠΈΡ€ΡƒΡŽΡ‰ΠΈΠ΅ ΠΏΠ΅Ρ€Π΅ΠΌΠ΅Π½Π½Ρ‹Π΅

MX

MY

DX

DY

SX

SY

Da

Dm

Sa

Sm

D0

S0

r

u

ΠšΠ²Π°Π½Ρ‚ΠΈΠ»ΡŒ Π½ΠΎΡ€ΠΌΠ°Π»ΡŒΠ½ΠΎΠ³ΠΎ распрСдСлСния

v

Число стСпСнСй свобода

tm

ΠšΠ²Π°Π½Ρ‚ΠΈΠ»ΡŒ Π‘Ρ‚ΡŒΡŽΠ΄Π΅Π½Ρ‚Π° для Alpha

tb

ΠšΠ²Π°Π½Ρ‚ΠΈΠ»ΡŒ Π‘Ρ‚ΡŒΡŽΠ΄Π΅Π½Ρ‚Π° для Betta

deltaM

ΠŸΠΎΠ³Ρ€Π΅ΡˆΠ½ΠΎΡΡ‚ΡŒ Alpha

deltaB

ΠŸΠΎΠ³Ρ€Π΅ΡˆΠ½ΠΎΡΡ‚ΡŒ Beta

F

Π—Π½Π°Ρ‡Π΅Π½ΠΈΠ΅ критСрия Π€ΠΈΡˆΠ΅Ρ€Π°

Fkr

ΠšΡ€ΠΈΡ‚ΠΈΡ‡Π΅ΡΠΊΠΎΠ΅ Π·Π½Π°Ρ‡Π΅Π½ΠΈΠ΅ критСрия Π€ΠΈΡˆΠ΅Ρ€Π°

min

МинимальноС Π·Π½Π°Ρ‡Π΅Π½ΠΈΠ΅ Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΈ

max

МаксимальноС Π·Π½Π°Ρ‡Π΅Π½ΠΈΠ΅ Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΈ

SizeX

ΠœΠ°ΡΡˆΡ‚Π°Π± Π³Ρ€Π°Ρ„ΠΈΠΊΠ° ΠΏΠΎ Π₯

SizeY

ΠœΠ°ΡΡˆΡ‚Π°Π± Π³Ρ€Π°Ρ„ΠΈΠΊΠ° ΠΏΠΎ Y

bmp

Π‘Π°ΠΌΠΎ ΠΈΠ·ΠΎΠ±Ρ€Π°ΠΆΠ΅Π½ΠΈΠ΅

gr

Π˜Π½ΡΡ‚Ρ€ΡƒΠΌΠ΅Π½Ρ‚ рисования

Result

Π‘Ρ‚Ρ€ΠΎΠΊΠ° с Ρ€Π΅Π·ΡƒΠ»ΡŒΡ‚Π°Ρ‚Π°ΠΌΠΈ

2. ВСкст ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΡ‹

using System;

using System. Collections. Generic;

using System. ComponentModel;

using System. Data;

using System. Drawing;

using System. Text;

using System. Windows. Forms;

namespace oed6

{

public partial class Form1: Form

{

public Form1 ()

{

InitializeComponent ();

}

Random R = new Random ();

double NormRasp (double M, double S)

{

double sum = 0;

for (int i = 0; i < 12; i++)

sum += R. NextDouble ();

return M + (sum — 6) * S;

}

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 K = Convert. ToInt32 (textBox1. Text);

int N = Convert. ToInt32 (textBox2. Text);

double M1 = Convert. ToDouble (textBox3. Text);

double DM = Convert. ToDouble (textBox4. Text);

double S = Convert. ToDouble (textBox5. Text);

List> Matrix = new List>();

for (int i = 0; i < K; i++)

{

Matrix. Add (new List ());

for (int j = 0; j < N; j++)

Matrix[i]. Add (NormRasp (M1 + DM * i, S));

}

List Mid = new List ();

for (int i = 0; i < K; i++)

{

double sum = 0;

for (int j = 0; j < N; j++)

sum += Matrix[i] [j];

Mid. Add (sum);

}

List SG = new List ();

for (int i = 0; i < K; i++)

{

double sum = 0;

for (int j = 0; j < N; j++)

sum += (Matrix[i] [j] - Mid[i]) * (Matrix[i] [j] - Mid[i]);

SG. Add (Math. Sqrt (sum / (N — 1)));

}

double B1 = 0, B2 = 0, B3 = 0, B4 = 0;

for (int i = 0; i < K; i++)

{

B1 += Mid[i] * i;

B2 += i;

B3 += Mid[i];

B4 += i * i;

}

double Betta = (K * B1 — B2 * B3) / (K * B4 — B2 * B2);

double Alpha = (B3 — Betta * B2) / K;

double Dos = 0;

for (int i = 0; i < K; i++)

Dos += (Mid[i] - Alpha — Betta * i) * (Mid[i] - Alpha — Betta * i);

Dos /= (K — 2);

double MX = 0, MY = 0;

for (int i = 0; i < K; i++)

{

MX += i + 1;

MY += Mid[i];

}

MX /= K;

MY /= K;

double DX = 0, DY = 0;

for (int i = 0; i < K; i++)

{

DX += (i — MX) * (i — MX);

DY += (Mid[i] - MY) * (Mid[i] - MY);

}

DX /= (K — 1);

DY /= (K — 1);

double SX = Math. Sqrt (DX);

double SY = Math. Sqrt (DY);

double Da = 0;

for (int i = 0; i < K; i++)

Da += (Mid[i] - MY) * (Mid[i] - MY);

Da /= K — 1;

double Dm = Da / K;

double Sa = Math. Sqrt (Da);

double Sm = Math. Sqrt (Dm);

double D0 = 0;

for (int i = 0; i < K; i++)

D0 += SG[i];

D0 /= K;

double S0 = Math. Sqrt (D0);

double r = 0;

for (int i = 0; i < K; i++)

r += (i — MX) * (Mid[i] - MY);

r /= (K — 1) * Sa * SX;

double p = Convert. ToDouble (comboBox1. Text. ToString ());

double u = Math. Abs (InverseNormalCDF (p)); // ΠΊΠ²ΠΈΠ½Ρ‚ΠΈΠ»ΡŒ Π½ΠΎΡ€ΠΌΠ°Π»ΡŒΠ½ΠΎΠ³ΠΎ распрСдСлСния

double uq = Math. Pow (u, 2); // ΠΊΠ²Π°Π΄Ρ€Π°Ρ‚ квинтиля

double q1 = (uq + 1) * u / 4;

double q2 = ((5 * uq + 16) * uq + 3) * u / 96;

double q3 = (((3 * uq+ 19) * uq + 17) * uq — 15) * u / 384;

double q4 = ((((79 * uq + 776) * uq + 1482) * uq — 1920) * uq — 945) * u / 92 160;

double v = K — 1;

double tm = u + q1 / v + q2 / v / v + q3 / v / v / v + q4 / v / v / v / v;

v = K — 2;

double tb = u + q1 / v + q2 / v / v + q3 / v / v / v + q4 / v / v / v / v;

double deltaM = tm * Sm;

double deltaB = tb * S0 * Math. Sqrt (1 — r) / SX / Math. Sqrt (K — 2);

double F = Dos / D0;

double L = (uq — 3) / 6;

double H = 2.0 * (K — 3) * (K * (N — 1) — 1) / (K * N — 4);

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);

float min = (float) (MY — deltaM — (Betta + deltaB) * MX);

float max = (float) (MY + 1 + (Betta + deltaB) * MX);

float SizeX = (float) pictureBox1. Width / K;

float SizeY = (float) pictureBox1. Height / (max — min);

Bitmap bmp = new Bitmap (pictureBox1. Width, pictureBox1. Height);

Graphics gr = Graphics. FromImage (bmp);

gr. Clear (Color. White);

float gg = 0;

for (int i = 0; i < pictureBox1. Width; i++)

{

float Y = max — (float) (MY + Betta * (i / SizeX — MX) — min);

float minY1 = max — (float) (MY — deltaM + (Betta — deltaB) * (i / SizeX — MX) — min);

float minY2 = max — (float) (MY — deltaM + (Betta + deltaB) * (i / SizeX — MX) — min);

float maxY1 = max — (float) (MY + deltaM + (Betta — deltaB) * (i / SizeX — MX) — min);

float maxY2 = max — (float) (MY + deltaM + (Betta + deltaB) * (i / SizeX — MX) — min);

float minY = minY1;

if (minY2 > minY1) minY = minY2;

float maxY = maxY1;

if (maxY2 < maxY1) maxY = maxY2;

if (i < pictureBox1. Width / 2) gg -= 0.1 °F;

else gg += 0.05 °F;

gr. DrawLine (Pens. LightSkyBlue, i, minY * SizeY+gg, i, maxY * SizeY-gg);

gr. DrawLine (Pens. Black, i, Y * SizeY, i, Y * SizeY + 1);

}

for (int i = 0; i < K; i++)

{

float Y = (float) (max + min — Mid[i]);

gr. FillRectangle (Brushes. Red, i * SizeX, Y * SizeY, 3, 3);

}

gr. FillRectangle (Brushes. Green, (float) MX * SizeX, (max + min — (float) MY) * SizeY, 3, 3);

// оси

for (int i = 1; i < K; i++)

{

gr. DrawLine (Pens. LightGray, i * SizeX, 0, i * SizeX, pictureBox1. Height);

gr. DrawString (Convert. ToString (i), Font, Brushes. Black, i * SizeX, 0);

}

for (int i = 1; i < 4; i++)

{

gr. DrawLine (Pens. LightGray, 0, i * SizeY * (max — min) / 4, pictureBox1. Width, i * SizeY * (max — min) / 4);

gr. DrawString (Convert. ToString (i * (max — min) / 4 + min), Font, Brushes. Black, 0, i * SizeY * (max — min) / 4);

}

pictureBox1. Image = bmp;

string Result = «Dosn =» + Dos. ToString () + «n» +

«MX =» + MX. ToString () + «n» +

«MY =» + MY. ToString () + «n» +

«DX =» + DX. ToString () + «n» +

«DY =» + DY. ToString () + «n» +

«SX =» + SX. ToString () + «n» +

«SY =» + SY. ToString () + «n» +

«Dm =» + Dm. ToString () + «n» +

«Sm =» + Sm. ToString () + «n» +

«D0 =» + D0. ToString () + «n» +

«s0 =» + S0. ToString () + «n» +

«R =» + r. ToString () + «n» +

«F =» + F. ToString () + «n» +

«FΠΊΡ€ =» + Fkr. ToString () + «n»;

if (F < Fkr) Result += «Π›ΠΈΠ½Π΅ΠΉΠ½Π°Ρ модСль Π°Π΄Π΅ΠΊΠ²Π°Ρ‚Π½Π°n Π½Π°Π±Π»ΡŽΠ΄Π°Π΅ΠΌΡ‹ΠΌ значСниям»;

else Result += «Π›ΠΈΠ½Π΅ΠΉΠ½Π°Ρ модСль Π½Π΅ Π°Π΄Π΅ΠΊΠ²Π°Ρ‚Π½Π°n Π½Π°Π±Π»ΡŽΠ΄Π°Π΅ΠΌΡ‹ΠΌ значСниям»;

label6. Text=Result;

}

}

}

Π’Ρ‹Π²ΠΎΠ΄

рСгрСссия ΡƒΡ€Π°Π²Π½Π΅Π½ΠΈΠ΅ ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΠ° Π³Ρ€Π°Ρ„ΠΈΠΊ Π‘Ρ‹Π»Π° Ρ€Π°Π·Ρ€Π°Π±ΠΎΡ‚Π°Π½Π° ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΠ°, Π³Π΅Π½Π΅Ρ€ΠΈΡ€ΡƒΡŽΡ‰Π°Ρ значСния случайных Π²Π΅Π»ΠΈΡ‡ΠΈΠ½, ΠΈΠΌΠ΅ΡŽΡ‰ΠΈΡ… Π½ΠΎΡ€ΠΌΠ°Π»ΡŒΠ½Ρ‹ΠΉ Π·Π°ΠΊΠΎΠ½ распрСдСлСния. Π‘ ΠΏΠΎΠΌΠΎΡ‰ΡŒΡŽ Π΅Π΅ ΡƒΠ΄Π°Π»ΠΎΡΡŒ ΠΎΠΏΡ€Π΅Π΄Π΅Π»ΠΈΡ‚ΡŒ ΠΏΠ°Ρ€Π°ΠΌΠ΅Ρ‚Ρ€Ρ‹ уравнСния рСгрСссии, ΠΏΠΎΡΡ‚Ρ€ΠΎΠΈΡ‚ΡŒ ΠΈ Π²Ρ‹Π²Π΅ΡΡ‚ΠΈ Π½Π° ΡΠΊΡ€Π°Π½ Π³Ρ€Π°Ρ„ΠΈΠΊ ΠΈ Π΄ΠΎΠ²Π΅Ρ€ΠΈΡ‚Π΅Π»ΡŒΠ½ΡƒΡŽ ΠΎΠ±Π»Π°ΡΡ‚ΡŒ этого уравнСния.

ΠŸΠΎΠΊΠ°Π·Π°Ρ‚ΡŒ вСсь тСкст
Π—Π°ΠΏΠΎΠ»Π½ΠΈΡ‚ΡŒ Ρ„ΠΎΡ€ΠΌΡƒ Ρ‚Π΅ΠΊΡƒΡ‰Π΅ΠΉ Ρ€Π°Π±ΠΎΡ‚ΠΎΠΉ