El intervalo de puntuación de Wilson es un intervalo de confianza de la probabilidad de éxito, basado en la proporción de éxitos en un conjunto de ensayos de Bernoulli (un ensayo de Bernoulli es un ensayo en el que son posibles exactamente dos resultados: éxito o fracaso ). El intervalo viene dado por la siguiente fórmula:
Los dos valores dados por la fórmula son los límites superior e inferior del intervalo. n S y n F son el número de éxitos y fracasos, respectivamente, yn es el número total de pruebas (equivalente a n S + n F ). z es un parámetro que depende del nivel de confianza deseado. Para los propósitos de este desafío, se utilizará z = 1.96 (correspondiente a un intervalo de confianza del 95%) 1 .
Enteros no negativos Dadas n S y n F , la salida de los límites de la Wilson puntuación de intervalo.
Reglas
- Los resultados deben ser lo más precisos posible a los valores verdaderos, dentro de los límites de la implementación de punto flotante de su idioma, ignorando cualquier problema potencial debido a imprecisiones aritméticas de punto flotante. Si su lenguaje es capaz de una aritmética de precisión arbitraria, debe ser al menos tan precisa como la aritmética de doble precisión IEEE 754.
- Las entradas estarán dentro del rango representable para el tipo de entero nativo de su idioma, y las salidas estarán dentro del rango representable para el tipo de punto flotante nativo de su idioma.
- n siempre será positivo.
- El orden de las salidas no importa.
Casos de prueba
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
- El
z
valor es el1-α/2
cuantil cuantil de la distribución normal estándar, dondeα
es el nivel de significancia. Si desea un intervalo de confianza del 95%, su nivel de significancia esα=0.05
y elz
valor es1.96
.
fuente
Respuestas:
Mathematica, 48 bytes (codificación UTF-8)
Función sin nombre que toma dos argumentos en el orden
n_s, n_f
y devuelve un par ordenado de números reales. El símbolo de tres bytes√
, que representa la función de raíz cuadrada, es U-221A.Utiliza el hecho de que preceder
##
por un número da como resultado el producto de los dos argumentos, mientras que+##
da como resultado su suma. También utiliza el hecho de que los productos y las sumas se enhebran automáticamente en las listas, por lo que{-1,1}√(...)
implementa el ± en la fórmula. La definición de la constante ens = z^2
lugar dez
sí misma también ahorró un par de bytes. (¡Sobre todo estoy orgulloso de guardar un byte al notar que1.4^4
es exactamente1.96^2
!)fuente
Perl 6 , 66 bytes
Esta función en realidad devuelve una unión o de los límites inferior y superior; por ejemplo, si se llama con los argumentos 100 y 0, devuelve:
Es un formato de salida no tradicional, por decir lo menos, pero no se especificó ningún formato en particular, y ambos valores requeridos están presentes.
fuente
05AB1E , 34 bytes
La entrada es de la forma
[n_s, n_f]
salida es de la forma
[upper, lower]
Pruébalo en línea!
Explicación
fuente
Encantamientos rúnicos , 105 bytes
#StillBetterThanJava
Pruébalo en línea!
La entrada es de la forma La
n_s n_f
salida es de la forma
lower upper
y tiene un espacio finalAH DIOS, este es un desastre. Aquí está la versión sin envolver:
Todos esos
y
s deben reducir la velocidad de la segunda IP para que llegue alT
punto de transferencia en el momento adecuado (es decir, la segunda). Esto empuja los 3 elementos principales de un puntero al otro (la configuración de esta acción se muestra a continuación).'Ä1C,
se generaz
dividiendo el carácter 196 por 100 (dup, cuadrado, dup, div 2, dup, div 2 ...). Todo lo demás es solo un montón de manipulación matemática y de pila para empujar los valores futuros por la pila hasta que sean necesarios. En su mayor parte, terminan en el orden correcto y es solo hastar4s{++}
que tenemos que invertir la pila y rotar todo para obtener los valores que queremos uno al lado del otro.Probablemente haya margen de mejora, pero es lo suficientemente complejo como para que no pueda verlo. Heck, había leído inadvertidamente "z" en lugar de "n" en la fórmula original en un punto y corrigiendo eso era tosco.
Tuve que sacar tarjetas de notas y simular las pilas para asegurarme de que era correcto:
Cada uno tiene un valor en ambos extremos debido a la cantidad de variables que había (por ejemplo, tendría una con S y otra con F, las sacaría a ambas, voltearía una y agregaría la S + F que estaba activada). el otro extremo a la cima de la pila). Puedes ver que una de las
sqrt(...)
cartas tiene unS
borde inferior.fuente
R ,
5853514941 bytes-15 bytes gracias a J.Doe. -2 bytes gracias a Giuseppe.
fuente
MATL ,
3837 bytesDe entrada es una matriz de dos números, en cualquiera de estos formatos:
[25 75]
,[25, 75]
,[25; 75]
.Pruébalo en línea! o verificar todos los casos de prueba .
fuente
Haskell ,
70 69 6867 bytesPruébalo en línea!
fuente
APL (Dyalog Unicode) , 50 bytes
Pruébalo en línea!
Gracias a H.PWiz y dzaima por ayudar.
Cómo:
fuente
z←1.9208⋄(z+⊣(-,+).5*⍨z×z+2×⊣×⊢÷+)÷z+z++
z
en su uso más adecuado:...÷z+(z←1.908)++
para el mismo conteo de bytes. También:⊣×⊢÷+
->×÷+
Python,
7967 bytesLa salida es un número entero complejo con el intervalo almacenado como la parte real / imaginaria.
fuente
dc , 71 bytes
Toma ambas entradas en dos líneas separadas tras la invocación, y las salidas en dos líneas separadas con el límite superior en el parte inferior y el límite inferior en la parte superior .
Por ejemplo:
fuente
Raqueta 134 bytes
Sin golf:
Pruebas:
Salida:
fuente
Java 7, 130 bytes
Golfizado:
Sin golf:
Pruébalo en línea
Devuelve una matriz de tipo doble de longitud 2, probablemente se puede jugar más.
fuente
> <> con
-v
bandera, 100 bytesEspera que la entrada esté presente en la pila al inicio de la ejecución, en el orden
n_s, n_f
. Pruébalo en línea!Qué lenguaje tan estúpido para intentar esto ...
Como> <> carece de un exponente u operador de raíz, la raíz cuadrada se calcula en la segunda línea de código utilizando el método babilónico , con una precisión de
1e-8
- por cada ejemplo que he probado, esto es exacto al menos con 10 decimales. Si esto no es lo suficientemente preciso, los límites se pueden ajustar agregando más:*
en la segunda línea, barajando las cosas para mantener los espejos en línea.La salida tiene la siguiente forma:
fuente
Pyth, 38 bytes
La entrada es como una lista de valores,
[n_s, n_f]
. La salida es[upper, lower]
Pruébelo en línea aquí , o verifique todos los casos de prueba a la vez aquí .fuente
Jalea , 30 bytes
Pruébalo en línea!
Explicación
Nota
Algunas de estas características son más nuevas que el desafío. Creo que en el momento en que se publicó este desafío,
++®¶×÷++1.96²©HH¤×®½×-,1+®H¤+³÷ç
era válido Jelly (32 bytes), faltanteɗ
yØ-
.fuente
APL (NARS), 49 caracteres, 98 bytes
prueba
fuente