close

Вход

Забыли?

вход по аккаунту

?

отчет 6

код для вставкиСкачать
Отчет по лабораторной работе №6
Корреляционный анализ
Цель работы: Исследование степени статистической связи между случайными величинами по коэффициентам парных корреляций. Задание:
Составить программу для ЭВМ, осуществляющую оценку степени стохастической связи между случайными величинами x,y и z, выборочные данные для которых должны вводиться в ЭВМ в интерактивном режиме. Получить матрицу коэффициентов парных корреляций.
Листинг программы
unit lab5_6;
interface
uses
Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
Dialogs, ComCtrls, StdCtrls, Grids, ExtCtrls, Math, XPMan, Menus, About;
type
TForm1 = class(TForm)
PageControl1: TPageControl;
TabSheet1: TTabSheet;
TabSheet2: TTabSheet;
sgX: TStringGrid;
sgY: TStringGrid;
edInpX: TEdit;
edInpY: TEdit;
Label1: TLabel;
Label2: TLabel;
Bevel1: TBevel;
Label3: TLabel;
Label4: TLabel;
Bevel2: TBevel;
Bevel3: TBevel;
Label5: TLabel;
Label6: TLabel;
Label7: TLabel;
Button1: TButton;
Label8: TLabel;
Label9: TLabel;
Label10: TLabel;
Label11: TLabel;
Edit1: TEdit;
Edit2: TEdit;
Edit3: TEdit;
sgX1: TStringGrid;
sgY1: TStringGrid;
sgZ1: TStringGrid;
Panel1: TPanel;
Button2: TButton;
Label12: TLabel;
Label13: TLabel;
Label14: TLabel;
Label15: TLabel;
Label16: TLabel;
Label17: TLabel;
Label18: TLabel;
Label19: TLabel;
Label20: TLabel;
Label21: TLabel;
XPManifest1: TXPManifest;
Label22: TLabel;
MainMenu1: TMainMenu;
N1: TMenuItem;
N2: TMenuItem;
procedure edInpXKeyDown(Sender: TObject; var Key: Word;
Shift: TShiftState);
procedure edInpYKeyDown(Sender: TObject; var Key: Word;
Shift: TShiftState);
procedure FormActivate(Sender: TObject);
procedure Button1Click(Sender: TObject);
procedure Button2Click(Sender: TObject);
procedure Edit1KeyDown(Sender: TObject; var Key: Word;
Shift: TShiftState);
procedure Edit2KeyDown(Sender: TObject; var Key: Word;
Shift: TShiftState);
procedure Edit3KeyDown(Sender: TObject; var Key: Word;
Shift: TShiftState);
procedure N1Click(Sender: TObject);
procedure N2Click(Sender: TObject);
private
{ Private declarations }
public
{ Public declarations }
end;
var
Form1: TForm1;
XVal: array [1..20] of currency;
YVal: array [1..20] of currency;
nValX: integer=0;
nValY: integer=0;
DispX, DispY: currency;
F, Ftabl: currency;
k1, k2: integer;
f1,f2,f3,f4,f5: boolean;
a: array [0..6, 0..6] of currency; //(7x6)
//////////////////////////////
M1,M2,M3 : array [0..100] of Currency;
Count1,Count2,Count3: integer;
implementation
{$R *.dfm}
procedure TForm1.edInpXKeyDown(Sender: TObject; var Key: Word;
Shift: TShiftState);
begin
if key=13 then
begin
if (edInpX.Text<='9') and (edInpX.Text>='0') then
begin
f1:=true;
sgX.Cells[1,sgX.RowCount]:=edInpX.Text;
sgX.Cells[0,sgX.RowCount]:=IntToStr(sgX.RowCount);
inc(nValX);
XVal[nValX]:=StrToFloat(sgX.Cells[1,sgX.RowCount]);
sgX.RowCount:=sgX.RowCount+1;
end;
edInpX.Text:='';
end;
end;
procedure TForm1.edInpYKeyDown(Sender: TObject; var Key: Word;
Shift: TShiftState);
begin
if key=13 then
begin
if (edInpY.Text<='9') and (edInpY.Text>='0') then
begin
f2:=true;
sgY.Cells[1,sgY.RowCount]:=edInpY.Text;
sgY.Cells[0,sgY.RowCount]:=IntToStr(sgY.RowCount);
inc(nValY);
YVal[nValY]:=StrToFloat(sgY.Cells[1,sgY.RowCount]);
sgY.RowCount:=sgY.RowCount+1;
end;
edInpY.Text:='';
end;
end;
procedure TForm1.FormActivate(Sender: TObject);
begin
sgX.Cells[0,0]:='№';
sgX.Cells[1,0]:='X';
sgY.Cells[0,0]:='№';
sgY.Cells[1,0]:='Y';
sgX1.Cells[0,0]:='№';
sgX1.Cells[1,0]:='X';
sgY1.Cells[0,0]:='№';
sgY1.Cells[1,0]:='Y';
sgZ1.Cells[0,0]:='№';
sgZ1.Cells[1,0]:='Z';
f1:=False; f2:=False; f3:=False; f4:=False; f5:=False;
end;
procedure TForm1.Button1Click(Sender: TObject);
var
sumX, sumY, vSrX, vSrY: currency;
fl: textfile;
i, j, k: integer;
ch: char;
str, str2: string;
begin
if (f1) and (f2) then
begin
sumX:=0;
for i:=1 to nValX do
sumX:=sumX+XVal[i];
vSrX:=sumX/nValX;
sumX:=0;
for i:=1 to nValX do
sumX:=sumX+(XVal[i]-vSrX)*
(XVal[i]-vSrX);
DispX:=sumX/(nValX-1);
label8.Caption:=FloatToStr(DispX);
sumY:=0;
for i:=1 to nValY do
sumY:=sumY+YVal[i];
vSrY:=sumY/nValY;
sumY:=0;
for i:=1 to nValY do
sumY:=sumY+(YVal[i]-vSrY)*
(YVal[i]-vSrY);
DispY:=sumY/(nValY-1);
label9.Caption:=FloatToStr(DispY);
F:=DispX/DispY;
label10.Caption:=FloatToStr(F);
k1:=Ceil(DispX*F);
k2:=Ceil(DispY*F);
AssignFile(fl,'fisher.txt');
Reset(fl);
i:=0;
while i<7 do
begin
Readln(fl,str);
k:=0;
str2:='';
for j:=1 to Length(str) do
begin
ch:=Char(str[j]);
if (ch=' ') then
begin
a[i][k]:=StrToFloat(str2);
inc(k);
str2:='';
end
else str2:=str2+ch;
end;
inc(i);
end;
CloseFile(fl);
Ftabl:=a[k2][k1];
label11.Caption:=FloatToStr(Ftabl);
if (F>Ftabl) then
label7.Caption:='T.к. F>F(a,k1,k2), то гипотеза о том, что D(x)=D(y) - неверна'
else label7.Caption:='T.к. F<=F(a,k1,k2), то гипотеза о том, что D(x)=D(y) - верна';
end
else Showmessage('Не все данные!!!');
end;
procedure TForm1.Button2Click(Sender: TObject);
var
i: integer;
A1,A2,A3,D1,D2,D3,Rxy,Rxz,Ryz: Currency;
begin
if (f3) and (f4) and (f5) then
begin
//вычисляем первую выборочную среднюю
inc(Count1); inc(Count2); inc(Count3);
A1:=0;
for i:=1 to Count1-1 do
A1:=A1+M1[i];
A1:=A1/Count1;
//вычисляем вторую выборочную среднюю
A2:=0;
for i:=1 to Count2-1 do
A2:=A2+M2[i];
A2:=A2/Count2;
//вычисляем третью выборочную среднюю
A3:=0;
for i:=1 to Count3-1 do
A3:=A3+M3[i];
A3:=A3/Count3;
//вычисляем первое ср.кв.отклонение
D1:=0;
for i:=1 to Count1-1 do
D1:=D1+Sqr(M1[i]-A1);
D1:=D1/(Count1-1);
D1:=Sqrt(D1);
//вычисляем второе ср.кв.отклонение
D2:=0;
for i:=1 to Count2-1 do
D2:=D2+Sqr(M2[i]-A2);
D2:=D2/(Count2-1);
D2:=Sqrt(D2);
//вычисляем третье ср.кв.отклонение
D3:=0;
for i:=1 to Count3-1 do
D3:=D3+Sqr(M3[i]-A3);
D3:=D3/(Count3-1);
D3:=Sqrt(D3);
//вычисляем коэффициенты парных корреляций
Rxy:=0;
for i:=1 to Count1-1 do
Rxy:=Rxy+((M1[i]-A1)*(M2[i]-A2));
Rxy:=Rxy/((Count1-1)*D1*D2);
Label15.Caption:=FloatToStr(Rxy);
Rxz:=0;
for i:=1 to Count1-1 do
Rxz:=Rxz+((M1[i]-A1)*(M3[i]-A3));
Rxz:=Rxz/((Count1-1)*D1*D3);
Label16.Caption:=FloatToStr(Rxz);
Ryz:=0;
for i:=1 to Count1-1 do
Ryz:=Ryz+((M2[i]-A2)*(M3[i]-A3));
Ryz:=Ryz/((Count1-1)*D2*D3);
Label17.Caption:=FloatToStr(Ryz);
end
else Showmessage('Не все данные введены!!!');
end;
procedure TForm1.Edit1KeyDown(Sender: TObject; var Key: Word;
Shift: TShiftState);
begin
if key=13 then
begin
if (Edit1.Text<='9') and (Edit1.Text>='0') then
begin
f3:=true;
sgX1.Cells[1,sgX1.RowCount]:=Edit1.Text;
sgX1.Cells[0,sgX1.RowCount]:=FloatToStr(sgX1.RowCount);
inc(Count1);
M1[Count1]:=StrToFloat(sgX1.Cells[1,sgX1.RowCount]);
sgX1.RowCount:=sgX1.RowCount+1;
end;
Edit1.Text:='';
end;
end;
procedure TForm1.Edit2KeyDown(Sender: TObject; var Key: Word;
Shift: TShiftState);
begin
if key=13 then
begin
if (Edit2.Text<='9') and (Edit2.Text>='0') then
begin
f4:=true;
sgY1.Cells[1,sgY1.RowCount]:=Edit2.Text;
sgY1.Cells[0,sgY1.RowCount]:=FloatToStr(sgY1.RowCount);
inc(Count2);
M2[Count2]:=StrToFloat(sgY1.Cells[1,sgY1.RowCount]);
sgY1.RowCount:=sgY1.RowCount+1;
end;
Edit2.Text:='';
end;
end;
procedure TForm1.Edit3KeyDown(Sender: TObject; var Key: Word;
Shift: TShiftState);
begin
if key=13 then
begin
if (Edit3.Text<='9') and (Edit3.Text>='0') then
begin
f5:=true;
sgZ1.Cells[1,sgZ1.RowCount]:=Edit3.Text;
sgZ1.Cells[0,sgZ1.RowCount]:=FloatToStr(sgZ1.RowCount);
inc(Count3);
M3[Count3]:=StrToFloat(sgZ1.Cells[1,sgZ1.RowCount]);
sgZ1.RowCount:=sgZ1.RowCount+1;
end;
Edit3.Text:='';
end;
end;
procedure TForm1.N1Click(Sender: TObject);
begin
Close;
end;
procedure TForm1.N2Click(Sender: TObject);
begin
AboutBox.ShowModal;
end;
unit About;
interface
uses Windows, SysUtils, Classes, Graphics, Forms, Controls, StdCtrls,
Buttons, ExtCtrls, XPMan;
type
TAboutBox = class(TForm)
Panel1: TPanel;
ProgramIcon: TImage;
ProductName: TLabel;
Version: TLabel;
Copyright: TLabel;
OKButton: TButton;
Label1: TLabel;
Label2: TLabel;
XPManifest1: TXPManifest;
Label3: TLabel;
Label4: TLabel;
Label5: TLabel;
procedure OKButtonClick(Sender: TObject);
private
{ Private declarations }
public
{ Public declarations }
end;
var
AboutBox: TAboutBox;
implementation
{$R *.dfm}
procedure TAboutBox.OKButtonClick(Sender: TObject);
begin
Close;
end;
Результат выполнения программы:
Контрольные вопросы:
1.Написать формулу для вычисления коэффициентов парных корреляций.
2.Пояснить их физический смысл.
Показателем степени стохастической связи между переменными являются коэффициенты парных корреляций
3.Перечислить свойства коэффициентов парных корреляций.
1) Коэффициент парной корреляции по абсолютной величине не превосходит 1 ().
2)Для заведомо статистически независимых случайных величин x и y коэффициент их корреляции равен нулю: .
3)В случае, когда , то между случайными величинами существует строгая случайная функциональная связь.
3. Почему матрица коэффициентов парных корреляций имеет вид треугольной матрицы.
Мы вычисляем парную корреляцию по формулам написанным выше, и из них видно что для 3-х случайных величин получим три коэффициент парной корреляции. Если наборов случайных величин будет больше, то мы их будем вычислять опираясь на эти формулы и получим треугольник, но большего размера.
Вывод: в ходе данной лабораторной работы я изучил степени статистической связи между случайными величинами по коэффициентам парных корреляций.
Выполнил:Куликов Е.А.Приняла:Стрельцова Е.Д.
Документ
Категория
Рефераты
Просмотров
24
Размер файла
68 Кб
Теги
отчет
1/--страниц
Пожаловаться на содержимое документа