O intervalo de pontuação de Wilson é um intervalo de confiança da probabilidade de sucesso, com base na proporção de sucessos em um conjunto de ensaios de Bernoulli (um ensaio de Bernoulli é um ensaio no qual exatamente dois resultados são possíveis: sucesso ou fracasso ). O intervalo é dado pela seguinte fórmula:
Os dois valores dados pela fórmula são os limites superior e inferior do intervalo. n S e n F são o número de sucessos e falhas, respectivamente, e n é o número total de tentativas (equivalente a n S + n F ). z é um parâmetro dependente do nível de confiança desejado. Para os propósitos deste desafio, z = 1,96 será usado (correspondendo a um intervalo de confiança de 95%) 1 .
Dados inteiros não negativos n S e n F , produza os limites do intervalo de pontuação de Wilson.
Regras
- As saídas devem ser tão precisas quanto possível aos valores reais, dentro dos limites da implementação de ponto flutuante do seu idioma, ignorando quaisquer problemas em potencial devido a imprecisões aritméticas de ponto flutuante. Se seu idioma é capaz de aritmética de precisão arbitrária, deve ser pelo menos tão preciso quanto a aritmética de precisão dupla IEEE 754.
- As entradas estarão dentro do intervalo representável para o tipo inteiro nativo do seu idioma e as saídas estarão dentro do intervalo representável para o tipo de ponto flutuante nativo do seu idioma.
- n sempre será positivo.
- A ordem das saídas não importa.
Casos de teste
Formato: n_s, n_f => lower, upper
0, 1 => 0.0, 0.7934567085261071
1, 0 => 0.20654329147389294, 1.0
1, 1 => 0.09452865480086611, 0.905471345199134
1, 10 => 0.016231752262825982, 0.3773646254862038
10, 1 => 0.6226353745137962, 0.9837682477371741
10, 90 => 0.05522854161313612, 0.1743673043676654
90, 10 => 0.8256326956323345, 0.9447714583868639
25, 75 => 0.17545094003724265, 0.3430464637007583
75, 25 => 0.6569535362992417, 0.8245490599627573
50, 50 => 0.40382982859014716, 0.5961701714098528
0, 100 => 0.0, 0.03699480747600191
100, 0 => 0.9630051925239981, 1.0
- O
z
valor é o1-α/2
quinto quantil da distribuição normal padrão, ondeα
está o nível de significância. Se você deseja um intervalo de confiança de 95%, seu nível de significância éα=0.05
e oz
valor é1.96
.
fonte
Respostas:
Mathematica, 48 bytes (codificação UTF-8)
Função sem nome, recebendo dois argumentos na ordem
n_s, n_f
e retornando um par ordenado de números reais. O símbolo de três bytes√
, representando a função de raiz quadrada, é o U-221A.Usa o fato de que precedendo
##
por um número resulta no produto dos dois argumentos, enquanto+##
resulta em sua soma. Também usa o fato de que produtos e somas passam automaticamente sobre listas, de modo que{-1,1}√(...)
implementa o ± na fórmula. Definir a constante ems = z^2
vez dez
si mesma também salvou alguns bytes. (Principalmente, estou orgulhoso de salvar um byte ao perceber1.4^4
exatamente isso1.96^2
!)fonte
Perl 6 , 66 bytes
Essa função realmente retorna uma junção ou dos limites inferior e superior; por exemplo, se chamado com os argumentos 100 e 0, ele retornará:
É um formato de saída não tradicional, para dizer o mínimo, mas nenhum formato específico foi especificado e os dois valores necessários estão presentes.
fonte
05AB1E , 34 bytes
Entrada é no formato
[n_s, n_f]
Saída é no formato
[upper, lower]
Experimente online!
Explicação
fonte
Encantos Rúnicos , 105 bytes
#StillBetterThanJava
Experimente online!
Entrada é no formato
n_s n_f
Saída é no formato
lower upper
e possui um espaço à direitaAH DEUS, essa é uma bagunça. Aqui está a versão desembrulhada:
Todos esses
y
s devem desacelerar o segundo IP para que ele chegue aoT
ponto de transferência no momento certo (ou seja, o segundo). Isso coloca os 3 principais itens de um ponteiro no outro (a configuração desta ação é mostrada abaixo).'Ä1C,
geraz
dividindo o caractere 196 por 100 (dup, quadrado, dup, div 2, dup, div 2 ...). O resto é apenas um monte de matemática e manipulação de pilha para empurrar valores futuros para baixo na pilha até que sejam necessários. Na maioria das vezes, eles acabam na ordem certa e é apenas atér4s{++}
que tenhamos que reverter a pilha e girar a coisa toda para obter os valores que queremos próximos um do outro.Provavelmente há espaço para melhorias, mas é complexo o suficiente para que eu não possa vê-lo. Heck, lera inadvertidamente "Z" em vez de "n" na fórmula original a um ponto de fixação e que era áspero.
Eu tive que retirar os cartões e simular as pilhas para garantir que estavam corretas:
Cada um tem um valor em ambas as extremidades devido ao número de variáveis (por exemplo: eu teria um com S e outro com F, eu os exibia, girava um ao redor e adicionava o S + F que estava em a outra extremidade no topo da pilha). Você pode ver que um dos
sqrt(...)
cartões tem umS
na borda inferior.fonte
R ,
5853514941 bytes-15 bytes graças a J.Doe. -2 bytes graças a Giuseppe.
fonte
MATL ,
3837 bytesDe entrada é uma série de dois números, em qualquer um destes formatos:
[25 75]
,[25, 75]
,[25; 75]
.Experimente online! ou verifique todos os casos de teste .
fonte
Haskell ,
70 69 6867 bytesExperimente online!
fonte
APL (Dyalog Unicode) , 50 bytes
Experimente online!
Infix Dfn, tendoN ← ns e N ← nf .
Agradecimentos a H.PWiz e dzaima por ajudar.
Quão:
fonte
z←1.9208⋄(z+⊣(-,+).5*⍨z×z+2×⊣×⊢÷+)÷z+z++
z
com o uso mais à direita:...÷z+(z←1.908)++
para a mesma contagem de bytes. Também:⊣×⊢÷+
->×÷+
Python,
7967 bytesA saída é um número inteiro complexo com o intervalo armazenado como a parte real / imaginária.
fonte
dc , 71 bytes
Pega as duas entradas em duas linhas separadas na chamada e as saídas em duas linhas separadas com o limite superior na parte inferior e o limite inferior na parte superior .
Por exemplo:
fonte
Raquete 134 bytes
Ungolfed:
Teste:
Resultado:
fonte
Java 7, 130 bytes
Golfe:
Ungolfed:
Experimente online
Retorna uma matriz do tipo dobro do comprimento 2, provavelmente pode ser mais jogado.
fonte
> <> com
-v
sinalizador, 100 bytesEspera que a entrada esteja presente na pilha no início da execução, na ordem
n_s, n_f
. Experimente online!Que linguagem estúpida para tentar isso em ...
Como> <> não possui um expoente ou operador raiz, a raiz quadrada é calculada na segunda linha de código usando o método Babylonian , com uma precisão de
1e-8
- para cada exemplo que eu tentei, isso é preciso com pelo menos 10 casas decimais. Se isso não for preciso o suficiente, os limites poderão ser reforçados adicionando mais:*
na segunda linha, misturando as coisas para manter os espelhos alinhados.A saída está no seguinte formato:
fonte
Pitão, 38 bytes
A entrada é como uma lista de valores
[n_s, n_f]
,. A saída é[upper, lower]
Experimente on-line aqui ou verifique todos os casos de teste de uma vez aqui .fonte
Gelatina , 30 bytes
Experimente online!
Explicação
Nota
Alguns desses recursos são mais recentes que o desafio. Acredito que na época em que esse desafio foi lançado,
++®¶×÷++1.96²©HH¤×®½×-,1+®H¤+³÷ç
era válido o Jelly (32 bytes), faltandoɗ
eØ-
.fonte
APL (NARS), 49 caracteres, 98 bytes
teste
fonte