Індивідуальна робота на тему: «Теорія імовірностей та математична статистика»
Виконав: студенти групи ПМП-32
Теоретичні відомості:
Набір експерементальних даних будем позначати/>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.
Числові характеристики статистичного матеріалу поділяються на:
Статистики локації(центральної тенденції).
Розсіювання.
Числові характеристики форми.
Числові характеристики центральної тенденції.
Медіана — той елемент вибірки(якщо елементів непарна кількість) який поділяє вибірку по об'єму на дві рівні частини.Якщо елементів є парна кількість то медіана є проміжком.--PAGE_BREAK--
Мода — той елемент частотної таблиці, який має найбільшу частоту, тобто найчастіше зустрічається у вибірці.
Середнє, якщо випадкові змінні дискретні і (3) — її частотна таблиця обчислюється за формулою: />=/>або />=/>.
Числові характеристики розсіювання.
Варіанса: S/>.
Середньоквадратичне відхилення: S=/>.
Варіація(мінливість): V=/>.
Розмахом: />=x/>-x/>.
Приклад роботи програми:
/>
Дискрентна вибірка 1,0,-1,2,3,2,3,-1,0,5,4. Результат:
Графіки:
/>
Текст програми (ObjectPascalDelphi4 з застосуванням технології 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;
продолжение
--PAGE_BREAK--
{$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 k0 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 in 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 in 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
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 ki then Edit4.Text:=Edit4.Text + ','
else Edit4.Text:=Edit4.Text + '}';
end;
{mediana}
if m mod 20 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 n1 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 tx0 then sx:=sx/(sqrt(tx)*sqrt(tx)*sqrt(tx));
t:=sx;
Edit10.Text:=t;
sx:=0;
for i:=1 to n do {4} продолжение
--PAGE_BREAK--
sx:=sx+(p[i]-ser)*(p[i]-ser)*(p[i]-ser)*(p[i]-ser);
sx:=sx/n;
t:=sx;
Edit14.Text:=t;
{Eksces}
if tx0 then sx:=sx/(tx*tx)-3;
t:=tx;
Edit11.Text:=t;
{rozpodil function}
s2:=xi[1]; sx:=0;
Memo1.lines[0]:='0, x
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 + '=
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
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
if v[i]
ni[j]:=ni[j]+1;
i:=i+1;
end
else if j
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
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 ki then Edit4.Text:=Edit4.Text + ','
else Edit4.Text:=Edit4.Text + '}';
end;
{mediana}
if r-1 mod 20 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
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 + '=
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 n1 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 tx0 then dx:=dx/(sqrt(tx)*sqrt(tx)*sqrt(tx));
t:=dx; продолжение
--PAGE_BREAK--
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.