Я ищу удобную программу / скрипт, в которую я могу перекачивать данные через stdin и которая может предоставить мне некоторую базовую статистику входных данных. например - с набором значений, разделенных символом новой строки, который я хотел бы получить:
да, я знаю, можно с помощью bash или awk, но, может быть, вы уже знаете что-нибудь полезное?
пс.
Я прекрасно знаю «большие пушки», такие как octave, r и некоторые другие, но мне нужно что-то гораздо более простое.
Спасибо
вы можете попробовать что-нибудь вроде;
perl -e 'use List::Util qw(sum);while($r = <>){push (@array, $r)}; print sum(@array) / @array';
чтобы получить среднее. И вы можете установить пакет Statistics :: Descriptive http://search.cpan.org/~colink/Statistics-Descriptive-2.6/Descriptive.pm
чтобы делать то, что вам нужно для других требований. stdev, вероятно, прост, для другого потребуется еще несколько строк для сортировки и фильтрации. (без сомнения, это можно сделать одной строкой ... ;-)
Этот небольшой фрагмент AWK сделает часть того, что вы ищете:
awk '{sum += $0; count++; vals[$0]++} END {mean = sum / count; print "Total: ", sum; print "Mean: ", mean; for (i in vals){ s += vals[i] * ((i - mean) ** 2) }; print "Standard Dev: ", sqrt(s/count)}' datafile
Часть снижения 5% будет немного сложнее и будет зависеть от того, что именно вы имеете в виду.
Я знаю, что вы ищете что-то консервированное, но я ничего не знаю, если не использовать R, Octave, SAS или SPSS.
Редактировать: Исправленная формула
R может быть именно тем, что вы ищете, или это может быть полное убийство для вашей цели. Трудно сказать из вашего вопроса.
В любом случае, проверьте это http://en.wikipedia.org/wiki/R_(programming_language)
Первый и последний элементы выполнимы (я делал их пару раз) без сохранения всего набора данных в памяти и без предварительного знания общего количества элементов. Средний элемент (отбрасывание выбросов) является более сложной задачей и требует сохранения всего списка в ОЗУ или, по крайней мере, знания общего количества элементов заранее.
Я не знаю каких-либо простых готовых инструментов для выполнения любого из этих действий (хотя Octave и R звучат так, как будто они могут быть такими).