Analisi di tre dadi

Vedi la discussione teorica e la codifica per due dadi

Modifica le 2 righe di codice iniziali

...
DADI = [d1+d2+d3 for d1 in DADO for d2 in DADO for d3 in DADO] # Lancio di 3 dadi
...
P    = [sp.Rational(count, 216) for count in COUNT.values()]   # Probabilità = Frequenze assolute
...

Il resto del codice rimane lo stesso

import collections               # Counter()
import matplotlib.pyplot as plt
import sympy             as sp   # Rational(), sqrt() 

DADO  = list(range(1, 7))
DADI  = [d1+d2+d3 for d1 in DADO for d2 in DADO for d3 in DADO]
COUNT = collections.Counter(DADI);

X = COUNT.keys()
P = [sp.Rational(count, 216) for count in COUNT.values()]

plt.bar(X, P)
plt.grid()
plt.show()
print("  x | p(x)")
print("----|------")
for x, p in zip(X, P):
    print(" %2i | %s" %(x, p))

#-------------------------------------------------------------------------------

media          = 0
media_quadrati = 0
for p, x in zip(P, X):
    media          += p*x
    media_quadrati += p*x**2
varianza_1 = media_quadrati-media**2

print("Media              = %5s %10.6f" %(media         , media         ))
print("Media dei quadrati = %5s %10.6f" %(media_quadrati, media_quadrati))
print("Varianza  (1)      = %5s %10.6f" %(varianza_1    , varianza_1    ))

#-------------------------------------------------------------------------------

scarto_medio_assoluto = 0
devianza              = 0
varianza_2            = 0

for p, x in zip(P, X):
    scarto_medio_assoluto += p*abs(media-x)
    devianza              += (media-x)**2  
    varianza_2            += p*(media-x)**2

print("Scarto medio assoluto = %5s %10.6f" %(scarto_medio_assoluto, scarto_medio_assoluto))
print("Devianza              = %5s %10.6f" %(devianza             , devianza             ))
print("Varianza (2)          = %5s %10.6f" %(varianza_2           , varianza_2           ))

#-------------------------------------------------------------------------------

deviazione_standard          = sp.sqrt(varianza_2)
deviazione_standard_relativa = deviazione_standard/abs(media)
print("Deviazione standard      = %11s %10.6f" %(deviazione_standard         , deviazione_standard         ))
print("Deviazione standard rel. = %11s %10.6f" %(deviazione_standard_relativa, deviazione_standard_relativa))

Per ottenere

  x | p(x) 
----|------
  3 | 1/216 
  4 | 1/72 
  5 | 1/36 
  6 | 5/108 
  7 | 5/72 
  8 | 7/72 
  9 | 25/216 
 10 | 1/8 
 11 | 1/8 
 12 | 25/216 
 13 | 7/72 
 14 | 5/72 
 15 | 5/108 
 16 | 1/36 
 17 | 1/72 
 18 | 1/216

Media              = 21/2  10.500000 
Media dei quadrati =  119 119.000000 
Varianza (1)       = 35/4   8.750000 

Scarto medio assoluto = 29/12   2.416667 
Devianza              =   340 340.000000 
Varianza (2)          =  35/4   8.750000 

Deviazione standard      =  sqrt(35)/2 2.958040 
Deviazione standard rel. = sqrt(35)/21 0.281718

Riepilogo

\displaystyle M(X) = \frac{21}{2}

\displaystyle M(X^2) = 119

\displaystyle \delta(X) = \frac{29}{12}

\displaystyle dev(X) = 340

\displaystyle var(X) = \frac{35}{4}

\displaystyle \sigma(X) = \frac{\sqrt{35}}{2}

\displaystyle \sigma^*(X) = \frac{\sqrt{35}}{21}