Statistics/Basic: Difference between revisions

m
(Added Algol 68)
m (→‎{{header|Wren}}: Minor tidy)
 
(8 intermediate revisions by 3 users not shown)
Line 694:
0.80: =============================== (9905)
0.90: =============================== (9987)
</pre>
 
 
=={{header|Amazing Hopper}}==
<syntaxhighlight lang="c">
#include <basico.h>
 
#define TOTAL_BINES 10
 
algoritmo
 
/* verifica y obtiene argumento: tamaño de muestra*/
tamaño muestra=0
//obtener total argumentos
//es distinto a '2', entonces{ terminar }
//obtener parámetro numérico(2), mover a 'tamaño muestra'
/* algo menos natural, pero más claro para una mente formal: */
obtener total argumentos
si ' es distinto a( 2 ) '
terminar
sino
guardar ' parám numérico(2)' en 'tamaño muestra'
fin si
 
/* establece la escala para desplegar barras */
escala = 1.0
si ' #(tamaño muestra > 50) '
#( escala = 50.0 / tamaño muestra )
fin si
 
/* Generar muestra de tamaño "tamaño muestra" */
dimensionar con ( tamaño muestra) matriz aleatoria entera ( 10, muestra )
decimales '3'
/* Genera tabla de clases con 10 bines */
tabla de clases=0
bines(TOTAL_BINES, muestra), mover a 'tabla de clases'
/* Imprime tabla de clases */
ir a subrutina( desplegar tabla de clases)
/* Calcula promedio según tabla de clases */
promedio tabla=0, FREC=0, MC=0
ir a subrutina ( calcular promedio de tabla de clases )
/* Calcula desviación estándar y varianza */
desviación estándar=0, varianza=0
ir a subrutina ( calcular desviación estándar y varianza )
 
/* Calcula promedio de la muestra completa e imprime medidas */
ir a subrutina ( desplegar medidas y medias )
/* Construye barras */
tamaño barras=0, barras=0
ir a subrutina( construir barras para histograma ), mover a 'barras'
 
/* arma histograma de salida */
sMC=0
ir a subrutina( construir y desplegar histograma )
terminar
 
subrutinas
 
desplegar tabla de clases:
token.separador '"\t"'
imprimir '#(utf8("Tamaño de la muestra = ")), tamaño muestra,NL,NL,\
#(utf8("Números entre 0 y 10\n\n")),\
" --RANGO--\tM.DE C.\tFREC.\tF.R\t F.A.\tF.R.A.\n",\
"-----------------------------------------------------\n"'
imprimir 'justificar derecha(5,#(string(tabla de clases))), NL'
 
retornar
 
desplegar medidas y medias:
promedio muestra=0
muestra, promediar, mover a 'promedio muestra'
imprimir ' "Media de la muestra = ", promedio muestra, NL,\
"Media de la tabla = ", promedio tabla, NL,\
"Varianza = ", varianza, NL,\
#(utf8("Desviación estandar = ")), desviación estándar,NL'
retornar
 
construir barras para histograma:
#(tamaño barras = int(FREC * escala * 5))
 
dimensionar con (TOTAL_BINES) matriz rellena ("*", barras)
#(barras = replicate( barras, tamaño barras))
retornar ' barras '
 
