32 votos

Herramienta de línea de comandos para calcular las estadísticas básicas del flujo de valores

¿Existe alguna herramienta de línea de comandos que acepte el flujo de números (en formato ascii) desde la entrada estándar y proporcione las estadísticas descriptivas básicas de este flujo, como mínimo, máximo, media, mediana, RMS, cuantiles, etc.? La salida es bienvenida para ser parseable por el siguiente comando en la cadena de línea de comandos. El entorno de trabajo es Linux, pero otras opciones son bienvenidas.

1 votos

Le recomiendo que eche un vistazo a |STAT . Es un software bastante antiguo, pero es muy conveniente para estas cosas. También hay pyp y varios otros Herramientas Un*x.

0 votos

@chl Enlace ISTAT roto. ¿Pueden actualizarlo o convertirlo en una respuesta, por favor?

1 votos

@Masi Sí, parece que la página ya no existe. Aquí hay una enlace actualizado .

2voto

anisa Puntos 1

También existe simple-r, que puede hacer casi todo lo que puede hacer R, pero con menos pulsaciones:

https://code.google.com/p/simple-r/

Para calcular las estadísticas descriptivas básicas, habría que escribir una de:

r summary file.txt
r summary - < file.txt
cat file.txt | r summary -

No puede ser más sencillo.

2voto

synthesis Puntos 16

Existe sta, que es una variante c++ de st, también referenciada en estos comentarios.

Al estar escrito en c++, es rápido y puede manejar grandes conjuntos de datos. Es fácil de usar, incluye la posibilidad de elegir entre estimadores insesgados o sesgados, y puede ofrecer información más detallada, como el error estándar.

Puede descargar sta en github .

Descargo de responsabilidad: Soy el autor de sta .

1voto

Django Reinhardt Puntos 1427

Por si acaso, hay datastat

https://sourceforge.net/p/datastat/code/

un sencillo programa para Linux que calcula estadísticas simples desde la línea de comandos. Por ejemplo,

cat archivo.dat | datastat

mostrará el valor medio de todas las filas de cada columna de file.dat. Si necesita conocer la desviación estándar, el mínimo y el máximo, puede añadir las opciones --dev, --min y --max, respectivamente.

datastat tiene la posibilidad de agregar filas basadas en el valor de una o más columnas "clave".

Está escrito en C++, se ejecuta rápidamente y con poca ocupación de memoria, y se puede canalizar muy bien con otras herramientas como cut, grep, sed, sort, awk, etc.

1voto

jungledev Puntos 155

También puede considerar el uso de clistats . Se trata de una herramienta de interfaz de línea de comandos altamente configurable para calcular las estadísticas de un flujo de números de entrada delimitados.

Opciones de E/S

  • Los datos de entrada pueden proceder de un archivo, de la entrada estándar o de una tubería
  • La salida puede escribirse en un archivo, en la salida estándar o en una tubería
  • La salida utiliza cabeceras que comienzan con "#" para permitir la canalización a gnuplot

Opciones de análisis

  • Detección basada en la señal, el fin de archivo o la línea en blanco para detener el procesamiento
  • Se puede establecer un comentario y un carácter delimitador
  • Las columnas se pueden filtrar del tratamiento
  • Las filas pueden ser filtradas del procesamiento en base a una restricción numérica
  • Las filas pueden ser filtradas del procesamiento basado en la restricción de la cadena
  • Se pueden omitir las filas iniciales de la cabecera
  • Se puede procesar un número fijo de filas
  • Los delimitadores duplicados pueden ser ignorados
  • Las filas pueden convertirse en columnas
  • Hacer cumplir estrictamente que sólo se procesen las filas del mismo tamaño
  • Se puede utilizar una fila que contenga los títulos de las columnas para titular las estadísticas de salida

Opciones estadísticas

  • Estadísticas resumidas (recuento, mínimo, media, máximo, desviación estándar)
  • Covarianza
  • Correlación
  • Desplazamiento por mínimos cuadrados
  • Pendiente de mínimos cuadrados
  • Histograma
  • Datos brutos tras el filtrado

NOTA: Soy el autor.

1voto

jlo Puntos 755

Demasiada memoria y potencia de procesador, amigos. Usar R para algo así es más o menos como coger un mazo para matar un mosquito. Usa tu lenguaje favorito e implementa un algoritmo de media provisional. Para la media: $$\bar{x}_n = \frac{(n-1)\,\bar{x}_{n-1} + x_n}{n}$$ ; y para la varianza: $$s^2_n = \frac{S_n}{n-1}$$ $$S_n = S_{n-1} + (x_n-\bar{x}_{n-1})(x_n-\bar{x}_n).$$

Toma $\bar{x}_0 = S_0 = 0$ como valores de partida. Existen modificaciones para los análisis ponderados. Se pueden hacer los cálculos con dos reales de doble precisión y un contador.

i-Ciencias.com

I-Ciencias es una comunidad de estudiantes y amantes de la ciencia en la que puedes resolver tus problemas y dudas.
Puedes consultar las preguntas de otros usuarios, hacer tus propias preguntas o resolver las de los demás.

Powered by:

X