Verstehen Sie die Wahrscheinlichkeiten und Statistiken, die für das Fortschrittsmanagement mit einem Python-Programm verwendet werden können

Frage 1

Wie viele Würfe gibt es insgesamt, wenn Sie 100 Mal würfeln?

game_sugoroku_9570.png

Durchschnittlicher / erwarteter Wert

Der in der Grundschule gelernte Durchschnitt steht ganz oben in der Statistik. Verwenden Sie zunächst den Durchschnitt, um die Antwort auf die erste Frage abzuleiten und mit den Simulationsergebnissen zu vergleichen.

Programm

import numpy as np
import numpy.random as rd
import matplotlib.pyplot as plt

#Definiere einen Würfel
#Kennen Sie den Durchschnitt
dice = [1, 2, 3, 4, 5, 6]
print("durchschnittlich:", np.mean(dice))

#Definieren Sie die Anzahl der Versuche
#Sie können den erwarteten Wert der Summe in Kombination mit dem Durchschnitt sehen
trialsNum = 100
print("Erwarteter Gesamtwert:", np.mean(dice) * trialsNum)
input("Drücken Sie die Eingabetaste, um fortzufahren. . .")

#Eigentlich versuchen
#Zeichnen Sie ein Histogramm, um die Verteilung der Rollen zu überprüfen
resultList = [rd.choice(dice) for i in range(trialsNum)]
plt.hist(resultList, bins=6, rwidth=0.8, range=(0.5, 6.5))
plt.show()

print("gesamt:", np.sum(resultList))

Ausführungsergebnis (Beispiel)

Das Ergebnis ist nicht konstant, da Zufallszahlen verwendet werden.

Stichprobenmittelwert: 3.5
Erwarteter Gesamtwert: 350.0
Drücken Sie die Eingabetaste, um fortzufahren. . .

dice1.png

gesamt: 355

Kommentar

Die durchschnittliche Anzahl der Würfe, die Sie erhalten, wenn Sie einmal würfeln, beträgt 3,5. Sie können also die erste Frage beantworten, dass die Gesamtzahl der Würfe 100-mal etwa 350 beträgt, was dem 100-fachen des Durchschnitts entspricht. Sie können den Fortschritt wie folgt verwalten, indem Sie den Durchschnitts- / Erwartungswert verwenden.

  1. Ermitteln Sie den Durchschnitt (= Fortschrittstempo) der Anzahl der pro Ressourceneinheit verbrauchten Aufgaben (Personentag usw.) aus den Ergebnissen der Vergangenheit
  2. Multiplizieren Sie die Menge der verbleibenden verfügbaren Ressourcen bis zum Fälligkeitsdatum mit dem Fortschrittstempo, um die erwartete Anzahl der Aufgaben zu ermitteln, die verdaut werden können.
  3. Vergleichen Sie den erwarteten Wert mit dem verbleibenden ** Aufgabenbetrag, der bis zum Fälligkeitsdatum abgeschlossen sein muss, um den Fortschritt zu beurteilen **

Aber ist es in Ordnung, den Vergleich und das Urteil der menschlichen Erfahrung und Intuition zu überlassen? Sie können das Burndown-Diagramm verwenden, um anhand von Trends im Zeitverlauf zu beurteilen, aber Sie verlassen sich immer noch auf Erfahrung und Intuition.

Dispersion / Standardabweichung

Über 350 ... Sie können die erste Frage beantworten.

Über 350 ... Wie viel ist "ungefähr 350"? Dies wird durch die Varianz / Standardabweichung dargestellt. Ermitteln Sie zuerst die Standardabweichung von der Probe, dann die Standardabweichung von den Simulationsergebnissen und vergleichen Sie sie.

Programm

import numpy as np
import numpy.random as rd
import matplotlib.pyplot as plt

#Definiere einen Würfel
#Kennen Sie den Mittelwert und die Varianz
dice = [1, 2, 3, 4, 5, 6]
print("Stichprobenmittelwert:", np.mean(dice))
print("Probendispersion:", np.var(dice))

#Definieren Sie die Anzahl der Versuche
#Sie können den erwarteten Wert der Summe in Kombination mit dem Stichprobenmittelwert sehen
#Kann die Gesamtstandardabweichung in Kombination mit der Stichprobenvarianz vorhersagen
trialsNum = 100
print("Erwarteter Gesamtwert:", np.mean(dice) * trialsNum)
print("Gesamtstandardabweichung (erwartet):", np.sqrt(np.var(dice) * trialsNum))
input("Drücken Sie die Eingabetaste, um fortzufahren. . .")

