Chi ha creato la prima tabella normale standard?


61

Sto per introdurre la tabella normale standard nella mia classe di statistiche introduttive e questo mi ha fatto riflettere: chi ha creato la prima tabella normale standard? Come hanno fatto prima che arrivassero i computer? Rabbrividisco al pensiero di qualcuno che forza bruta calcolando a mano un migliaio di somme di Riemann.


5
Bello vedere qualcuno che vuole avere un insegnamento storicamente informato.
mdewey,

Risposte:


62

Laplace è stato il primo a riconoscere la necessità della tabulazione, presentando l'approssimazione:

G(x)=xet2dt(1)=1x12x3+134x51358x7+135716x9+

Il primo tavolo moderno della distribuzione normale fu in seguito costruito dall'astronomo francese Christian Kramp in Analizza le riforme astronomiche e terrestri (Par citoyen Kramp, Professeur de Chymie et of Physique expérimentale at the central center of Département de la Roer, 1799) . Da tabelle relative alla distribuzione normale: una breve storia Autore / i: Herbert A. David Fonte: The American Statistician, Vol. 59, n. 4 (novembre 2005), pagg. 309-311 :

Ambiziosamente, Kramp ha fornito tabelle otto decimali ( D) fino a D a D a e da D a insieme alle differenze necessarie per l'interpolazione. Scrivendo le prime sei derivate di usa semplicemente un'espansione della serie di Taylor di su con fino al termine inQuesto gli consente di procedere passo dopo passo da a moltiplicando per8x=1.24, 91.50, 101.99,113.00G(x),G(x+h)G(x),h=.01,h3.x=0x=h,2h,3h,,hex2

1hx+13(2x21)h216(2x33x)h3.
Pertanto, a questo prodotto si riduce a quindi ax=0
.01(113×.0001)=.00999967,
G(.01)=.88622692.00999967=.87622725.


inserisci qui la descrizione dell'immagine

inserisci qui la descrizione dell'immagine

inserisci qui la descrizione dell'immagine

Ma ... quanto potrebbe essere accurato? OK, prendiamo come esempio:2.97

inserisci qui la descrizione dell'immagine

Sorprendente!

Passiamo all'espressione moderna (normalizzata) del pdf gaussiano:

Il pdf di è:N(0,1)

fX(X=x)=12πex22=12πe(x2)2=12πe(z)2

dove . E quindi, .z=x2x=z×2

Quindi andiamo su R e cerchiamo ... OK, non così in fretta. Innanzitutto dobbiamo ricordare che quando c'è una costante che moltiplica l'esponente in una funzione esponenziale , l'integrale verrà diviso per quell'esponente: . Dato che miriamo a replicare i risultati nelle vecchie tabelle, stiamo moltiplicando il valore di per , che dovrà apparire nel denominatore.PZ(Z>z=2.97)eax1/ax2

Inoltre, Christian Kramp non si è normalizzato, quindi dobbiamo correggere i risultati forniti da R di conseguenza, moltiplicando per . La correzione finale sarà simile a questa:2π

2π2P(X>x)=πP(X>x)

Nel caso sopra, e . Ora andiamo a R:z=2.97x=z×2=4.200214

(R = sqrt(pi) * pnorm(x, lower.tail = F))
[1] 0.00002363235e-05

Fantastico!

Andiamo in cima al tavolo per divertimento, diciamo ...0.06

z = 0.06
(x = z * sqrt(2))

(R = sqrt(pi) * pnorm(x, lower.tail = F))
[1] 0.8262988

Cosa dice Kramp? .0.82629882

Così vicino...


Il fatto è ... quanto vicino, esattamente? Dopo aver ricevuto tutti i voti positivi, non ho potuto lasciare in sospeso la risposta effettiva. Il problema era che tutte le applicazioni di riconoscimento ottico dei caratteri (OCR) che ho provato erano incredibilmente fuori - non sorprende se hai dato un'occhiata all'originale. Così, ho imparato ad apprezzare Christian Kramp per la tenacia del suo lavoro mentre scrivevo personalmente ogni cifra nella prima colonna del suo Table Première .

Dopo un prezioso aiuto da parte di @Glen_b, ora potrebbe benissimo essere accurato, ed è pronto per essere copiato e incollato sulla console R in questo link GitHub .

Ecco un'analisi della precisione dei suoi calcoli. Preparati...

  1. Differenza cumulativa assoluta tra i valori [R] e l'approssimazione di Kramp:

0.000001200764 - nel corso di calcoli, è riuscito ad accumulare un errore di circa milionesimo!3011

  1. Errore assoluto medio (MAE) omean(abs(difference))condifference = R - kramp:

