Abbiamo implementato alcuni tipi di test statistici di ipotesi, uno dei quali è il test del modello adatto del chi quadrato - un test del chi quadrato del numero di campioni in contenitori determinati dal CDF inverso della distribuzione di probabilità data. Quindi, per esempio, per testare la generazione del campione di distribuzione di Cauchy, eseguo qualcosa del genere
with(Statistics):
infolevel[Statistics] := 1:
distribution := CauchyDistribution(2, 3):
sample := Sample(distribution, 10^6):
ChiSquareSuitableModelTest(sample, distribution, 'bins' = 100, 'level' = 0.001);
Dato che posso generare un campione grande quanto mi pare, posso rendere piuttosto piccolo.α
Per le distribuzioni con momenti finiti, computo da un lato un numero di momenti campione e, dall'altro, calcolo simbolicamente i corrispondenti momenti di distribuzione e il loro errore standard. Ad esempio, per la distribuzione beta:
with(Statistics):
distribution := BetaDistribution(2, 3):
distributionMoments := Moment~(distribution, [seq(1 .. 10)]);
standardErrors := StandardError[10^6]~(Moment, distribution, [seq(1..10)]);
evalf(distributionMoments /~ standardErrors);
Questo mostra un elenco decrescente di numeri, l'ultimo dei quali è 255.1085766. Quindi, anche per il decimo momento, il valore del momento è più di 250 volte il valore dell'errore standard del momento del campione per un campione di dimensioni . Ciò significa che posso implementare un test che viene eseguito più o meno come segue:106
with(Statistics):
sample := Sample(BetaDistribution(2, 3), 10^6):
sampleMoments := map2(Moment, sample, [seq(1 .. 10)]);
distributionMoments := [2/5, 1/5, 4/35, 1/14, 1/21, 1/30, 4/165, 1/55, 2/143, 1/91];
standardErrors :=
[1/5000, 1/70000*154^(1/2), 1/210000*894^(1/2), 1/770000*7755^(1/2),
1/54600*26^(1/2), 1/210000*266^(1/2), 7/5610000*2771^(1/2),
1/1567500*7809^(1/2), 3/5005000*6685^(1/2), 1/9209200*157366^(1/2)];
deviations := abs~(sampleMoments - distributionMoments) /~ standardErrors;
I numeri entrano distributionMoments
e standardErrors
vengono dalla prima corsa sopra. Ora, se la generazione del campione è corretta, i numeri nelle deviazioni dovrebbero essere relativamente piccoli. Presumo che siano approssimativamente distribuiti normalmente (cosa che non sono realmente, ma si avvicina abbastanza - ricordo che si tratta di versioni ridimensionate di momenti campione, non dei campioni stessi) e quindi posso, ad esempio, contrassegnare un caso in cui si trova una deviazione maggiore di 4 - corrispondente a un momento del campione che devia più di quattro volte l'errore standard dal momento della distribuzione. È molto improbabile che ciò accada a caso se la generazione del campione è buona. D'altra parte, se i primi 10 momenti di campionamento corrispondono a quelli di distribuzione entro meno del mezzo percento, abbiamo una buona approssimazione della distribuzione.