#Eigentlich versuchen...Versuchen
metaTrialsNum = 10000
resultList = [np.sum([rd.choice(dice) for i in range(trialsNum)])
              for i in range(metaTrialsNum)]
myMean = np.mean(resultList)
myStd = np.std(resultList)
print("Durchschnitt der Gesamtzahl:", myMean)
print("Gesamtstandardabweichung (tatsächlich):", myStd)

# 68–95–99.Überprüfen Sie, ob die 7 Regeln gelten
win = [len([n for n in resultList if myMean - r * myStd <= n and n <= myMean + r * myStd]) /
       metaTrialsNum for r in range(1, 4)]
print(
    f'μ±σ : {myMean - 1 * myStd :.1f} ~ {myMean + 1 * myStd:.1f}: {win[0]:.2%}')
print(
    f'μ±2σ: {myMean - 2 * myStd :.1f} ~ {myMean + 2 * myStd:.1f}: {win[1]:.2%}')
print(
    f'μ±3σ: {myMean - 3 * myStd :.1f} ~ {myMean + 3 * myStd:.1f}: {win[2]:.2%}')

#Zeichnen Sie ein Histogramm, um die Gesamtverteilung anzuzeigen
plt.hist(resultList, bins=25)
plt.show()

Ausführungsergebnis (Beispiel)

Das Ergebnis ist nicht konstant, da immer noch Zufallszahlen verwendet werden.

Stichprobenmittelwert: 3.5
Probendispersion: 2.9166666666666665
Erwarteter Gesamtwert: 350.0
Gesamtstandardabweichung (erwartet): 17.078251276599328
Drücken Sie die Eingabetaste, um fortzufahren. . .

Figure_1.png

Durchschnitt der Gesamtzahl: 349.9814
Gesamtstandardabweichung (tatsächlich): 17.034108548438923
μ±σ : 332.9 ~ 367.0: 69.69%
μ±2σ: 315.9 ~ 384.0: 95.77%
μ±3σ: 298.9 ~ 401.1: 99.76%

Kommentar

Die Gesamtverteilung passt gut zu 68–95–99.7 Regel Es wurde eine Verteilung. Die Standardabweichung von ungefähr 17 zeigt, wie viel es "ungefähr 350" ist. Und die Standardabweichung kann ohne Simulation aus der Probe erhalten werden.

Fehlerfunktion erf

Aus der 68–95–99,7-Regel ermittelten wir die Wahrscheinlichkeit, dass das Versuchsergebnis innerhalb dieses Bereichs liegt, wenn x von μ ± xσ 1,2,3 beträgt. Kennst du also nicht die Wahrscheinlichkeit, wenn x 1,5 ist? Oder kennen Sie die Wahrscheinlichkeit, dass die Gesamtzahl der Rollen 370 oder mehr beträgt? Hier kommt die Fehlerfunktion erf ins Spiel. Lassen Sie uns veranschaulichen, wie diese Funktion im folgenden Python-Programm funktioniert.

Programm

import math
import numpy as np
import matplotlib.pyplot as plt

x = np.arange(-4.0, 4.1, 0.1)

leg1 = "μ-xσ ≦ a ≦ μ+xσ"
y1 = [math.erf(i/math.sqrt(2)) for i in x]
p1 = plt.plot(x, y1)

leg2 = "a ≦ μ+xσ"
y2 = [0.5 + 0.5 * math.erf(i/math.sqrt(2)) for i in x]
p2 = plt.plot(x, y2)

leg3 = "μ+xσ ≦ a"
y3 = [0.5 - 0.5 * math.erf(i/math.sqrt(2)) for i in x]
p3 = plt.plot(x, y3)

plt.legend((p1[0], p2[0], p3[0]),
           (leg1, leg2, leg3), loc=0)
plt.grid(True)
plt.show()

Ausführungsergebnis

Figure_1.png

Kommentar

Mit der Fehlerfunktion erf können Sie die Wahrscheinlichkeit berechnen, dass das Versuchsergebnis für jedes x innerhalb von μ ± xσ und kleiner oder gleich μ + xσ liegt.

Oder kennen Sie die Wahrscheinlichkeit, dass die Gesamtzahl der Rollen 370 oder mehr beträgt?

Es kann mit der Fehlerfunktion erf gefunden werden Ermitteln Sie zunächst den Wert von x, indem Sie die Werte in der folgenden Gleichung auf μ und σ anwenden.

