Perl Statistics::Descriptive and a trimmed standard deviation

标签 perl statistics

Statistics::Descriptive 模块提供了 Full 类,可让您计算截尾平均值。有没有办法从中得到修剪的标准偏差?它已经对数据进行排序以获得修剪均值,因此困难的部分已经完成。

最佳答案

如果您的数据全部为正数或全部为负数,那么您可以只保留 2 个 $stat 对象,一个用于普通值,一个用于平方值,并组合 trimmed_mean 结果以生成修剪后的 stddev:

my $stat_x = Statistics::Descriptive::Full->new();
my $stat_xx = Statistics::Descriptive::Full->new();
sub add_x {
  $stat_x->add_data( @_ );
  $stat_xx->add_data( map {$_*$_} @_ );
}
sub trimmed_stddev {
  my $lower = shift;
  my $upper = @_ ? shift : $lower;  

  my $trm_x = $stat_x->trimmed_mean( $lower, $upper );
  my $trm_xx = $stat_xx->trimmed_mean( $lower, $upper );

  my $nn = int( $stat_x->count() * ( 1.0 - $lower - $upper ) );

  return ($nn <= 1 ? 0.0 : sqrt(($trm_xx - $trm_x * $trm_x ) * $nn / ($nn -1)) );
}

# add some data 
add_x( 1, 5, 12, 29, 10, 11, 2 );

print trimmed_stddev(0.0);
print trimmed_stddev(0.05);
print trimmed_stddev(0.2);
# output
#    9.45163125250522
#    9.58570364061576
#    4.44222166638871

关于Perl Statistics::Descriptive and a trimmed standard deviation,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/4821121/

相关文章:

regex - Perl 正则表达式 多个捕获组

windows - 在彩色控制台中生成 perl 脚本

perl - Perl 如何在并行处理中共享全局变量?

statistics - 程序员可以熟悉多少代码?

perl - 如何创建一个函数,该函数接受一个需要 $a 和 $b 的 block ,但与 perl 中的调用者位于不同的包中?

windows - 当我将我的 Perl 程序从 Linux 移至 Windows 时,为什么日期和数字格式会发生变化?

r - 如何通过分类变量过滤 R 中的 data.frame?

r - 阈值向量自回归模型的估计

database - Django:使用平均达到指定数字的随机整数字段值创建模型实例

java - 在哪里可以找到 Java 或 Oracle 中现代投资组合统计的实现(例如夏普比率、排序比率等)