Есть ли для Linux простые программы для вычисления статистики?

Для новичков как вообще в Linux, так и в конкретной теме, к которой относится вопрос.

Модератор: Bizdelnick

MiK13
Сообщения: 1245
ОС: Linux Debian

Есть ли для Linux простые программы для вычисления статистики?

Сообщение MiK13 »

Имеется ввиду программа, которая, прочитав из файла массив чисел, вывела бы некоторые статистические параметры.
А именно: количество (это выдаёт wc), а так же их сумму, среднее, СКО, моменты 3-го и 4-го порядков ("косость" и "крутость").
В принципе можно и самому написать, но, может быть, есть что-то стандартное?
Спасибо сказали:
Аватара пользователя
Bizdelnick
Модератор
Сообщения: 21235
Статус: nulla salus bello
ОС: Debian GNU/Linux

Re: Есть ли для Linux простые программы для вычисления статистики?

Сообщение Bizdelnick »

Пишите правильно:
в консоли
вку́пе (с чем-либо)
в общем
вообще
в течение (часа)
новичок
нюанс
по умолчанию
приемлемо
проблема
пробовать
трафик
Спасибо сказали:
Православный
Сообщения: 3
ОС: Windows 10

Re: Есть ли для Linux простые программы для вычисления статистики?

Сообщение Православный »

Обычно статистику считают в электронных таблицах, которые обычно умеют загружать в себя файлы в различных форматах на подобии CSV.
Спасибо сказали:
Аватара пользователя
chitatel
Сообщения: 2083

Re: Есть ли для Linux простые программы для вычисления статистики?

Сообщение chitatel »

Есть Loginom в версии для linux, в нем развитые возможности исследовать статистические параметры. Но это не простая программа, а комбайн.
Спасибо сказали:
Аватара пользователя
Фантом
Сообщения: 460
ОС: openSUSE

Re: Есть ли для Linux простые программы для вычисления статистики?

Сообщение Фантом »

Это трудно назвать "простой программой", но R. Стандартнее не бывает.
Спасибо сказали:
Schlecht
Сообщения: 400

Re: Есть ли для Linux простые программы для вычисления статистики?

Сообщение Schlecht »

Спасибо сказали:
olgaykovleva95
Сообщения: 1

Re: Есть ли для Linux простые программы для вычисления статистики?

Сообщение olgaykovleva95 »

Для Linux есть простая программа datamash, которая умеет считать сумму, среднее, стандартное отклонение, косость и эксцесс из файла с числами, установить её можно через sudo apt install datamash, а запустить так: datamash mean 1 sstdev 1 skewness 1 kurtosis 1 < файл.txt. Также можно использовать Python с NumPy или R, если нужно больше гибкости.
Спасибо сказали:
MiK13
Сообщения: 1245
ОС: Linux Debian

Re: Есть ли для Linux простые программы для вычисления статистики?

Сообщение MiK13 »

olgaykovleva95 писала:
25.06.2025 10:15
Для Linux есть простая программа datamash, которая умеет считать сумму, среднее, стандартное отклонение, косость и эксцесс из файла с числами
Спасибо. В принципе это всё, что мне нужно. И даже гораздо больше. Правда, придётся поразбираться и повспоминать разные термины статистике (кроме среднего и СКО)
olgaykovleva95 писала:
25.06.2025 10:15
запустить так: datamash mean 1 sstdev 1 skewness 1 kurtosis 1 < файл.txt.
skewness и ]kurtosis он не понял. Нашёл pskew, sskew и skurt. И ещё много других. Может быть и понадобятся.
olgaykovleva95 писала:
25.06.2025 10:15
Также можно использовать Python с NumPy или R, если нужно больше гибкости.
Мне какой-то ИИ это советовал, но сейчас нет времени (и желания :)) разбираться. Он так же посоветовал сделать скрипт на awk.

Код: Выделить всё

#! /bin/awk -f
{
    sum += $1
    sumsq += $1 * $1
    count++
}
END {
    mean = sum / count
    stddev = sqrt(sumsq / count - mean * mean)
    print count, "Count"
    print mean, "Mean" 
    print stddev, "Standard Deviation"
}
Правда, почему-то stddev немного отличается от sstdev. Но совпадает с pstdev.
Спасибо сказали:
Аватара пользователя
ormorph
Сообщения: 3048
ОС: Gentoo

Re: Есть ли для Linux простые программы для вычисления статистики?

Сообщение ormorph »

MiK13 писал:
30.06.2025 13:59
Правда, почему-то stddev немного отличается от sstdev. Но совпадает с pstdev.
Разные формулы. В стандартной комплектации Python уже есть всё что нужно для этого.
Spoiler

Shell

import statistics, random, math

data = [random.gauss(0, 1) for _ in range(100)]
print(f"pstdev = {math.sqrt(sum([x**2 for x in data])/len(data) - statistics.mean(data)**2)}")
print(f"pstdev = {statistics.pstdev(data)}\n")
print(f"sstdev = {math.sqrt(sum([ (x-sum(data)/len(data))**2 for x in data])/(len(data)-1))}")
print(f"sstdev = {statistics.stdev(data)}")
Спасибо сказали: