Автор работы: Пользователь скрыл имя, 09 Июня 2013 в 12:14, курсовая работа
Теория вероятностей является одним из классических разделов математики. Вероятностные и статистические методы в настоящее время глубоко проникли в приложения. Они используются в физике, технике, экономке, биологии и медицине. Особенно возросла их роль в связи с развитием вычислительной техники.
Введение…………………………………………………………………..5
1.Обработка одномерной случайной выборки…………………………..6
1.1. Нахождение точечных оценок для не сгруппированной выборки…………………………………………………………………….6
1.2. Нахождение точечных оценок для сгруппированной выборки…………………………………………………………………....7
1.3. Построения гистограммы функций распределения……………............................................................................9
1.4. Расчёт критерия Пирсона…………………………………...15
1.5. Расчёт критерия Колмогорова……………………………...17
2. Обработка двумерной случайной выборки………………………….17
2.1. Построение поля рассеивания, гипотеза о виде корреляционной зависимости……………………………………….…18
2.2. Построение корреляционной таблицы……………………..22
2.3.Расчёт коэффициентов уравнения прямой регрессии……….23
2.4. Нахождение выборочного коэффициента корреляции….….25
2.5.Расчёт коэффициентов уравнения криволинейной регрессии…………………………………………………………………27
2.6. Нахождение корреляционного отношения…………………28
2.7.Расчёт критерия Фишера……………………………………...29
Заключение……………………………………………………………….31
Литература………………………………………………………………..
Статистика теста для
где ϭ2- выборочная дисперсия.
Если статистика больше критического, то дисперсии не одинаковы, в противном случае дисперсии выборок одинаковы.
Все значения, рассчитанные в данном разделе:
Линейное уравнение прямой регрессии: y=1,94-0,00267*x
Коэффициент корреляции: 0,151
Корреляционное отношение: 2,5
Критерий Фишера: 1,41
Также вся информация о двумерной выборке приведена на рисунке 2.7. Обработка двумерной выборки.
Заключение.
В данной курсовой работе была смоделирована и решена задача по обработке одномерной и двумерной случайной выборки при помощи вычислительной техники в приложении Microsoft Visual Studio на языке программирования C#. Результаты машинних экспериментов были наглядно проиллюстрированы графиками различных распределений для одномерной выборки и корреляционным полем для двумерной.
Компьютерная техника
Литература.
ПРИЛОЖЕНИЯ
Приложение А
Программный код.
Form1.
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 kurs
{
public partial class Form1 : Form
{
public Form1()
{
InitializeComponent();
Text = "= Теория Вероятности =";
MenuStrip Menu = new MenuStrip();
ToolStripMenuItem p1 = new ToolStripMenuItem("Одномерная"
Menu.Items.Add(p1);
ToolStripMenuItem x = new ToolStripMenuItem("Выборка x");
p1.DropDownItems.Add(x);
ToolStripMenuItem y = new ToolStripMenuItem("Выборка y");
p1.DropDownItems.Add(y);
ToolStripMenuItem p2 = new ToolStripMenuItem("Двумерная")
Menu.Items.Add(p2);
ToolStripMenuItem p3 = new ToolStripMenuItem("Выход :)");
Menu.Items.Add(p3);
x.Click += X;
y.Click += Y;
p2.Click += D;
p3.Click += Close;
Controls.Add(Menu);
MainMenuStrip = Menu;
}
private void Form1_Load(object sender, EventArgs e)
{
}
void X(object who, EventArgs e)
{
Form2 f = new Form2("X.txt");
f.Show();
}
void Y(object who, EventArgs e)
{
Form2 f = new Form2("Y.txt");
f.Show();
}
void D(object who, EventArgs e)
{
Form6 f = new Form6();
f.Show();
}
void Close(object who, EventArgs e)
{
DialogResult result = MessageBox.Show("Вы хотите выйти?", "Выход :)", MessageBoxButtons.YesNo);
if (result == DialogResult.Yes) Application.Exit();
}
public int s { get; set; }
}
}
Form2.
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;
using System.IO;
namespace kurs
{
public partial class Form2 : Form
{
int kol;
int k;
double h;
double xmax,xmin;
string name;
double[] pogr = new double[5];
double[] Et = new double[5];
double[] Pr = new double[5];
double[] prak;
double[] y;
double[] Em;
double[] zn;
double[] Points;
public void proverka()
{
if (xmin < 0 || xmin > 0) linkLabel3.Enabled = linkLabel5.Enabled = linkLabel6.Enabled = linkLabel7.Enabled = linkLabel8.Enabled=false;
if (xmin > 0 && xmax<1||xmin==0 || xmax==1) linkLabel1.Enabled = linkLabel2.Enabled = linkLabel4.Enabled = linkLabel8.Enabled = false;
}
void file(string s) { name = s; }
public Form2(string s)
{
InitializeComponent();
Text = "Одномерная выборка";
file(s);
}
private void Form2_Load(object sender, EventArgs e)
{
string[] lines = File.ReadAllLines(name);
int i;
double[] X = new double[lines.Length];
kol = X.Length;
label1.Text = "Выборка: " + X.Length;
for (i = 0; i < kol; i++)
{
X[i] = Convert.ToDouble(lines[i]);
}
k = Convert.ToInt32(1 + 3.32 * Math.Log10(Convert.ToDouble(
prak = new double[k];
Em = new double[k];
y = new double[k];
zn = new double[k];
Points = new double[k+1];
double t = xmin;
double K = k;
unsort(ref X);
sort(ref X);
for (i = 0; i < Points.Length; i++)
{
Points[i] = t;
t += h;
}
for (i = 1, zn[0] = xmin; i < k; i++)
zn[i] = zn[i - 1] + h;
for (i = 0; i < 5; i++)
pogr[i] = Math.Abs(Et[i] - Pr[i]);
K = 0;
for (i = 0; i < k; i++)
{
y[i] = prak[i] / h;
Em[i] = K;
K += prak[i];
}
chart1.Series[0].Points.
chart2.Series[0].Points.
proverka();
}
private void button1_Click(object sender, EventArgs e)
{
Form5 f = new Form5();
f.Show();
f.Table(Et, Pr, pogr);
}
public delegate double F(double x, double m, double sko);
public double square (double a, double b, double m, double sko, F f)
{
double hh = b - a, S1, S2, x;
S2 = f(a, m, sko) * hh;
do
{
hh = hh / 2;
S1 = S2;
S2 = 0;
x = a;
while (x < b - hh / 2)
{
S2 += f(x, m, sko);
x += hh;
}
S2 *= hh;
}
while (Math.Abs(S2 - S1) > 0.0001);
return S2;
}
public void krit(double m, double sko, F f)
{
double pr = 0, kl = 0;
double [] Y = new double[k];
double [] teor = new double [k];
double[] R = new double[k];
double P = 0;
int i;
for (i = 0; i < k; i++)
{
Y[i] = square(Points[i], Points[i + 1], m, sko, f);
pr += Math.Pow((prak[i] - Y[i]), 2) / Y[i];
teor[i] = P;
R[i] = Math.Abs(teor[i] - Em[i]);
P += Y[i];
Y[i] = Y[i] / h;
}
pr *= kol;
Array.Sort(R);
kl = R[R.Length - 1] / Math.Sqrt(Em[Em.Length - 1]);
label6.Text = "Критерий Пирсона: " + pr;
label7.Text = "Критерий Колмагорова: " + kl;
chart1.Series[1].Points.
chart2.Series[1].Points.
}
public void clear()
{
for (int i=1; i <= 8; i++)
chart1.Series[i].Points.Clear(
}
public double f1(double x, double m, double sko)
{
return (1 / (sko * (Math.Sqrt(2 * Math.PI)))) * Math.Exp(-((Math.Pow(x - m, 2) / (2 * Math.Pow(sko / 1, 2)))));
}
public double f3(double x, double m, double sko)
{
return Math.Sqrt(1 / Math.Pow(sko, 2)) * Math.Exp(-Math.Sqrt(1 / Math.Pow(sko, 2)) * x);
}
public double f4(double x, double l, double c)
{
return (l / 2) * Math.Exp(-l * Math.Abs(x - c));
}
public double f5(double x, double l, double c)
{
return c * l * Math.Pow(x, l - 1) * Math.Exp(-c * Math.Pow(x, l));
}
public double f6(double x, double m, double sko)
{
return (x / Math.Pow(sko, 2)) * (Math.Exp(-Math.Pow(x, 2) / (2 * Math.Pow(sko, 2))));
}
public double f7(double x, double m, double sko)
{
return 1 / (xmax - xmin); ;
}
public double f8(double x, double m, double sko)
{
return xmax / (1 - xmin);
}
private void linkLabel1_LinkClicked(object sender, LinkLabelLinkClickedEventArgs e)
{
krit(Et[0], Et[2], f1);
}
private void linkLabel2_LinkClicked(object sender, LinkLabelLinkClickedEventArgs e)
{
krit(0, 1, f1);
}
private
void linkLabel3_LinkClicked_1(
{
krit(Et[0], Et[2], f3);
}
private
void linkLabel4_LinkClicked_1(
{
krit(1, 1, f4);
}
private
void linkLabel5_LinkClicked_1(
{
krit(1, 1, f5);
}
private
void linkLabel6_LinkClicked_1(
{
krit(Et[0], Et[2], f6);
}
private
void linkLabel7_LinkClicked_1(
{
krit(Et[0], Et[2], f7);
}
private
void linkLabel8_LinkClicked_1(
{
krit(Et[0], Et[2], f8);
}
void unsort(ref double [] X)
{
int i;
double M = 0, D = 0, SKO = 0, A = 0, E = 0;
for (i = 0; i < kol; i++)
M += X[i];
M = M / (double)kol;
for (i = 0; i < kol; i++)
{
D += Math.Pow((X[i] - M), 2);
A += Math.Pow((X[i] - M), 3);
E += Math.Pow((X[i] - M), 4);
}
D = D / (kol - 1);
SKO = Math.Sqrt(D);
A = A / kol / Math.Pow(SKO, 3);
E = E / kol / Math.Pow(SKO, 4) - 3;
Et[0] = M; Et[1] = D; Et[2] = SKO; Et[3] = A; Et[4] = E;
}
void sort(ref double [] X)
{
int i,j;
double M_=0,D_=0,SKO=0,t,H,A_=0,E_=0;
for(i=0;i<kol-1;i++)
for(j=0;j<kol-1;j++)
if(X[j+1]>X[j])
{
t=X[j];
X[j]=X[j+1];
X[j+1]=t;
}
double [] KOL=new double [k];
double [] M=new double [k];
double [] D=new double [k];
double [] A=new double [k];
double [] E=new double [k];
for(i=0,xmin=X[0],xmax=X[0];i<
{
if(xmin>X[i])
xmin=X[i];
if(xmax<X[i])
xmax=X[i];
}
h=(xmax-xmin)/(double)k;
label2.Text = "Величина: " + h;
label3.Text = "Диапазон: xmin = " + xmin + " xmax = " + xmax;
label4.Text = "Количество интервалов: " + k;
for(i=0,H=xmin;i<k;i++,H+=h)
for(j=0;j<kol;j++)
if(X[j]>=H&&X[j]<=H+h)
KOL[i]++;
label5.Text = "Интервалы: ";
for (i = 0; i < k; i++)
label5.Text += (i + 1) + ") - " + KOL[i] + "; ";
for(i=0,H=xmin;i<k;i++,H+=h)
M_+=M[i]=(H+H+h)/2*KOL[i]/(
for (i = 0, H = xmin; i < k; i++, H += h)
{
D_+=D[i]=Math.Pow(((H+H+h)/2-
A_+=A[i]=Math.Pow(((H+H+h)/2-
E_+=E[i]=Math.Pow(((H+H+h)/2-
SKO=Math.Sqrt(D[i]);
prak[i]=KOL[i]/(double)kol;
}
Pr[0]=M_;
Pr[1]=D_;
Pr[2]=SKO=Math.Sqrt(D_);
Pr[3]=A_=A_/Math.Pow(SKO,3);
Pr[4]=E_=E_/Math.Pow(SKO,4)-3;
}
}
}
Form4.
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;
using System.IO;
using System.Windows.Forms.
namespace kurs
{
public partial class Form4 : Form
{
public Form4()
{
InitializeComponent();
Text = "Корреляционное поле";
}
private void Form4_Load(object sender, EventArgs e)
{
string [] vib = File.ReadAllLines("X.txt");
string[] vib2 = File.ReadAllLines("Y.txt");
int kol = vib.Length,i;
double[] X = new double[kol];
double[] Y = new double[kol];
for (i = 0; i < kol; i++)
{
X[i] = Convert.ToDouble(vib[i]);
Y[i] = Convert.ToDouble(vib2[i]);
}
for (i = 0; i < kol; i++)
{
chart1.Series[0].Points.AddXY(
}
}
private void chart1_Click(object sender, EventArgs e)
{
}
}
}
Form5.
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 kurs
{
public partial class Form5 : Form
{
public Form5()
{
InitializeComponent();
Text = "Таблица точечных оценок";
}
private void Form5_Load(object sender, EventArgs e)
{
}
public void Table(double[] Et, double[] Pr, double[] pogr)
{
dataGridView1.
DataGridViewRow row = new DataGridViewRow();
DataGridViewCell Cell0 = new DataGridViewTextBoxCell(); Cell0.Value = "Негруппированная";
DataGridViewCell Cell1 = new DataGridViewTextBoxCell(); Cell1.Value = Convert.ToString(Et[0]);
DataGridViewCell Cell2 = new DataGridViewTextBoxCell(); Cell2.Value = Convert.ToString(Et[1]);
DataGridViewCell Cell3 = new DataGridViewTextBoxCell(); Cell3.Value = Convert.ToString(Et[2]);
DataGridViewCell Cell4 = new DataGridViewTextBoxCell(); Cell4.Value = Convert.ToString(Et[3]);
DataGridViewCell Cell5 = new DataGridViewTextBoxCell(); Cell5.Value = Convert.ToString(Et[4]);