Індивідуальна робота на тему:
"Теорія імовірностей та математична статистика"
Теоретичні відомості:
Набір експерементальних даних будем позначатиx, …,x. Однорідний набір спостережень називається вибіркою з генеральної сукупності. Генеральна сукупність - універсальна множина значень(проявів) цього явища. Кількість елементів вибірки називають об'ємом вибірки. Вибіркові значення називають ще й статистичним розподілом, якщо їх спеціальним чином перетворити. З однієї генеральної сукупності можна отримати різні вибірки, тому вибірку називають статистичною змінною, які в свою чергу бувають: дискретними або наперервними.
Весь аналітичний процес можна поділити на побудову варіаційного ряду та табличне, графічне, аналітичне представлення цієї вибірки.
Варіаційним рядом вибірки x, …,x (1) називається сукупність всіх елементів вибірки розміщених у порядку неспадання величин їх значень.
Нехай x, … , x (2) - варіаційний ряд вибірки (1), тоді можна побудувати частотну таблицю (3):
X
y
…
y
V
n
…
n
де y - найменше значення варіаційного ряду (2),
n- кількість його повторень, і т.д.
Якщо випадкові змінні неперервні, то діапазон зміни
вибіркових значень x- x розбивається на r груп ,
де
z- середина першого інтервала.
z- середина r-того інтервала.
r вибирається з умови: 2
Нехай nпопадає на z, … , n попадає на z.
Тоді частотна таблиця набуде вигляду:
Z
z
…
z
V
n
…
n
Де n+ … + n=n
Найчастіше для графічного зображення вибірки використовують:
Графік (діаграма частот).
Полігон частот.
Гістрограма.
Нехай маєм частотну таблицю (3). Діаграмою частот називається сукупність вертикальних відрізків поставлених в точках y, … , y, з довжиною n, … , n.
Полігон частот, це ламана лінія, що зєднує точки з кординатами (x,n).
Гістрограма - сукупність прямокутників, центри основ яких лежать в точках z(якщо маєм вибірку з неперервної генеральної сукупності) і x(якщо маєм вибірку з дескретної генеральної сукупності).
Аналітично статистичні дані представляються як правило емпіричною функцією розподілу або певними статистиками. Нехай маєм частотну таблицю (3), то емпіричною функцією називається:
F= (6)
де к - кількість елементів вибірки, що неперевищують x.
Числові характеристики статистичного матеріалу поділяються на:
Статистики локації(центральної тенденції).
Розсіювання.
Числові характеристики форми.
Числові характеристики центральної тенденції.
Медіана - той елемент вибірки(якщо елементів непарна кількість) який поділяє вибірку по об'єму на дві рівні частини.Якщо елементів є парна кількість то медіана є проміжком.
Мода - той елемент частотної таблиці, який має найбільшу частоту, тобто найчастіше зустрічається у вибірці.
Середнє, якщо випадкові змінні дискретні і (3) - її частотна таблиця обчислюється за формулою: = або =.
Числові характеристики розсіювання.
Варіанса: S .
Середньоквадратичне відхилення: S=.
Варіація(мінливість): V= .
Розмахом: =x-x .
Приклад роботи програми:
Дискрентна вибірка 1,0,-1,2,3,2,3,-1,0,5,4. Результат:
Графіки:
Текст програми (Object Pascal Delphi 4 з застосуванням технології ActiveX):
unit main;
interface
uses
Windows, Messages, SysUtils, Classes, Graphics, Controls, Forms, Dialogs,
Grids, DBGrids, StdCtrls;
type
TForm1 = class(TForm)
StringGrid1: TStringGrid;
Button1: TButton;
Button2: TButton;
ComboBox3: TComboBox;
Label1: TLabel;
Edit1: TEdit;
procedure Button2Click(Sender: TObject);
procedure Button1Click(Sender: TObject);
private
{ Private declarations }
public
{ Public declarations }
end;
var
Form1: TForm1;n:integer; typ:boolean;
implementation
uses Unit2;
{$R *.DFM}
procedure TForm1.Button2Click(Sender: TObject);
begin
close;
end;
procedure TForm1.Button1Click(Sender: TObject);
var i:integer;
begin
i:=30;n:=30;
while (StringGrid1.Cells[i,0]='') do begin
n:=n-1;
i:=i-1;
end;
typ:=true;
if Combobox3.ItemIndex=1 then typ:=false;
Form1.Visible:=false;
Form2.Showmodal;
end;
end.
unit Unit2;
interface
uses
Windows, Messages, SysUtils, Classes, Graphics, Controls, Forms, Dialogs,
StdCtrls, Grids;
type
TForm2 = class(TForm)
StringGrid1: TStringGrid;
Button1: TButton;
Button2: TButton;
Edit1: TEdit;
Edit2: TEdit;
Edit3: TEdit;
Edit5: TEdit;
Label1: TLabel;
Button3: TButton;
Label2: TLabel;
Edit4: TEdit;
Label3: TLabel;
Edit6: TEdit;
Memo1: TMemo;
Label5: TLabel;
Label6: TLabel;
Label7: TLabel;
Edit8: TEdit;
Label8: TLabel;
Edit9: TEdit;
Label9: TLabel;
Edit10: TEdit;
Label10: TLabel;
Edit11: TEdit;
Label4: TLabel;
Edit7: TEdit;
Label11: TLabel;
Edit12: TEdit;
Label12: TLabel;
Edit13: TEdit;
Label13: TLabel;
Edit14: TEdit;
Label14: TLabel;
Edit15: TEdit;
procedure Button2Click(Sender: TObject);
procedure Button1Click(Sender: TObject);
procedure FormActivate(Sender: TObject);
procedure Button3Click(Sender: TObject);
private
{ Private declarations }
public
{ Public declarations }
end;
var
Form2: TForm2; xi,ni,wi:variant;m,r:integer;sx,s,ser:double;
implementation
uses main, Unit3;
{$R *.DFM}
procedure TForm2.Button2Click(Sender: TObject);
begin
halt;
end;
procedure TForm2.Button1Click(Sender: TObject);
begin
Form2.Close;
Form1.Visible:=true;
end;
procedure TForm2.FormActivate(Sender: TObject);
var sn,i,j,k:integer;p,w,v,t:variant;dx,tx:double;
s1,s2,s3:string;
begin
v := VarArrayCreate([0,n], varDouble);
p := VarArrayCreate([0,n], varDouble);
m:=0;
for i:=1 to n do begin
v[i]:=Form1.StringGrid1.Cells[i,0];
p[i]:=Form1.StringGrid1.Cells[i,0];
end;
{sorting}
k:=n;
while k<>0 do begin
for i:=n-1 downto 1 do
if v[i]>v[i+1] then begin
t:=v[i]; v[i]:=v[i+1]; v[i+1]:=t;
end;
k:=k-1;
end;
{об'єм вибірки}
xi:=n;
edit5.Text:=xi;
if typ=true then begin
w := VarArrayCreate([0,n], varDouble);
for i:=1 to n do
w[i]:=Form1.StringGrid1.Cells[i,0];
{об'єм ряду вибірки}
for i:=1 to n do
if w[i]<>-666 then begin
m:=m+1;
if i<>n then
for j:=i+1 to n do
if w[i]=w[j] then
w[j]:=-666;
end;
xi := VarArrayCreate([0,m], varDouble);
ni := VarArrayCreate([0,m], varInteger);
wi := VarArrayCreate([0,m], varDouble);
sn:=0;
sx:=0;
k:=0;
for i:=1 to n do
if v[i]<>-666 then begin
k:=k+1;
xi[k]:=v[i];
ni[k]:=1;
if i<>n then
for j:=i+1 to n do
if xi[k]=v[j] then begin
ni[k]:=ni[k]+1;
v[j]:=-666;
end;
end;
sn:=0;sx:=0;
for i:=1 to m do begin
sn:=sn+ni[i];
sx:=sx+xi[i];
end;
s:=sx/m;
for i:=1 to m do
wi[i]:=ni[i]/sn;
{moda}
t:=ni[1];
for i:=1 to m do
if t<=ni[i] then begin
t:=ni[i];
k:=i;
end;
Edit4.text:='{';
for i:=1 to m do
if t=ni[i] then begin
w:=xi[i];s1:=w;
Edit4.text:=Edit4.Text + s1;
if k<>i then Edit4.Text:=Edit4.Text + ','
else Edit4.Text:=Edit4.Text + '}';
end;
{mediana}
if m mod 2<>0 then begin
t:=(m+1)/2; t:=xi[t];
Edit6.Text:=t;
end
else begin
t:=m/2;k:=t;
t:=xi[k];
s1:=t;
t:=xi[k+1];
s2:=t;
Edit6.Text:='[' + s1 + ',' + s2 + ']';
end;
{Середнє}
ser:=0;
for i:=1 to n do
ser:=ser+p[i];
ser:=ser/n;
t:=ser; Edit15.Text:=t;
{Deviacia}
tx:=0;
for i:=1 to n do
tx:=tx+(p[i]-ser)*(p[i]-ser);
t:=tx;
Edit8.Text:=t;
{Variansa}
if n<>1 then sx:=tx/(n-1);t:=sx;
Edit9.Text:=t;
sx:=0;
{momenty}
for i:=1 to n do {1}
sx:=sx+p[i]-ser;
sx:=sx/n;
t:=sx;
Edit7.Text:=t;
tx:=tx/n;t:=tx; {2}
Edit12.Text:=t;
sx:=0;
for i:=1 to n do {3}
sx:=sx+(p[i]-ser)*(p[i]-ser)*(p[i]-ser);
sx:=sx/n;
t:=sx;
Edit13.Text:=t;
{Assymetrija}
if tx<>0 then sx:=sx/(sqrt(tx)*sqrt(tx)*sqrt(tx));
t:=sx;
Edit10.Text:=t;
sx:=0;
for i:=1 to n do {4}
sx:=sx+(p[i]-ser)*(p[i]-ser)*(p[i]-ser)*(p[i]-ser);
sx:=sx/n;
t:=sx;
Edit14.Text:=t;
{Eksces}
if tx<>0 then sx:=sx/(tx*tx)-3;
t:=tx;
Edit11.Text:=t;
{rozpodil function}
s2:=xi[1]; sx:=0;
Memo1.lines[0]:='0, x<' + s2;
for i:=1 to m-1 do begin
sx:=sx+wi[i];
t:=sx;
s1:=t;
s2:=xi[i];
s3:=xi[i+1];
Memo1.lines[i]:=s1 + ', ' + s2 + '=<x<' + s3;
end;
s2:=xi[m];
Memo1.lines[m]:='1, x>=' + s2;
for i:=1 to m do begin
Form2.StringGrid1.Cells[i,0]:=xi[i];
Form2.StringGrid1.Cells[i,1]:=ni[i];
Form2.StringGrid1.Cells[i,2]:=wi[i];
end;
end
else begin
sx:=v[n]-v[1];
i:=1;
r:=1;
while i<n do begin
i:=2*i;
r:=r+1;
end;
sx:=sx/(r-1)-0.2;
xi := VarArrayCreate([0,r-1], varDouble);
ni := VarArrayCreate([0,r-1], varInteger);
wi := VarArrayCreate([0,r-1], varDouble);
w := VarArrayCreate([0,r-1], varVariant);
xi[1]:=v[1]-0.2; s1:=xi[1];s2:=v[1]+sx;
Form2.StringGrid1.Cells[1,0]:='[' + s1 + ';' + s2 + ')';
xi[r-1]:=v[n]-sx; s1:=xi[r-1];
s2:=v[n]+0.2;
Form2.StringGrid1.Cells[r-1,0]:='[' + s1 + ';' + s2 + ']';
for i:=2 to r-2 do begin
xi[i]:=xi[i-1]+sx; s1:=xi[i]; s2:=xi[i]+sx;
Form2.StringGrid1.Cells[i,0]:='[' + s1 + ';' + s2 + ']';
end;
i:=1;j:=1;
while i<n do begin
if v[i]<xi[j]+sx then begin
ni[j]:=ni[j]+1;
i:=i+1;
end
else if j<=r-1 then j:=j+1;
end;
ni[r-1]:=ni[r-1]+1;
sn:=0;
for i:=1 to r-1 do begin
sn:=sn+ni[i];
Form2.StringGrid1.Cells[i,1]:= ni[i];
end;
for i:=1 to r-1 do begin
w[i]:=Form2.StringGrid1.Cells[i,0];
wi[i]:=ni[i]/sn;
Form2.StringGrid1.Cells[i,2]:= wi[i];
end;
{moda}
t:=ni[1];
for i:=1 to r-1 do
if t<=ni[i] then begin
t:=ni[i];
k:=i;
end;
Edit4.text:='{';
for i:=1 to r-1 do
if t=ni[i] then begin
s1:=xi[i]+sx/2;
Edit4.text:=Edit4.Text + s1;
if k<>i then Edit4.Text:=Edit4.Text + ','
else Edit4.Text:=Edit4.Text + '}';
end;
{mediana}
if r-1 mod 2<>0 then begin
t:=r/2; s1:=w[t];
Edit6.Text:=s1;
end
else begin
t:=(r-1)/2;
s1:=xi[t+1]+sx-sx/2;
s2:=xi[t+1]+sx+sx/2;
Edit6.Text:='[' + s1 + ';' + s2 + ']';
end;
{rozpodil function}
s2:=xi[1]; w[1]:=0;
Memo1.lines[0]:='0, x<' + s2;
for i:=1 to r-1 do begin
w[1]:=w[1]+wi[i];
t:=w[1];
s1:=t;
s2:=xi[i];
s3:=xi[i]+sx;
Memo1.lines[i]:=s1 + ', ' + s2 + '=<x<' + s3;
end;
s2:=xi[r-1];
Memo1.lines[r]:='1, x>=' + s2;
{serednie}
tx:=0;
for i:=1 to n do
tx:=tx+p[i];
ser:=tx/n;t:=ser;
Edit15.text:=t;
{Deviacia}
tx:=0;
for i:=1 to n do
tx:=tx+(p[i]-ser)*(p[i]-ser);
t:=tx;
Edit8.Text:=t;
{Variansa}
if n<>1 then dx:=tx/(n-1);t:=dx;
Edit9.Text:=t;
{momenty}
for i:=1 to n do {1}
dx:=dx+p[i]-ser;
dx:=dx/n;
t:=dx;
Edit7.Text:=t;
tx:=tx/n;t:=tx; {2}
Edit12.Text:=t;
dx:=0;
for i:=1 to n do {3}
dx:=dx+(p[i]-ser)*(p[i]-ser)*(p[i]-ser);
dx:=dx/n;
t:=dx;
Edit13.Text:=t;
{Assymetrija}
if tx<>0 then dx:=dx/(sqrt(tx)*sqrt(tx)*sqrt(tx));
t:=dx;
Edit10.Text:=t;
dx:=0;
for i:=1 to n do {4}
dx:=dx+(p[i]-ser)*(p[i]-ser)*(p[i]-ser)*(p[i]-ser);
dx:=dx/n;
t:=dx;
Edit14.Text:=t;
{Eksces}
dx:=dx/(tx*tx)-3;
t:=tx;
Edit11.Text:=t;
s:=ser;
end;
end;
procedure TForm2.Button3Click(Sender: TObject);
begin
Form3.ShowModal;
end;
end.
unit Unit3;
interface
uses main, unit2,
Windows, Messages, SysUtils, Classes, Graphics, Controls, Forms, Dialogs,
OleCtrls, graphsv3;
type
TForm3 = class(TForm)
Graph1: TGraph;
Graph2: TGraph;
Graph3: TGraph;
Graph4: TGraph;
procedure FormActivate(Sender: TObject);
private
{ Private declarations }
public
{ Public declarations }
end;
var
Form3: TForm3;
implementation
{$R *.DFM}
procedure TForm3.FormActivate(Sender: TObject);
var i,j:integer;dx:double;nxi,fi:variant;
begin
dx:=sx;
sx:=0;
if typ=true then begin
Graph1.RandomData:=0;
Graph1.GraphTitle:='Гістограма';
Graph1.GraphType:=3;
Graph1.NumPoints:=m;
for i:=1 to m do begin
Graph1.Data[i]:=ni[i];
Graph1.XPosData:=xi[i];
end;
Graph2.RandomData:=0;
Graph2.GraphTitle:='Полігон';
Graph2.GraphType:=6;
Graph2.NumPoints:=m;
for i:=1 to m do begin
Graph2.Data[i]:=ni[i];
Graph2.XPosData:=xi[i];
end;
Graph3.RandomData:=0;
Graph3.GraphTitle:='Діаграма';
Graph3.GraphType:=6;
Graph3.GraphStyle:=2;
Graph3.NumPoints:=m;
for i:=1 to m do begin
Graph3.XPosData:=xi[i];
Graph3.Data[i]:=ni[i];
end;
Graph4.RandomData:=0;
Graph4.GraphTitle:='Функція розподілу';
Graph4.GraphType:=6;
Graph4.NumPoints:=2*m+2;
fi := VarArrayCreate([0,2*m+2], varDouble);
nxi := VarArrayCreate([0,2*m+2], varDouble);
for i:=1 to m do begin
sx:=wi[i]+sx;
fi[2*i]:=sx-wi[i];
fi[2*i+1]:=sx;
nxi[2*i]:=xi[i];
nxi[2*i+1]:=xi[i];
end;
fi[2*m+2]:=1;
nxi[1]:=xi[1]-s;
nxi[2*m+2]:=xi[m]+s;
j:=0;
for i:=1 to 2*m+2 do begin
Graph4.Data[i]:=fi[i];
Graph4.XPosData:=nxi[i];
end;
end
else begin
Graph1.RandomData:=0;
Graph1.GraphTitle:='Гістограма';
Graph1.GraphType:=3;
Graph1.NumPoints:=r-1;
for i:=1 to r-1 do begin
Graph1.Data[i]:=ni[i];
Graph1.XPosData:=xi[i];
end;
Graph2.RandomData:=0;
Graph2.GraphTitle:='Полігон';
Graph2.GraphType:=6;
Graph2.NumPoints:=r-1;
for i:=1 to r-1 do begin
Graph2.Data[i]:=ni[i];
Graph2.XPosData:=xi[i]+dx/2;
end;
Graph3.RandomData:=0;
Graph3.GraphTitle:='Діаграма';
Graph3.GraphType:=6;
Graph3.GraphStyle:=2;
Graph3.NumPoints:=r-1;
for i:=1 to r-1 do begin
Graph3.XPosData:=xi[i]+dx/2;
Graph3.Data[i]:=ni[i];
end;
Graph4.RandomData:=0;
Graph4.GraphTitle:='Функція розподілу';
Graph4.GraphType:=6;
Graph4.NumPoints:=2*(r-1)+2;
fi := VarArrayCreate([0,2*(r-1)+2], varDouble);
nxi := VarArrayCreate([0,2*(r-1)+2], varDouble);
sx:=0;
for i:=1 to r-1 do begin
sx:=wi[i]+sx;
fi[2*i]:=sx-wi[i];
fi[2*i+1]:=sx;
nxi[2*i]:=xi[i];
nxi[2*i+1]:=xi[i];
end;
fi[2*(r-1)+2]:=1;
nxi[1]:=xi[1]-3;
nxi[2*(r-1)+2]:=xi[r-1]+3;
j:=0;
for i:=1 to 2*(r-1)+2 do begin
Graph4.Data[i]:=fi[i];
Graph4.XPosData:=nxi[i];
end;
end;
end;
end.
Список літератури
1. Крамер Гарольд. Математические методы статистики. М.: Мир, 1976.
2. Бух Арлей. Введение в теорию вероятностей и математическую статистику. М., 1951.