ISmPrincipalComponentAnalysis.VAdj

Синтаксис

VAdj: Array;

Описание

Свойство VAdj возвращает значения главных компонент, которые посчитаны как линейные комбинации исходных рядов и собственных векторов.

Пример

Для выполнения примера добавьте ссылку на системную сборку Stat.

Sub UserProc;
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.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.WriteLine(" = V = ");
        Debug.AssertMsg(False"Главная компонента №1, №2, №3");
        For i := 1 To pc.v.GetUpperBound(1) + 1 Do
            d0 := pc.V[i - 10];
            d1 := pc.V[i - 11];
            d2 := pc.V[i - 12];
            Debug.AssertMsg(False"Наблюдение №" + i.ToString + ": " + d0.ToString + " " + d1.ToString + " " + d2.ToString);
        End For;
        Debug.WriteLine(" = V adj = ");
        Debug.WriteLine("Главная компонента №1, №2, №3");
        For i := 1 To pc.v.GetUpperBound(1) + 1 Do
            d0 := pc.VAdj[i - 10];
            d1 := pc.Vadj[i - 11];
            d2 := pc.Vadj[i - 12];
            Debug.WriteLine("Наблюдение №" + i.ToString + ": " + d0.ToString + " " + d1.ToString + " " + d2.ToString);
        End For;
    End If;
End Sub UserProc;

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

Module execution started

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

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

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

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

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

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

= V =

Главная компонента №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

= V adj =

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

Наблюдение №1: 6.2144710921476225 5.8350131824186739 -1.1545432888643969

Наблюдение №2: 0.52102659277629382 8.9792483503876728 -0.31879515629973487

Наблюдение №3: 4.2027665359411852 7.189067773970824 -0.80873851498930494

Наблюдение №4: 8.9125372897146384 4.5780889210008304 -0.77960303414975674

Наблюдение №5: 6.1761606328661642 9.9885302309912198 -0.29035092837580234

Наблюдение №6: 2.7917327939385714 11.148324162274758 -1.3860362116801752

Наблюдение №7: 4.2441002980872566 4.9685382689074817 -0.54885346876693819

Наблюдение №8: 6.476496039968076 11.291131129367113 -0.75190216365878393

Наблюдение №9: 5.5311327536516579 7.6708703957935729 -0.75121091074316793

Наблюдение №10: 5.8254215550243433 5.1074962071510566 -3.4609169594480731

Module execution finished

См. также:

ISmPrincipalComponentAnalysis