Laplace a été le premier à reconnaître le besoin de tabulation et a fourni l'approximation suivante:
G(x)=∫∞xe−t2dt=1x−12x3+1⋅34x5−1⋅3⋅58x7+1⋅3⋅5⋅716x9+⋯(1)
Le premier tableau moderne de la distribution normale a ensuite été construit par l'astronome français Christian Kramp dans Analyse des fractions astronomiques et terrestres (Par le citoyen Kramp, Professeur de Chymie et de Physique expérimentale à l'école centrale du Département de la Roer, 1799) . Des tableaux relatifs à la distribution normale: un bref historique Auteur (s): Herbert A. David Source: The American Statistician, Vol. 59, n ° 4 (nov. 2005), p. 309-311 :
Ambitieusement, Kramp a fourni des tableaux à huit décimales ( D) allant jusqu'à x = 1,24, 9 D à 1,50, 10 D à 1,99 et 11 D à 3,00, ainsi que les différences nécessaires pour l'interpolation. Notant les six premières dérivées de G (x), il utilise simplement un développement en série de Taylor de G (x + h) autour de G (x), avec h = .01, jusqu'au terme de h ^ 3. Cela lui permet de procéder pas à pas de x = 0 à x = h, 2h, 3h, \ dots, en multipliant h \, e ^ {- x ^ 2} par8x=1.24, 91.50, 101.99,113.00G(x),G(x+h)G(x),h=.01,h3.x=0x=h,2h,3h,…,he−x21−hx+13(2x2−1)h2−16(2x3−3x)h3.
Ainsi, àx=0 ce produit est réduit à
.01(1−13×.0001)=.00999967,
sorte que pourG(.01)=.88622692−.00999967=.87622725.
⋮
Mais ... quelle précision pourrait-il avoir? OK, prenons 2.97 comme exemple:
Incroyable!
Passons à l'expression moderne (normalisée) du pdf gaussien:
Le pdf de N(0,1) est:
fX(X=x)=12π−−√e−x22=12π−−√e−(x2√)2=12π−−√e−(z)2
où z=x2√ . Et par conséquent, x=z×2–√ .
Alors, allons à R et cherchons le ... OK, pas si vite. Nous devons d’abord nous rappeler que s’il existe une constante qui multiplie l’exposant dans une fonction exponentielle , l’intégrale sera divisée par cet exposant: . Puisque nous essayons de reproduire les résultats dans les anciennes tables, nous multiplions en fait la valeur de par , ce qui devra apparaître dans le dénominateur.PZ(Z>z=2.97)eax1/ax2–√
De plus, Christian Kramp n’ayant pas normalisé, nous devons donc corriger les résultats donnés par R en conséquence, en multipliant par . La correction finale ressemblera à ceci:2π−−√
2π−−√2–√P(X>x)=π−−√P(X>x)
Dans le cas ci-dessus, et . Maintenant passons à R:z=2.97x=z×2–√=4.200214
(R = sqrt(pi) * pnorm(x, lower.tail = F))
[1] 0.00002363235e-05
Fantastique!
Allons au sommet de la table pour le plaisir, disons ...0.06
z = 0.06
(x = z * sqrt(2))
(R = sqrt(pi) * pnorm(x, lower.tail = F))
[1] 0.8262988
Que dit Kramp? .0.82629882
Si proche ...
La chose est ... à quelle distance, exactement? Après tous les votes positifs reçus, je ne pouvais pas laisser la réponse réelle en suspens. Le problème était que toutes les applications de reconnaissance optique de caractères (OCR) que j'avais essayées étaient incroyablement inactives - ce qui n'a rien d'étonnant si vous avez jeté un coup d'œil à l'original. J'ai donc appris à apprécier Christian Kramp pour la ténacité de son travail, car j'ai personnellement saisi chaque chiffre dans la première colonne de son tableau Première .
Après une aide précieuse de @Glen_b, il peut maintenant être très précis et il est prêt à copier et coller sur la console R dans ce lien GitHub .
Voici une analyse de la précision de ses calculs. Préparez vous...
- Différence cumulative absolue entre les valeurs [R] et l'approximation de Kramp:
0.000001200764 - en calculs, il a réussi à accumuler une erreur d'environ millionième!3011
- Erreur absolue moyenne (MAE) , ou
mean(abs(difference))
avecdifference = R - kramp
:
0.000000003989249 - il a réussi à commettre une erreur scandaleusement ridicule au milliardième en moyenne!3
Sur l'entrée dans laquelle ses calculs étaient les plus divergents par rapport à [R], la première décimale différente se situait à la huitième position (cent millionième). En moyenne (médiane), sa première "erreur" était dans le dixième chiffre décimal (dixième milliardième!). Et, bien qu'il ne soit absolument pas d'accord avec [R] dans aucun cas, l'entrée la plus proche ne divergent que jusqu'à la 13 entrée numérique.
- Différence relative moyenne ou
mean(abs(R - kramp)) / mean(R)
(identique à all.equal(R[,2], kramp[,2], tolerance = 0)
):
0.00000002380406
- Erreur quadratique moyenne (RMSE) ou écart (donne plus de poids aux erreurs importantes), calculé comme suit
sqrt(mean(difference^2))
:
0.000000007283493
Si vous trouvez une photo ou un portrait de Chistian Kramp, éditez ce message et placez-le ici.