Se eu quiser ter 95% de chance de que menos de 1% de objetos estejam com defeito, quantas amostras eu preciso?

9

Preciso garantir que meu sitemap XML tenha menos de lixo (links quebrados). A lista de URLs está na casa dos centenas de milhares e, mesmo que fosse possível testá-los todos 1 por 1, prefiro não, por vários motivos: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...

Então eu acho que pegar um subconjunto aleatório seria suficiente, o problema é que não conheço probabilidades.

Existe uma função simples que eu possa usar?

Se isso ajudar, podemos supor ter uma informação a priori sobre a probabilidade de um link ser quebrado entre as execuções. Digamos que, entre as execuções, haja para que qualquer link seja quebrado.0.75%

gurghet
fonte
Quantos URLs você tem? (Inferência sobre uma população finito é um pouco diferente do caso mais usual de inferência acerca de uma população infinita.)
Kodiologist
?? um número finito, obviamente
gurghet
Isso é óbvio, mas qual número finito?
Kodiologist
na centena de milhares, a cada dia é um pouco diferente
gurghet
O que está acontecendo com o mapa do site que está mudando? Você tem um mapa do site completamente diferente a cada dia ou alguns URLs são adicionados e removidos? Neste último caso, você pode acompanhar quais foram adicionados ou removidos, para que você só precise verificar os novos?
Kodiologist 25/09

Respostas:

4

Portanto, depende da distribuição de sua crença anterior sobre a taxa de quebra, mas: cerca de 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

A idéia aqui é modelar quebras de link como um teste de Bernoulli e modelar suas crenças sobre a taxa de quebra como a distribuição beta. A distribuição beta é conjugada à distribuição de Bernoulli , e a maneira de atualizar uma distribuição beta quando você executa uma avaliação é bastante simples:

  • se houver falha, adicione um ao primeiro parâmetro,α
  • se for um sucesso, você adiciona um ao segundo parâmetro,β

Portanto, se começamos com uma distribuição e vemos falhas cerca de 0,75% do tempo, quantas tentativas serão necessárias antes de 95% da massa da distribuição ficar abaixo de 0,01? Cerca de 3600.Beta(0,0)

Andy Jones
fonte
Um daqueles casos em que a análise bayesiana faz mais sentido, já que o anterior não é apenas um palpite maluco ou, pior ainda, uma intenção de manipular. Mas talvez você poderia executar uma varredura sobre o digamos parâmetro 0,5-0,9% e traçar o correspondente exigidopn
David Ernst
1

Para amostras com chance de falha, a variação para o número de falhas é . Portanto, usando o teorema do limite central, com normal normal, Agora agora queremos que o acima seja igual a 95 %, que corresponde a . Resolvendo para , recebo .np=0.0075np(1p)Z

P(failures<.01n)P(Z<n(.01p)np(1p))P(Z<n.02898)
Z=1.645n=3222n.02898=1.645n=3222
jackkamm
fonte