Wie viele Proben benötige ich, wenn ich eine Wahrscheinlichkeit von 95% haben möchte, dass weniger als 1% der Objekte fehlerhaft sind?


9

Ich muss sicherstellen, dass meine XML-Sitemap weniger als Müll enthält (defekte Links). Die Liste der URLs liegt bei Hunderttausenden, und selbst wenn es möglich wäre, sie alle einzeln zu testen, würde ich es aus vielen Gründen lieber nicht tun:1%.

1 - Saved bandwidth
2 - Faster traffic for real clients
3 - Less noise in visitor statistics (because my test would count as a visit)
5 - I could go on...

Ich denke, eine zufällige Teilmenge wäre ausreichend. Das Problem ist, dass ich die Wahrscheinlichkeiten nicht kenne.

Gibt es eine einfache Funktion, die ich verwenden kann?

Wenn es hilft, können wir davon ausgehen, dass wir a priori Informationen über die Wahrscheinlichkeit haben, dass eine Verbindung über Läufe hinweg unterbrochen wird. Nehmen wir an, dass über Läufe hinweg für einen bestimmten Link vorhanden sind, der unterbrochen werden soll.0,75%.


Wie viele URLs haben Sie? (Die Schlussfolgerung über eine endliche Population unterscheidet sich etwas von dem üblichen Fall der Schlussfolgerung über eine unendliche Population.)
Kodiologe

?? eine endliche Zahl offensichtlich
Gurghet

Das versteht sich von selbst, aber welche endliche Zahl?
Kodiologe

bei hunderttausenden ist jeder tag ein bisschen anders
gurghet

Was passiert mit Ihrer Sitemap, die sie ändert? Haben Sie jeden Tag eine völlig andere Sitemap oder werden einige URLs hinzugefügt und entfernt? Wenn letzteres der Fall ist, können Sie nachverfolgen, welche hinzugefügt oder entfernt wurden, sodass Sie nur neue überprüfen müssen?
Kodiologe

Antworten:


4

Es hängt also von der Verteilung Ihrer vorherigen Überzeugung über die Bruchrate ab, aber: ungefähr 3600.

import scipy as sp

p = 0.0075
threshold = .01
confidence = .95

f = lambda n: sp.stats.beta(a=n*p, b=n*(1-p)).cdf(threshold) - confidence
print(sp.optimize.fsolve(f, 1000)[0])

>> 3627.45119614

Die Idee hier ist, Link-Brüche als Bernoulli-Studie zu modellieren und Ihre Überzeugungen über die Bruchrate als Beta-Verteilung zu modellieren. Die Beta-Distribution ist konjugiert mit der Bernoulli-Distribution , und die Möglichkeit, eine Beta-Distribution zu aktualisieren, wenn Sie eine Testversion ausführen, ist ziemlich einfach:

  • Wenn es ein Fehler ist, fügen Sie dem ersten Parameterα
  • Wenn es erfolgreich ist, fügen Sie einen zum zweiten Parameter hinzu,β

Wenn wir also mit einer -Verteilung beginnen und in etwa 0,75% der Fälle Fehler feststellen, wie viele Versuche dauert es, bis 95% der Masse der Verteilung unter 0,01 liegen? Über 3600.Beta(0,0)


Einer dieser Fälle, in denen die Bayes'sche Analyse sinnvoller ist, da der Prior nicht nur eine wilde Vermutung oder schlimmer noch eine Manipulationsabsicht ist. Aber vielleicht könnten Sie einen Sweep über den Parameter von 0,5 bis 0,9% durchführen und das entsprechende erforderlichepn
David Ernst

1

Für Proben mit einer von beträgt die Varianz für die Anzahl der Fehler . Verwenden Sie also den zentralen Grenzwertsatz mit als Standardnormal, Nun wollen wir, dass das Obige gleich 95 ist %, was . ich nach , ich .np=0,0075np(1- -p)Z.

P.(Ausfälle<.01n)P.(Z.<n(.01- -p)np(1- -p))P.(Z.<n.02898)
Z.=1,645n.02898=1,645n=3222
Durch die Nutzung unserer Website bestätigen Sie, dass Sie unsere Cookie-Richtlinie und Datenschutzrichtlinie gelesen und verstanden haben.
Licensed under cc by-sa 3.0 with attribution required.