construir y desplegar histograma:
#(sMC = string(MC))
unir columnas( sMC, sMC, justificar derecha(5,#(string(FREC))), barras )
 
/* Imprime histograma */
token.separador '" "'
imprimir ( " M.C. FREC.\n-----------\n",\
sMC,NL )
 
retornar
 
calcular promedio de tabla de clases:
//[1:filasde(tabla de clases), 3] coger (tabla de clases), mover a 'MC'
//[1:filasde(tabla de clases), 4] coger (tabla de clases), mover a 'FREC'
/* un poco menos natural, pero más claro para una mente formal: */
#basic{
MC = tabla de clases[ 1:TOTAL_BINES, 3]
FREC = tabla de clases[ 1:TOTAL_BINES, 4]
}
borrar intervalo
multiplicar(MC,FREC), calcular sumatoria, dividir entre (tamaño muestra),
mover a 'promedio tabla'
retornar
 
calcular desviación estándar y varianza:
restar( MC, promedio tabla), elevar al cuadrado, por (FREC),
calcular sumatoria, dividir entre(tamaño muestra), copiar en 'varianza'
calcular raíz, mover a 'desviación estándar'
retornar
 
</syntaxhighlight>
{{out}}
<pre>
$ hopper3 basica/estat.bas 100
Tamaño de la muestra = 100
 
Números entre 0 y 10
 
--RANGO-- M.DE C. FREC. F.R F.A. F.R.A.
-----------------------------------------------------
0 1 0.500 12 0.120 12 0.120
1 2 1.500 7 0.070 19 0.190
2 3 2.500 9 0.090 28 0.280
3 4 3.500 14 0.140 42 0.420
4 5 4.500 14 0.140 56 0.560
5 6 5.500 3 0.030 59 0.590
6 7 6.500 8 0.080 67 0.670
7 8 7.500 11 0.110 78 0.780
8 9 8.500 7 0.070 85 0.850
9 10 9.500 15 0.150 100 1.000
 
Media de la muestra = 4.540
Media de la tabla = 5.040
Varianza = 8.969
Desviación estandar = 2.995
 
M.C. FREC.
-----------
0.500 12 ******************************
1.500 7 *****************
2.500 9 **********************
3.500 14 ***********************************
4.500 14 ***********************************
5.500 3 *******
6.500 8 ********************
7.500 11 ***************************
8.500 7 *****************
9.500 15 *************************************
 
$ hopper3 basica/estat.bas 1000
Tamaño de la muestra = 1000
 
Números entre 0 y 10
 
--RANGO-- M.DE C. FREC. F.R F.A. F.R.A.
-----------------------------------------------------
0 1 0.500 87 0.087 87 0.087
1 2 1.500 94 0.094 181 0.181
2 3 2.500 109 0.109 290 0.290
3 4 3.500 109 0.109 399 0.399
4 5 4.500 95 0.095 494 0.494
5 6 5.500 99 0.099 593 0.593
6 7 6.500 91 0.091 684 0.684
7 8 7.500 100 0.100 784 0.784
8 9 8.500 106 0.106 890 0.890
9 10 9.500 110 0.110 1000 1.000
 
Media de la muestra = 4.598
Media de la tabla = 5.098
Varianza = 8.235
Desviación estandar = 2.870
 
M.C. FREC.
-----------
0.500 87 *********************
1.500 94 ***********************
2.500 109 ***************************
3.500 109 ***************************
4.500 95 ***********************
5.500 99 ************************
6.500 91 **********************
7.500 100 *************************
8.500 106 **************************
9.500 110 ***************************
 
$ hopper3 basica/estat.bas 10000
Tamaño de la muestra = 10000
 
Números entre 0 y 10
 
--RANGO-- M.DE C. FREC. F.R F.A. F.R.A.
-----------------------------------------------------
0 1 0.500 1039 0.104 1039 0.104
1 2 1.500 1014 0.101 2053 0.205
2 3 2.500 1005 0.101 3058 0.306
3 4 3.500 976 0.098 4034 0.403
4 5 4.500 949 0.095 4983 0.498
5 6 5.500 995 0.100 5978 0.598
6 7 6.500 1039 0.104 7017 0.702
7 8 7.500 1009 0.101 8026 0.803
8 9 8.500 992 0.099 9018 0.902
9 10 9.500 982 0.098 10000 1.000
 
Media de la muestra = 4.479
Media de la tabla = 4.979
Varianza = 8.310
Desviación estandar = 2.883
 
M.C. FREC.
-----------
0.500 1039 *************************
1.500 1014 *************************
2.500 1005 *************************
3.500 976 ************************
4.500 949 ***********************
5.500 995 ************************
6.500 1039 *************************
7.500 1009 *************************
8.500 992 ************************
9.500 982 ************************
 
$ hopper3 basica/estat.bas 100000
Tamaño de la muestra = 100000
 
Números entre 0 y 10
 
--RANGO-- M.DE C. FREC. F.R F.A. F.R.A.
-----------------------------------------------------
0 1 0.500 10139 0.101 10139 0.101
1 2 1.500 10025 0.100 20164 0.202
2 3 2.500 9990 0.100 30154 0.302
3 4 3.500 10021 0.100 40175 0.402
4 5 4.500 9880 0.099 50055 0.501
5 6 5.500 10054 0.101 60109 0.601
6 7 6.500 9961 0.100 70070 0.701
7 8 7.500 10144 0.101 80214 0.802
8 9 8.500 9773 0.098 89987 0.900
9 10 9.500 10013 0.100 100000 1.000
 
Media de la muestra = 4.489
Media de la tabla = 4.989
Varianza = 8.264
Desviación estandar = 2.875
 
M.C. FREC.
-----------
0.500 10139 **************************************************
1.500 10025 **************************************************
2.500 9990 *************************************************
3.500 10021 **************************************************
4.500 9880 *************************************************
5.500 10054 **************************************************
6.500 9961 *************************************************
7.500 10144 **************************************************
8.500 9773 ************************************************
9.500 10013 **************************************************
 
 
</pre>
 
Line 1,941 ⟶ 2,211:
 
</pre>
 
=={{header|EasyLang}}==
<syntaxhighlight lang=easylang>
global list[] .
proc mklist n . .
list[] = [ ]
for i = 1 to n
list[] &= randomf
.
.
func mean .
for v in list[]
sum += v
.
return sum / len list[]
.
func stddev .
avg = mean
for v in list[]
squares += (avg - v) * (avg - v)
.
return sqrt (squares / len list[])
.
proc histo . .
len hist[] 10
for v in list[]
ind = floor (v * 10) + 1
hist[ind] += 1
.
for v in hist[]
h = floor (v / len list[] * 200 + 0.5)
s$ = substr "========================================" 1 h
print v & " " & s$
.
.
numfmt 4 5
proc stats size . .
mklist size
print "Size: " & size
print "Mean: " & mean
print "Stddev: " & stddev
histo
print ""
.
stats 100
stats 1000
stats 10000
stats 100000
</syntaxhighlight>
 
=={{header|Elixir}}==
Line 4,914 ⟶ 5,233:
{{trans|Ruby}}
<syntaxhighlight lang="ruby">func generate_statistics(n) {
var(sum=0, sum2=0);
var hist = 10.of(0);
 
 
n.times {
var r = 1.rand;
sum += r;
sum2 += r**2;
hist[10*r] += 1;
}
 
 
var mean = sum/n;
var stddev = Math.sqrt(sum2/n - mean**2);
 
 
say "size: #{n}";
say "mean: #{mean}";
say "stddev: #{stddev}";
 
 
var max = hist.max;
for i in ^hist.range.each {|i|
printf("%.1f:%s\n", 0.1*i, "=" * 70*hist[i]/max);
}
print "\n";
}
 
 
[100, 1000, 10000].each {|n| generate_statistics(n) }</syntaxhighlight>
{{out}}
<pre style="height: 40ex; overflow: scroll">
size: 100
mean: 0.539719181395696620109634051345884432579835159541
mean: 0.4585051431752446588
stddev: 0.283883840711089795862044996985935095942987013707
stddev: 0.2870559459562831101619581273667538623484
0.0:=================================================================
0.1:==================================================
0.2:======================================================================
0.3:======================================================================
0.4:==========================================================
0.5:======================================================================
0.6:==================================================
0.7:======================================================================
0.8:======================================================================
0.9:================================================================
 
size: 1000
mean: 0.509607463325018405029035982604757578351179500375
mean: 0.51292239343467439552
stddev: 0.291051486526422985516729469185300756396357843712
stddev: 0.2832968595790956540009121237087699143503
0.0:==========================================================
0.1:========================================================
0.2:================================================================
0.3:========================================================
0.4:======================================================================
0.5:=====================================================================
0.6:===============================================================
0.7:===========================================================
0.8:==========================================================
0.9:======================================================================
 
size: 10000
mean: 0.501370967820671948202377775772729161752514666335
mean: 0.49883638025449614521145
stddev: 0.288601021921015908441703525737039264149088197141
stddev: 0.2898083000452161646017460189689302069547
0.0:====================================================================
0.1:====================================================================
0.2:======================================================================
0.3:=================================================================
0.4:======================================================================
0.5:=================================================================
0.6:===============================================================
0.7:===================================================================
0.8:==================================================================
0.9:====================================================================
</pre>
 
Line 5,254 ⟶ 5,573:
=={{header|Wren}}==
{{libheader|Wren-math}}
<syntaxhighlight lang="ecmascriptwren">import "random" for Random
import "./math" for Nums
 
var r = Random.new()
9,488

edits