μ+xσ = 370

Erwarteter Gesamtwert: 350,0 Gesamtstandardabweichung (geschätzt): 17.078251276599328

350+17x = 370 17x = 20 x = 1.18

Sie können dann die Wahrscheinlichkeit berechnen, indem Sie in der in Ihrem Programm verwendeten Formel einen Wert auf x anwenden.

0.5 - 0.5 * math.erf(i/math.sqrt(2)

0.5 - 0.5 * erf(1.18/√2) = 0.12 = 12%

Wenn Sie 100 Mal würfeln, besteht eine Wahrscheinlichkeit von 12%, dass die Gesamtzahl der Würfe 370 oder höher beträgt. Mit der Funktion Mittelwert, Standardabweichung und Fehler können Sie jetzt die erste Frage beantworten.

Frage 2

Wie weit wird das Team, das mit dem in der folgenden Tabelle angegebenen Tempo vorangekommen ist, nach Abschluss von Iteration 20 vorankommen?

Wiederholung Geschwindigkeit Akkumulation
1 7 7
2 3 10
3 3 13
4 6 19
5 6 25

Durchschnittlicher / erwarteter Wert

μ = 200, nicht wahr?

Dispersion / Standardabweichung

Da die Varianz bis zur Iteration 5 3,5 beträgt, kann erwartet werden, dass die Standardabweichung bis zur Iteration 20 σ = √ (3,5 * 20) ≒ 8,4 ist. Der Bereich von μ ± 3σ beträgt ungefähr 175 bis 225.

Fehlerfunktion erf

Wenn Sie mit einer Genauigkeit von ca. 80% antworten, sagen Sie 191 mit μ-1σ (abgerundet). Wenn das Fortschrittsziel bis Iteration 20 größer ist, sollten Sie verhandeln, um das Ziel auf 191 zu senken.

Wenn Sie mit einer Genauigkeit von 99% antworten, sagen Sie 175 mit μ-3σ. Wenn Ihr Ziel 225 ist, besteht keine 1% ige Chance, dass Sie rechtzeitig sind. Selbst wenn das Ziel 200 ist, beträgt die Wahrscheinlichkeit, rechtzeitig zu sein, 50%, was einem Treffer von fünfzig bis fünfzig entspricht. Es ist leicht, verletzt zu werden, wenn Sie beurteilen: "Wenn Sie im durchschnittlichen Tempo weitermachen, sind Sie pünktlich!"

Da sowohl μ als auch σ schwanken, wenn sich die Fortschritte erreichen, berechnen wir die Wahrscheinlichkeit, jederzeit mit der Fehlerfunktion erf über das Ziel hinauszugehen. Im Gegensatz zu Würfeln gibt es kein perfektes Exemplar.

Die Einheit der Ressourcenmenge ist einfach, wenn es sich um die Anzahl der Iterationen handelt. Wenn Sie sie jedoch detaillierter gestalten möchten, können Sie sie auch anhand der Anzahl der Tage oder Manntage berechnen.

Recommended Posts

Verstehen Sie die Wahrscheinlichkeiten und Statistiken, die für das Fortschrittsmanagement mit einem Python-Programm verwendet werden können
[Python] Ein Programm, um die Anzahl der Äpfel und Orangen zu ermitteln, die geerntet werden können
Ich habe eine generische Python-Projektvorlage erstellt
[Python] Ein Programm, das die maximale Anzahl von Spielzeugen findet, die mit Ihrem Geld gekauft werden können
Ich habe einen Tri-Tree geschrieben, der für die Implementierung von Hochgeschwindigkeitswörterbüchern in D-Sprache und Python verwendet werden kann
Hinweise zu Python-Kenntnissen, die mit AtCoder verwendet werden können
Artikel, der eine Person sein kann, die den Mechanismus der API versteht und beherrscht (mit Python-Code)
[Python] Erstellen Sie ein Diagramm, das mit Plotly verschoben werden kann
Ein Timer (Ticker), der im Feld verwendet werden kann (kann überall verwendet werden)
Ich habe ein Shuffle gemacht, das mit Python zurückgesetzt (zurückgesetzt) werden kann
Python-Standardmodul, das in der Befehlszeile verwendet werden kann
[Python] Zeichnen Sie mit Plotly Höhendaten auf eine sphärische Oberfläche und zeichnen Sie einen Globus, der rund und rund gedreht werden kann
Ich habe die Jumbo-Lotterie zum Jahresende mit Python gekauft und analysiert, die in Colaboratory ausgeführt werden kann
Über die Sache, dass Fackelzusammenfassung wirklich verwendet werden kann, wenn ein Modell mit Pytorch erstellt wird
[Für Anfänger] Baseball-Statistiken, die in 33 Minuten und 4 Sekunden gespeichert werden können, und PyData ~ mit Yojima Steel
[Python] Ein Programm, das Treppen mit # erstellt
[Python] Ein Programm, das die Partitur rundet
2. Erstellen Sie mit Python einen Entscheidungsbaum von 0 und verstehen Sie ihn (2. Grundlagen des Python-Programms)
Über die Angelegenheit, dass das re.compiled-Objekt für das re.match-Muster verwendet werden kann
[Python] Ein Programm, das ein Paar findet, das durch einen bestimmten Wert geteilt werden kann
[Python] Ein Programm, das die Anzahl der gepaarten Socken berechnet
Ein Memo beim Erstellen einer Umgebung, die vorerst mit Lambda @ Edge debuggt werden kann
[Python] Code, der zu Beginn beim Scraping als Anfänger mit Hirntod geschrieben werden kann
Dateitypen, die mit Go verwendet werden können
Funktionen, die in der for-Anweisung verwendet werden können
Programm zur Suche nach demselben Bild
Hinweise zum Erstellen von Zahlen, die mit matplotlib in Zeitschriften veröffentlicht werden können
Klasse für PYTHON, die ohne Kenntnis von LDAP betrieben werden kann
Einfache Programminstallation und automatische Programmaktualisierung, die in jeder Sprache verwendet werden kann
So installieren Sie die Python-Bibliothek, die von Pharmaunternehmen verwendet werden kann
[Python] Ein Programm, das die minimalen und maximalen Werte ohne Verwendung von Methoden findet
[Python] Ein Programm, das die Anzahl der Aktualisierungen der höchsten und niedrigsten Datensätze berechnet
Übersicht und nützliche Funktionen von Scikit-Learn, die auch für Deep Learning verwendet werden können
Automatisieren Sie das Entfernen des Hintergrunds für die neuesten Porträts in einem Verzeichnis mit Python und API
Problemumgehung für Flask-Mail, die keine japanische UTF-8-Mail sendet (Python3)
Konvertieren Sie Bilder aus dem FlyCapture SDK in ein Formular, das mit openCV verwendet werden kann
[Python] Ein Programm, das die Anzahl der Täler zählt
[Python] Erstellen einer Umgebung für die Wettbewerbsprogrammierung mit Atom (input () kann verwendet werden!) [Mac]
Ein Programm, das ein paar Kilogramm BMI und Standardgewicht verlangt [Python]
Um Japanisch mit Python in der Docker-Umgebung verwenden zu können
Python-Programm, das nach demselben Dateinamen sucht
[Python] Einführung in das WEB-Scraping | Zusammenfassung der Methoden, die mit dem Webdriver verwendet werden können
Ein Memo, dass ich den Datenspeicher mit Python berührt habe
Bis Sie Blender installieren und vorerst mit Python ausführen können
In Python3.8 und höher kann der inverse Mod mit der integrierten Funktion pow berechnet werden.
Mit Raspberry Pi erstellter Dateifreigabeserver, der für Remote-Arbeiten verwendet werden kann
[Python] Ein Programm, das die Positionen von Kängurus vergleicht.
Einfache Statistiken, mit denen die Auswirkungen von Maßnahmen auf EG-Standorte und Codes analysiert werden können, die in Jupyter-Notebooks verwendet werden können
Ich habe ein Tool erstellt, um automatisch ein Zustandsübergangsdiagramm zu generieren, das sowohl für die Webentwicklung als auch für die Anwendungsentwicklung verwendet werden kann
Installieren Sie Mecab und CaboCha auf ubuntu16.04LTS, damit es aus der Python3-Serie verwendet werden kann
[Django] Feldnamen, die für das Benutzermodell, die Benutzerregistrierung und die Anmeldemethoden verwendet werden können
[Atcoder] [C ++] Ich habe ein Testautomatisierungstool erstellt, das während des Wettbewerbs verwendet werden kann
So legen Sie Variablen fest, die in der gesamten Django-App verwendet werden können ~ Praktisch für Vorlagen usw. ~
Installationsverfahren für Python und Ansible mit einer bestimmten Version
Was können Sie mit den Standardstatistiken der Python-Bibliothek tun?
Goroutine (parallele Steuerung), die im Feld eingesetzt werden kann