Statistical functions in PDL
Here are some basic statistical functions.
Maximum
To find the maximum from a one-dimensional PDL variable, use the max method .
use PDL; # data my $nums = pdl [4, 2, 7]; # Maximum value my $max = $nums->max;
The PDL::Ufunc module provides functions for calculating statistics from PDL variable.
Minimum
Use the min method to find the minimum .
# minimum value my $min = $nums->min;
Total
Use the sum method to find the sum .
# total my $total = $nums->sum;
Average
Use the avg method to find the average .
my $average = $nums->avg;
Median
Use the median method to find the median .
my $median = $nums->median;
The median is the value that comes in the middle when all the values are listed.
Mode
Use the mode method to find the mode .
my $mode = $nums->mode;
The mode is the value that appears most often.
Sort
Use the qsort method to sort in ascending order.
# Ascending sort my $nums_sort_asc = $nums->qsort;
To sort in descending order, combine ascending sort and slice.
use PDL::NiceSlice; my $nums_sort_desc = $nums_sort_asc (-1: 0);The meaning of "-1: 0" means that the first -1 is the last element. 0 means the first element. "-1: 0" means from the last element to the first element, and the order can be reversed.
Example
This is an example that can be executed.
use strict; use warnings; use PDL; use PDL::NiceSlice; # Create data my $nums = pdl [4, 4, 2, 2, 2, 7]; # Maximum value my $max = $nums->max; # minimum value my $min = $nums->min; # total my $total = $nums->sum; # Average my $average = $nums->avg; # Median my $median = $nums->median; # Mode my $mode = $nums->mode; print "Max: $max\n"; print "Min: $min\n"; print "Total: $total\n"; print "Average: $average\n"; print "Median: $median\n"; print "Mode: $mode\n"; # Ascending sort my $nums_sort_asc = $nums->qsort; # Descending sort(combined with ascending sort and slice) my $nums_sort_desc = $nums_sort_asc (-1: 0); print "$nums_sort_asc\n"; print "$nums_sort_desc\n";
Install PDL::Stats::Basic
The following statistical functions are made available by a module called PDL::Stats::Basic . You need to install PDL::Stats.
cpan PDL::Stats;
Loading PDL::Stats::Basic makes the functions defined in PDL::Stats::Basic available from PDL variable.
use PDL::Stats::Basic;
Distributed
To find the distributed , use the var method.
use PDL; use PDL::Stats::Basic; # data my $nums = pdl [4, 2, 7]; # Distributed my $variance = $nums->var;
Bias of an estimulus
To find the unbiased variance , use the var_unbiased method.
# Unbiased dispersion my $variance = $nums->var_unbiased;
Bias of an estimulus has a denominator of (n -1).
Standard deviation
To find the standard deviation , use the stdv method.
# standard deviation my $stdv = $nums->stdv;
The meaning of the standard deviation is an indication of how scattered the data is. The standard deviation formula is the "positive square root of the variance". Variance also indicates how scattered the data is, but because the units are different from the original data, it is difficult to compare with the original data. If you take the positive square root and make it the standard deviation, the unit will be the same as the unit of the original data.
Bias of an estimulus
To find the unbiased standard deviation , use the stdv_unbiased method.
# Unbiased standard deviation my $stdv = $nums->stdv_unbiased;
The unbiased standard deviation formula is the "positive square root of the unbiased variance".
Standard error
To find the standard error , use the se method.
# Standard error my $se = $nums->se;
Sum of deviation squares
To find the sum of squared deviations , use the ss method.
# Deviation square sum my $ss = $nums->ss;
Skewness
To find the skewness , use the skew method.
# Skewness my $skew = $nums->skew;
Bias of an estimulus
To find the unbiased skewness , use the skew_unbiased method.
# Bias of an estimulus my $skew_unbiased = $nums->skew_unbiased;
Kurtosis
To find the kurtosis , use the kurt method.
# Kurtosis my $kurt = $nums->kurt;
Bias of an estimulus
To find the unbiased kurtosis , use the kurt_unbiased method.
# Bias of an estimulus my $kurt_unbiased = $nums->kurt_unbiased;
Example
This is an example that can be executed.
use strict; use warnings; use PDL; use PDL::Stats::Basic; # data my $nums = pdl [4, 2, 7, 3, 5]; # Distributed my $variance = $nums->var; # Unbiased dispersion my $variance_unbiased = $nums->var_unbiased; # standard deviation my $stdv = $nums->stdv; # Unbiased standard deviation my $stdv_unbiased = $nums->stdv_unbiased; # Standard error my $se = $nums->se; # Deviation square sum my $ss = $nums->ss; # Skewness my $skew = $nums->skew; # Bias of an estimulus my $skew_unbiased = $nums->skew_unbiased; # Kurtosis my $kurt = $nums->kurt; # Bias of an estimulus my $kurt_unbiased = $nums->kurt_unbiased; print "Variance: $variance\n"; print "Unbiased variance: $variance_unbiased\n "; print "Standard deviation: $stdv\n"; print "Unbiased standard deviation: $stdv_unbiased\n"; print "Standard error: $se\n"; print "Sum of squared deviations: $ss\n"; print "Skew: $skew\n"; print "Unbiased Skew: $skew\n"; print "Kurtosis: $kurt\n"; print "Unbiased kurtosis: $kurt_unbiased\n";