ISmPrincipalComponentAnalysis.CalcCovariance

Синтаксис

CalcCovariance: CalcCovarianceType;

Описание

Свойство CalcCovariance определяет метод расчета стандартного отклонения.

Комментарии

Значение данного свойства используется, только если тип анализа исходных данных выбран «Корреляционная матрица исходных данных» (ISlAnalysis.Type).

По умолчанию расчет стандартного отклонения производится по генеральной совокупности (GeneralCovariance).

Пример

Sub Main;

Var

pc: SmPrincipalComponentAnalysis;

Obj: ISlSeries;

d0, d1, d2: Double;

i, res: Integer;

ar1,ar2,ar3: Array Of Double;

Begin

pc := New SmPrincipalComponentAnalysis.Create;

pc.MissingData.Method := MissingDataMethod.AnyValue;

ar1 := New Double[10];

ar2 := New Double[10];

ar3 := New Double[10];

// значения ar1, ar2, ar3

ar1[0] := 7.0000; ar2[0] := 4.0000; ar3[0] := 3.0000;

ar1[1] := 4.0000; ar2[1] := 1.0000; ar3[1] := 8.0000;

ar1[2] := 6.0000; ar2[2] := 3.0000; ar3[2] := 5.0000;

ar1[3] := 8.0000; ar2[3] := 6.0000; ar3[3] := 1.0000;

ar1[4] := 8.0000; ar2[4] := 5.0000; ar3[4] := 7.0000;

ar1[5] := 7.0000; ar2[5] := 2.0000; ar3[5] := 9.0000;

ar1[6] := 5.0000; ar2[6] := 3.0000; ar3[6] := 3.0000;

ar1[7] := 9.0000; ar2[7] := 5.0000; ar3[7] := 8.0000;

ar1[8] := 7.0000; ar2[8] := 4.0000; ar3[8] := 5.0000;

ar1[9] := 8.0000; ar2[9] := 2.0000; ar3[9] := 2.0000;

Obj := pc.Objects;

Obj.Add.Value := ar1;

Obj.Add.Value := ar2;

Obj.Add.Value := ar3;

pc.Analysis.Type := AnalysisType.Correlation;

pc.CalcCovariance := CalcCovarianceType.SampleCovariance;

pc.ScoreType := PCAScoreType.Stand;

res := pc.Execute;

If res <> 0 Then

Debug.WriteLine(pc.Errors);

Else

Debug.WriteLine("Собственные вектора: ");

For i := 1 To 3 Do

d0 := pc.P[0, i - 1];

d1 := pc.P[1, i - 1];

d2 := pc.P[2, i - 1];

Debug.AssertMsg(False, "Главная компонента №" + i.ToString + ": " + d0.ToString + " " + d1.ToString + " " + d2.ToString);

End For;

Debug.WriteLine("================================");

Debug.WriteLine("Значения главных компонент: ");

Debug.AssertMsg(False, "Главная компонента №1, №2, №3");

For i := 1 To pc.v.GetUpperBound(1) + 1 Do

d0 := pc.V[i - 1, 0];

d1 := pc.V[i - 1, 1];

d2 := pc.V[i - 1, 2];

Debug.AssertMsg(False, "Наблюдение №" + i.ToString + ": " + d0.ToString + " " + d1.ToString + " " + d2.ToString);

End For;

End If;

End Sub Main;

После выполнения примера в окно консоли будут выведены собственные вектора и значения главных компонент:

Module execution started

Собственные вектора:

Главная компонента №1: 0.64200457634989416 0.68636164136057776 -0.34166916924798257

Главная компонента №2: 0.38467229168844341 0.097130330134305665 0.91792860668744924

Главная компонента №3: -0.66321742434359598 0.72074502858973277 0.20166618906061454

================================

Значения главных компонент:

Главная компонента №1, №2, №3

Наблюдение №1: 0.12903035852981545 -0.21839226959071706 0.02025485072666143

Наблюдение №2: -0.66669301100579936 0.0217442534129067 0.19999666028421142

Наблюдение №3: -0.14638086480259591 -0.10060632857139759 0.094644662986802838

Наблюдение №4: 0.51324074516097307 -0.31491122407391198 0.22138084765686122

Наблюдение №5: 0.22137977909251411 0.34314958971596865 0.20643080180376572

Наблюдение №6: -0.27162977083739037 0.41840155766303921 -0.27021100431677547

Наблюдение №7: -0.19095172298978533 -0.41443860123329074 0.27083977554578842

Наблюдение №8: 0.29646093774132237 0.54376056232352743 -0.01319193797809412

Наблюдение №9: 0.068009757606577848 0.0080503305179512527 0.10711010517240993

Наблюдение №10: 0.047533791504367734 -0.28675787016407545 -0.83725476188162995

Module execution finished

См. также:

ISmPrincipalComponentAnalysis