0.000000003989249 - è riuscito a fare un oltraggiosamente ridicolo errori un miliardesimo in media!3

Alla voce in cui i suoi calcoli erano più divergenti rispetto a [R], il primo diverso valore decimale era in ottava posizione (centomilionesimo). In media (mediana) il suo primo "errore" è stato nella decima cifra decimale (decima miliardesima!). E, sebbene non fosse pienamente d'accordo con [R] in nessun caso, la voce più vicina non diverge fino alla tredici voce digitale.

  1. Differenza relativa media o mean(abs(R - kramp)) / mean(R)(uguale a all.equal(R[,2], kramp[,2], tolerance = 0)):

0.00000002380406

  1. Errore quadratico medio di radice (RMSE) o deviazione (dà più peso agli errori di grandi dimensioni), calcolato comesqrt(mean(difference^2)):

0.000000007283493


Se trovi una foto o un ritratto di Chistian Kramp, modifica questo post e inseriscilo qui.


4
È bello avere i due riferimenti diversi e penso che i dettagli aggiuntivi (come l'espansione esplicita che Laplace ha dato per la coda superiore) qui siano buoni.
Glen_b,

1
Questo è ancora meglio con l'ultima modifica, ma non posso votare due volte: roba eccellente. Si noti che l'articolo di David spiega perché la tabella di Kramp non aveva accuratezza per tutte le cifre mostrate (è stato eseguito un piccolo errore nel primo passaggio) - ma è ancora più che sufficiente per la maggior parte delle applicazioni statistiche
Glen_b

2
@ OlivierGrégoire Grazie per aver sottolineato la mia cifra decimale errata. Ora è stato corretto. Sono cresciuto in un'epoca in cui il francese era un must e non significava in alcun modo mancare di rispetto al mio bizzarro uso della lingua (c'è un riferimento lì dentro, ma non importa), che ho invertito. Per quanto riguarda "citoyen Kramp", un tentativo di evidenziare le forme storiche di introduzione nel documento.
Antoni Parellada,

1
Ehi, mi dispiace che tu abbia pensato che questo fosse un commento violento. Stavo solo indicando delle cose, non sto assolutamente dicendo che non rispettavi nulla. Puoi punire o esagerare (o persino fare un riferimento), ovviamente. Ma da ragazzo di lingua francese, non l'ho capito (è quello che ho cercato di trasmettere, almeno). "Le citoyen Kramp" non ha avuto problemi: ho appena copiato e messo le virgolette, perché non era inglese. Scusa se hai sentito che era un commento sconcertante, non lo è. Anche il mio uso dell'inglese è carente. ^^ Il tuo confronto è stato ben fatto!
Olivier Grégoire,

1
@ P.Windridge Scusa ... mi sono reso conto di avere un sacco di collegamenti ipertestuali rotti ...
Antoni Parellada,

32

Secondo HA David [1] Laplace riconobbe la necessità di tabelle della distribuzione normale "già nel 1783" e la prima tabella normale fu prodotta da Kramp nel 1799.

Laplace ha suggerito due approssimazioni in serie, una per l'integrale da a di (che è proporzionale a una distribuzione normale con varianza ) e una per la coda superiore.0xet212

Tuttavia, Kramp non ha usato queste serie di Laplace, poiché negli intervalli c'era un divario per il quale potevano essere utilmente applicate.

In effetti, inizia con l'integrale per l'area di coda da 0 e quindi applica un'espansione di Taylor sull'ultimo integrale calcolato - ovvero, mentre calcola nuovi valori nella tabella, sposta la della sua espansione di Taylor di (dove è l'integrale che dà l'area della coda superiore).xG(x+h)G

Per essere precisi, citando la coppia pertinente di frasi:

usa semplicemente un'espansione in serie di Taylor di su , con , fino al termine in . Questo gli consente di procedere passo dopo passo da a , moltiplicando perPertanto, a questo prodotto si riduce a modo che a . Il termine successivo a sinistra di (4) può essere mostrato come , quindi la sua omissione è giustificata.G(x+h)G(x)h=.01h3x=0x=h,2h,3h,...hex2x=0.01(1-1

1hx+13(2x21)h216(2x33x)h3.
x=0G ( .01 ) = ,88,622692 millions - ,00,999967 millions = ,87,622725 millions 10 - 9
.01(113×.0001)=.00999967,(4)
G(.01)=.88622692.00999967=.87622725109

David indica che i tavoli erano ampiamente usati.

Quindi, anziché migliaia di somme di Riemann, sono state centinaia le espansioni di Taylor.


