home *** CD-ROM | disk | FTP | other *** search
- {***************************************************************************}
- {* LAGE.INC *}
- {* Lageparameter von Datenvectoren *}
- {***************************************************************************}
- { arithmetisches Mittel: }
- PROCEDURE mittel (vec : vector; VAR mit, varianz, standabw : REAL);
-
- VAR sum1, sum2 : REAL;
- i : INTEGER;
-
- BEGIN
- sum1 := 0.0; sum2 := 0.0;
- FOR I := 1 TO vec.n DO
- BEGIN
- sum1 := sum1 + vec.value[I];
- sum2 := sum2 + vec.value[I] * vec.value[I];
- END;
- mit := sum1 / vec.n;
- varianz := (sum2 - mit * sum1) / (vec.n - 1);
- standabw := Sqrt(varianz);
- END;
- {---------------------------------------------------------------------------}
- { gewogenes arithmetisches Mittel: }
- PROCEDURE gmittel (vec : vector; VAR mit, varianz, standabw : REAL);
-
- VAR sum1, sum2 : REAL;
- i : INTEGER;
-
- BEGIN
- sum1 := 0; sum2 := 0;
- FOR I := 1 TO vec.n DO
- BEGIN
- sum1 := sum1 + vec.value[I] * vec.gew[I];
- sum2 := sum2 + vec.value[I] * vec.value[I] * vec.gew[I];
- END;
- mit := sum1 / vec.n;
- varianz := (sum2 - mit * sum1) / (vec.n - 1);
- standabw := Sqrt(varianz);
- END;
- {---------------------------------------------------------------------------}
- { Utility zum standardisieren einer Stichprobe }
- PROCEDURE standard (xvec : Vector; VAR svec : Vector);
-
- VAR xvar, mit, dummy : REAL;
- i : INTEGER;
-
- BEGIN
- mittel(xvec, mit, xvar, dummy);
- svec.n := xvec.n;
- IF xvar > 0.0 THEN
- BEGIN
- xvar := Sqrt(xvar);
- FOR I := 1 TO xvec.n DO
- BEGIN
- svec.value[I] := (xvec.value[I]-mit)/xvar; svec.gew[I] := xvec.gew[I];
- END;
- END;
- END;
- {---------------------------------------------------------------------------}
- FUNCTION variationskoeff (vec : vector) : REAL;
-
- VAR i : INTEGER;
- xmit, sx, dummy : REAL;
-
- BEGIN
- mittel(vec, xmit, sx, dummy); variationskoeff := sx / xmit
- END;
- {--------------------------------------------------------------------------}
- PROCEDURE spannweite (vec : vector; VAR min, max : REAL );
-
- VAR i, j : INTEGER;
-
- BEGIN
- J := vec.n;
- min := MaxReal;
- max := MinReal;
- FOR I:=1 TO J DO
- BEGIN
- IF vec.value[I] < min THEN min := vec.value[I];
- IF vec.value[I] > max THEN max := vec.value[I];
- END;
- END;
- {--------------------------------------------------------------------------}
- PROCEDURE descript;
-
- VAR vec : vector;
- mini, maxi, vz, st, mw : REAL;
-
- BEGIN
- readvector(vec);
- mittel(vec, mw, vz, st);
- WriteLn('Arithmetisches Mittel : ',mw);
- WriteLn('Varianz : ',vz);
- WriteLn('Standardabweichung : ',st);
- spannweite(vec, mini, maxi);
- WriteLn('Kleinster Wert : ',mini);
- WriteLn('Groesster Wert : ',maxi);
- WriteLn('Variationskoeffizient : ',variationskoeff(vec));
- warten;
- END;
- {--------------------------------------------------------------------------}
- { Ende LAGE.INC }