Statistics::Descriptive - Grundlegende Berechnungen der Beschreibenden Statistik

| | Kommentare (0)

Statistics::Descriptive von Shlomi Fish bietet einen einfachen Zugriff auf die grundlegenden Berechnungen der Beschreibenden Statistik, wie Median, Mittelwerte, Summe, Standardabweichung und Varianz, Häufigkeitsverteilung, Percentile bzw. Quantile und lineare Regresionsanalyse.

Beispiel:

#!/usr/bin/perl
use strict;
use warnings;

use Statistics::Descriptive;

my @messwerte = qw( 17 19 30 22 24 16 12 15 18 20 25 13 29 28 27 26 );

my $stat = Statistics::Descriptive::Full->new();

$stat->add_data( @messwerte ) ;

display_results();

sub display_results {

        # Returns the number of data items.
    print 'Anzahl Elemente: ',  $stat->count(), "\n";
    
        # Returns the mean of the data.
    print 'Arithmetischer Mittelwert: ',  $stat->mean(), "\n";

        # Sorts the data and returns the median value of the data.
    print 'Median: ',  $stat->median(), "\n";

        # Returns the harmonic mean of the data. 
    print 'Harmonischer Mittelwert: ', $stat->harmonic_mean(), "\n";

        # Returns the geometric mean of the data.
    print 'Geometrischer Mittelwert: ', $stat->geometric_mean(), "\n";
    
        # Returns the sum of the data.
    print 'Summe: ', $stat->sum(), "\n";
    
        # Returns the variance of the data. Division by n-1 is used.
    print 'Varianz: ', $stat->variance(), "\n";
    
        # Returns the standard deviation of the data. Division by n-1 is used.
    print 'Standardabweichung: ', $stat->standard_deviation(), "\n";
    
        # Returns the minimum value of the data set.
    print 'Minimum: ' , $stat->min(), "\n";
    
        # Returns the index of the minimum value of the data set.
    print 'Index Minimum: ', $stat->mindex(), "\n";
    
        # Returns the maximum value of the data set.
    print 'Maximum: ', $stat->max(), "\n";
    
        # Returns the index of the maximum value of the data set.
    print 'Index Maximum: ', $stat->maxdex(), "\n";
    
        # Returns the sample range (max - min) of the data set.
    print 'Stichprobenbereich: ',  $stat->sample_range(), "\n";

   print "\n";
   print "Percentile/Quantile\n";

        # Percentile
        # skalaren Kontext erzwingen, da print Listenkontext verwendet
    print 'Wert 25% Percentil: ', scalar $stat->percentile(25), "\n";
    my ($value,$index) =  $stat->percentile(25);
    print "Wert 25% Percentil: $value, Index: $index \n";

        # Quantile
    print 'Q1: ', $stat->quantile(1) , "\n";
    print 'Q2: ', $stat->quantile(2) , "\n";
    print 'Q3: ', $stat->quantile(3) , "\n";
    print 'Q4: ', $stat->quantile(4) , "\n";

    print "\n";

    my $partitions = 4;
    print "Haeufigkeitsverteilung fuer $partitions Partitionen: \n";
    my $f = $stat->frequency_distribution_ref($partitions); 
    foreach my $partition ( sort {$a <=> $b} keys %$f ) {
      		print "Partition = $partition, Anzahl = $f->{$partition}\n";
    }

    print "\n";
    print "Regressionsanalyse: Methode der kleinsten Quadrate\n";

    my ($q,$m,$r,$rms) = $stat->least_squares_fit();

    print "Geradengleichung: y = $m * x + $q\n";
    print "Linearer Korrelationskoeffizient nach Pearson: $r\n";
	# Wurzel aus dem mittleren quadratischen Fehler
    print "Root Mean Square Error (RMSE): $rms\n";

}

Das Programm erzeugt folgende Ausgabe:

Anzahl Elemente: 16
Arithmetischer Mittelwert: 21.3125
Median: 21
Harmonischer Mittelwert: 19.6902742958359
Geometrischer Mittelwert: 20.5128887373903
Summe: 341
Varianz: 34.3625
Standardabweichung: 5.86195359927047
Minimum: 12
Index Minimum: 0
Maximum: 30
Index Maximum: 15
Stichprobenbereich: 18

Percentile/Quantile
Wert 25% Percentil: 16
Wert 25% Percentil: 16, Index: 3 
Q1: 16.75
Q2: 21
Q3: 26.25
Q4: 30

Haeufigkeitsverteilung fuer 4 Partitionen: 
Partition = 16.5, Anzahl = 4
Partition = 21, Anzahl = 4
Partition = 25.5, Anzahl = 3
Partition = 30, Anzahl = 5

Regressionsanalyse: Methode der kleinsten Quadrate
Geradengleichung: y = 1.22794117647059 * x + 10.875
Linearer Korrelationskoeffizient nach Pearson: 0.997307339918983
Root Mean Square Error (RMSE): 0.41623752410203

Siehe auch

Jetzt kommentieren

Über diese Seite

Diese Seite enthält einen einen einzelnen Eintrag von Thomas Fahle vom 16.08.09 11:30.

Log::Dispatch - Logging mit mehreren Ausgabezielen ganz einfach ist der vorherige Eintrag in diesem Blog.

Slides Perl@FrOSCon 2009 ist der nächste Eintrag in diesem Blog.

Aktuelle Einträge finden Sie auf der Startseite, alle Einträge in den Archiven.

Blog Roll

Powered by

Powered by Movable Type 5.2.10

Creative Commons-Lizenz

Creative Commons License
Dieses Weblog steht unter einer Creative Commons-Lizenz.