In una nota più piccola, in un pizzico (bloccato solo con una calcolatrice e alcuni valori ricordati dalla tabella normale) ho applicato con successo la regola di Simpson (e le relative regole per l'integrazione numerica) per ottenere una buona approssimazione ad altri valori; non è tutto che noioso per produrre una tabella abbreviato * a poche figure di precisione. [Per produrre tabelle della scala e della precisione di Kramp sarebbe un compito abbastanza grande, anche se usando un metodo più intelligente, come ha fatto lui.]

* Per tabella abbreviata, intendo quella in cui puoi sostanzialmente cavartela con l'interpolazione tra valori tabulari senza perdere troppa precisione. Se vuoi solo dire una precisione di circa 3 cifre, non hai davvero bisogno di calcolare tutti quei valori. Ho effettivamente usato l'interpolazione polinomiale (più precisamente, tecniche di differenza finita applicate), che consente una tabella con meno valori dell'interpolazione lineare - se un po 'più di sforzo nella fase di interpolazione - e ho anche fatto interpolazione con una trasformazione logit, che rende l'interpolazione lineare notevolmente più efficace, ma è molto utile solo se si dispone di una buona calcolatrice).

[1] Herbert A. David (2005),
"Tabelle relative alla distribuzione normale: una breve storia"
The American Statistician , Vol. 59, n. 4 (novembre), pagg. 309-311

[2] Kramp (1799),
Analyse des Réfractions Astronomiques et Terrestres,
Lipsia: Schwikkert


0

Problema interessante! Penso che la prima idea non sia nata attraverso l'integrazione di una formula complessa; piuttosto, il risultato dell'applicazione degli asintotici in combinatoria. Il metodo carta e penna può richiedere diverse settimane; non così duro per Karl Gauss rispetto al calcolo della torta per i suoi predecessori. Penso che l'idea di Gauss fosse coraggiosa; il calcolo è stato facile per lui.

Esempio di creazione di una tabella z standard da zero-
1. Prendi una popolazione di n (diciamo che n è 20) numeri ed elenca tutti i possibili campioni di dimensione r (diciamo che r è 5) da quello.
2. calcolare le medie del campione. Ottieni medie di esempio nCr (qui, 20c5 = 15504 significa).
3. La loro media è uguale alla media della popolazione. Trova lo stdev dei mezzi di esempio.
4. Trova i punteggi z dei mezzi di campionamento usando quei mezzi pop e stdev dei mezzi di campionamento.
5. Ordinare z in ordine crescente e trovare la probabilità che z si trovi in ​​un intervallo nei valori nCr z.
6. Confronta i valori con le normali tabelle. N più piccolo è buono per i calcoli manuali. Una n maggiore produrrà approssimazioni più vicine ai valori normali della tabella.

Il seguente codice è in r:

n <- 20  
r <- 5  

p <- sample(1:40,n)  # Don't be misled!! Here, 'sample' is an r function  
                     used to produce n random numbers between 1 and 40.  
                     You can take any 20 numbers, possibly all different.  

c <- combn(p, r)     # all the nCr samples listed  
cmean <- array(0)  

for(i in 1:choose(n,r)) {  
    cmean[i] <- mean(c[,i])  
                }  

z <- array(0)  
for(i in 1:choose(n,r)) {  
    z[i] <- (cmean[i]-mean(c))/sd(cmean)  
                }  

ascend <- sort(z, decreasing = FALSE)  

Probabilità di z che cade tra 0 e valore positivo q sotto; confrontare con una tabella nota. Manipola q sotto tra 0 e 3.5 per confrontare.

q <- 1  
probability <- (length(ascend[ascend<q])-length(ascend[ascend<0]))/choose(n,r)   
probability   # For example, if you use n=30 and r=5, then for q=1, you  
              will get probability is 0.3413; for q=2, prob is 0.4773

3
Non vedo come il campionamento possa essere utilizzato in questo modo per generare le tabelle. Penso che l'OP volesse solo sapere chi era la prima persona
Michael Chernick il

Grazie per il tuo prezioso commento Michael Chernick. 1) L'OP scrive "Come hanno fatto prima che arrivassero i computer? Rabbrividisco al pensiero di qualcuno che bruta la forza informatica che calcola mille somme di Riemann a mano." Ho provato a rispondere a quella parte. 2) Il termine "campione" non è di per sé un campione, è una funzione r per produrre un elenco di numeri casuali. Possiamo semplicemente prendere qualsiasi numero 20 al posto. Vedere la r collegamento di supporto qui stackoverflow.com/questions/17773080/...
Md Towhidul Islam
Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.