Si je veux avoir 95% de chances que moins de 1% d'objets soient défectueux, de combien d'échantillons ai-je besoin?

9

Je dois vous assurer que mon sitemap XML a moins de des déchets (liens brisés). La liste d'URL se compte par centaines de milliers, et même s'il était possible de les tester tous 1 par 1, je préfère ne pas, pour de nombreuses raisons: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...

Je pense donc que prendre un sous-ensemble aléatoire serait suffisant, le problème est que je ne connais pas les probabilités.

Existe-t-il une fonction simple que je peux utiliser?

Si cela peut aider, on peut supposer avoir une information a priori sur la probabilité de rupture d'un lien sur plusieurs runs. Supposons qu'entre les exécutions, un lien de soit rompu.0,75%

gurghet
la source
Combien d'URL avez-vous? (L'inférence sur une population finie est quelque peu différente du cas habituel d'inférence sur une population infinie.)
Kodiologist
?? un nombre fini évidemment
gurghet
Cela va sans dire, mais quel nombre fini?
Kodiologist
par centaines de milliers, chaque jour est un peu différent
gurghet
Qu'arrive-t-il à votre plan de site qui le change? Avez-vous un plan du site complètement différent chaque jour, ou des URL sont-elles ajoutées et supprimées? Dans ce dernier cas, pouvez-vous garder une trace de ceux qui ont été ajoutés ou supprimés, afin que vous n'ayez qu'à en vérifier de nouveaux?
Kodiologist

Réponses:

4

Cela dépend donc de la distribution de votre croyance antérieure sur le taux de casse, mais: environ 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

L'idée ici est de modéliser les ruptures de liens comme un essai de Bernoulli, et de modéliser vos croyances sur le taux de ruptures comme la distribution bêta. La distribution bêta est conjuguée à la distribution Bernoulli , et la façon de mettre à jour une distribution bêta lorsque vous exécutez un essai est assez simple:

  • si c'est un échec, vous ajoutez un au premier paramètre, α
  • si c'est un succès, vous ajoutez un au deuxième paramètre, β

Bêta(0,0)

Andy Jones
la source
pn
1

np=0,0075np(1-p)Z

P(les échecs<.01n)P(Z<n(.01-p)np(1-p))P(Z<n.02898)
Z=1,645n.02898=1,645n=3222
jackkamm
la source