Come faccio a capire quale tipo di distribuzione rappresenta questi dati nei tempi di risposta del ping?


22

Ho provato un processo del mondo reale, i tempi di ping della rete. Il "round-trip-time" è misurato in millisecondi. I risultati sono riportati in un istogramma:

testo alternativo

I tempi di ping hanno un valore minimo, ma una lunga coda superiore.

Voglio sapere che cos'è la distribuzione statistica e come stimarne i parametri.

Anche se la distribuzione non è una distribuzione normale, posso ancora mostrare ciò che sto cercando di ottenere.

La distribuzione normale utilizza la funzione:

testo alternativo

con i due parametri

  • μ (media)
  • σ 2  (varianza)

Stima dei parametri

Le formule per la stima dei due parametri sono:

testo alternativo

Applicando queste formule ai dati che ho in Excel, ottengo:

  • μ = 10.9558 (media)
  • σ 2  = 67.4578 (varianza)

Con questi parametri posso tracciare la distribuzione " normale " sopra i miei dati campionati:

testo alternativo

Ovviamente non è una distribuzione normale. Una distribuzione normale ha una coda superiore e inferiore infinita ed è simmetrica. Questa distribuzione non è simmetrica.


  • Quali principi dovrei applicare; quale diagramma di flusso dovrei applicare per determinare che tipo di distribuzione è?
  • Dato che la distribuzione non ha una coda negativa e una lunga coda positiva: quali distribuzioni corrispondono?
  • C'è un riferimento che abbina le distribuzioni alle osservazioni che stai prendendo?

E andando al sodo, qual è la formula per questa distribuzione e quali sono le formule per stimare i suoi parametri?


Voglio ottenere la distribuzione in modo da poter ottenere il valore "medio" e lo "spread": testo alternativo

In realtà sto tramando l'istogramma nel software e voglio sovrapporre la distribuzione teorica:

testo alternativo

Nota: inviato in modo incrociato da math.stackexchange.com


Aggiornamento : 160.000 campioni:

inserisci qui la descrizione dell'immagine

Mesi e mesi e innumerevoli sessioni di campionamento offrono tutte la stessa distribuzione. Ci deve essere una rappresentazione matematica.


Harvey suggerì di mettere i dati su una scala logaritmica. Ecco la densità di probabilità su una scala logaritmica:

inserisci qui la descrizione dell'immagine

Tag : campionamento, statistiche, stima dei parametri, distribuzione normale


Non è una risposta, ma un addendum alla domanda. Ecco i secchi di distribuzione. Penso che la persona più avventurosa potrebbe piacere incollarli in Excel (o in qualsiasi altro programma tu conosca) e scoprire la distribuzione.

I valori sono normalizzati

Time    Value
53.5    1.86885613545469E-5
54.5    0.00396197500716395
55.5    0.0299702228922418
56.5    0.0506460012708222
57.5    0.0625879919763777
58.5    0.069683415770654
59.5    0.0729476844872482
60.5    0.0508017392821101
61.5    0.032667605247748
62.5    0.025080049337802
63.5    0.0224138145845533
64.5    0.019703973188144
65.5    0.0183895443728742
66.5    0.0172059354870862
67.5    0.0162839664602619
68.5    0.0151688822994406
69.5    0.0142780608748739
70.5    0.0136924859524314
71.5    0.0132751080821798
72.5    0.0121849420031646
73.5    0.0119419907055555
74.5    0.0117114984488494
75.5    0.0105528076448675
76.5    0.0104219877153857
77.5    0.00964952717939773
78.5    0.00879608287754009
79.5    0.00836624596638551
80.5    0.00813575370967943
81.5    0.00760001495084908
82.5    0.00766853967581576
83.5    0.00722624372375815
84.5    0.00692099722163388
85.5    0.00679017729215205
86.5    0.00672788208763689
87.5    0.00667804592402477
88.5    0.00670919352628235
89.5    0.00683378393531266
90.5    0.00612361860383988
91.5    0.00630427469693383
92.5    0.00621706141061261
93.5    0.00596788059255199
94.5    0.00573115881539439
95.5    0.0052950923837883
96.5    0.00490886211579433
97.5    0.00505214108617919
98.5    0.0045413204091549
99.5    0.00467214033863673
100.5   0.00439181191831853
101.5   0.00439804143877004
102.5   0.00432951671380337
103.5   0.00419869678432154
104.5   0.00410525397754881
105.5   0.00440427095922156
106.5   0.00439804143877004
107.5   0.00408656541619426
108.5   0.0040616473343882
109.5   0.00389345028219728
110.5   0.00392459788445485
111.5   0.0038249255572306
112.5   0.00405541781393668
113.5   0.00393705692535789
114.5   0.00391213884355182
115.5   0.00401804069122759
116.5   0.0039432864458094
117.5   0.00365672850503968
118.5   0.00381869603677909
119.5   0.00365672850503968
120.5   0.00340131816652754
121.5   0.00328918679840026
122.5   0.00317082590982146
123.5   0.00344492480968815
124.5   0.00315213734846692
125.5   0.00324558015523965
126.5   0.00277213660092446
127.5   0.00298394029627599
128.5   0.00315213734846692
129.5   0.0030649240621457
130.5   0.00299639933717902
131.5   0.00308984214395176
132.5   0.00300885837808206
133.5   0.00301508789853357
134.5   0.00287803844860023
135.5   0.00277836612137598
136.5   0.00287803844860023
137.5   0.00265377571234566
138.5   0.00267246427370021
139.5   0.0027472185191184
140.5   0.0029465631735669
141.5   0.00247311961925171
142.5   0.00259148050783051
143.5   0.00258525098737899
144.5   0.00259148050783051
145.5   0.0023485292102214
146.5   0.00253541482376687
147.5   0.00226131592390018
148.5   0.00239213585338201
149.5   0.00250426722150929
150.5   0.0026288576305396
151.5   0.00248557866015474
152.5   0.00267869379415173
153.5   0.00247311961925171
154.5   0.00232984064886685
155.5   0.00243574249654262
156.5   0.00242328345563958
157.5   0.00231738160796382
158.5   0.00256656242602444
159.5   0.00221770928073957
160.5   0.00241705393518807
161.5   0.00228000448525473
162.5   0.00236098825112443
163.5   0.00216787311712744
164.5   0.00197475798313046
165.5   0.00203705318764562
166.5   0.00209311887170926
167.5   0.00193115133996985
168.5   0.00177541332868196
169.5   0.00165705244010316
170.5   0.00160098675603952
171.5   0.00154492107197588
172.5   0.0011150841608213
173.5   0.00115869080398191
174.5   0.00107770703811221
175.5   0.000946887108630378
176.5   0.000853444301857643
177.5   0.000822296699600065
178.5   0.00072885389282733
179.5   0.000753771974633393
180.5   0.000766231015536424
181.5   0.000566886361087923

1
Solo guardandolo, sembra una distribuzione normale distorta. Sei sicuro che i valori anomali siano necessari per la tua analisi?
Brandon Bertelsen il

1
La mia analisi consisterà esclusivamente nel tracciare un bel grafico sopra le barre :) Ma sarebbe barare fingere che non ci fosse la coda in alto ...
Ian Boyd,

Stai ricevendo molte idee utili per diverse distribuzioni. Per rispondere alla tua domanda "Voglio sapere che cos'è la distribuzione statistica", il solito metodo è un diagramma QQ, facile da generare in R.
Mike Dunlavey,

1
Naturalmente, se tutto ciò che vuoi è una curva uniforme, prendi tutti i tuoi dati, ordinali per creare un CDF empirico, levigalo e prendi la prima derivata numericamente. Questa è la tua curva.
Mike Dunlavey,

Risposte:


12

A volte Weibull viene utilizzato per modellare il tempo di ping. prova una distribuzione weibull. Per inserirne uno in R:

x<-rweibull(n=1000,shape=2,scale=100)
#generate a weibull (this should be your data).
hist(x)
#this is an histogram of your data.
library(survival)
a1<-survreg(Surv(x,rep(1,1000))~1,dist='weibull')
exp(a1$coef) #this is the ML estimate of the scale parameter
1/a1$scale     #this is the ML estimate of the shape parameter

Se ti stai chiedendo i nomi sciocchi (ovvero $ scale per ottenere l'inverso della forma) è perché "survreg" usa un'altra parametrizzazione (cioè è parametrizzata in termini di "weibull inverso" che è più comune nelle scienze attuariali) .


10

Consentitemi di porre una domanda più basilare: cosa volete fare con queste informazioni distributive?

Il motivo per cui lo chiedo è perché potrebbe avere più senso approssimare la distribuzione con una sorta di stimatore della densità del kernel, piuttosto che insistere sul fatto che rientri in una delle distribuzioni della famiglia esponenziale (eventualmente spostata). Puoi rispondere a quasi tutte le stesse domande a cui una distribuzione standard ti consente di rispondere e non devi preoccuparti (tanto) se hai selezionato il modello corretto.

Ma se c'è un tempo minimo fisso e devi avere una sorta di distribuzione parametrizzata in modo compatto per andare con esso, quindi solo osservandola mi sottrarrei al minimo e inserirò una gamma, come altri hanno suggerito.


voglio tracciare la curva di distribuzione teorica su di essa, trovare la media , la mediana , la deviazione standard . Per lo più mi piacerebbe la mediana, ma davvero voglio disegnare la curva teorica.
Ian Boyd,

1
Penso che Rich volesse dire qualcosa del tipo: "A che tipo di domanda stai cercando di rispondere?" Determinare la distribuzione dei dati è una domanda, sì, ma sicuramente c'è qualche altra domanda a cui ti aspetti di poter rispondere una volta che conosci la distribuzione. Che cos'è?
Matt Parker,

@MattParker voglio sapere qual è l'ora "di punta".
Ian Boyd,

2
@IanBoyd Non penso che tu abbia davvero bisogno di conoscere la distribuzione teorica per ottenerlo - funzionerebbe la mediana? E per l'ombreggiatura nelle "deviazioni standard" adiacenti, puoi semplicemente usare i quantili. Se il tuo obiettivo è comunicare quanto impiega la maggior parte dei ping, non vedo nulla di sbagliato nel riportare la mediana con i quantili del 25% e del 75%. Oppure, se si desidera emulare il 68% che rientra in 1 DS della media nella distribuzione normale, i quantili del 16% e dell'84%.
Matt Parker,

8

Non c'è motivo di aspettarsi che qualsiasi set di dati del mondo reale si adatti a una forma distributiva nota ... specialmente da una fonte di dati così disordinata.

Quello che vuoi fare con le risposte indicherà in gran parte un approccio. Ad esempio, se vuoi sapere quando i tempi del ping sono cambiati in modo significativo, allora la tendenza della distribuzione empirica potrebbe essere una strada da percorrere. Se si desidera identificare valori anomali, altre tecniche potrebbero essere più appropriate.


Voglio davvero disegnare la curva matematica che segue la distribuzione. Concesso, potrebbe non essere una distribuzione nota; ma non riesco a immaginare che questo non sia stato studiato prima.
Ian Boyd,

4
Cerca "stima della densità".
Peter R

6

Un approccio più semplice potrebbe essere quello di trasformare i dati. Dopo la trasformazione, potrebbe essere vicino a gaussiano.

Un modo comune per farlo è prendere il logaritmo di tutti i valori.

La mia ipotesi è che in questo caso la distribuzione del reciproco dei tempi di andata e ritorno sarà più simmetrica e forse vicina a quella gaussiana. Prendendo il reciproco, essenzialmente si tabulano le velocità anziché i tempi, quindi è ancora facile interpretare i risultati (a differenza dei logaritmi o di molte trasformazioni).


4

X~solun'mmun'(K,θ)

Aggiornamento - Processo di stima

θ^K^K^


stavo davvero facendo sforzi per evitare di menzionare la distribuzione Gamma. l'ho visto su Wikipedia, in realtà non riesco a trovare la formula per la distribuzione o le formule per stimare i parametri in quella formula. E poi sono diventato davvero nervoso quando ho visto "Non esiste una soluzione a forma chiusa per k". E l'ho provato comunque con alcune formule - ma quando ottieni un pacchetto che ritorna tra 0ms, ln (0) esplode.
Ian Boyd,

Perché mentre ho una buona comprensione della distribuzione normale, dai miei giorni universitari, sono sopra la mia testa quando arriviamo a cose come "divergenza Kullback-Leibler" .
Ian Boyd,

Se hai un pacchetto che ritorna tra 0ms non è "davvero" zero, giusto? Forse, puoi impostarlo su un valore piccolo e in ogni caso non devi preoccuparti di ln (0) come parametroKnon fa riferimento ai dati che hai. Aggiornerò la mia risposta con alcuni dettagli sul processo di stima.

Sì, tecnicamente dovrebbe essere indicato come <1ms. E questo diagramma non include zero, perché sta passando su un collegamento a latenza superiore (modem). Ma posso anche eseguire il programma su un collegamento più veloce (ovvero eseguire il ping di un'altra macchina sulla LAN), e ottenere regolarmente <1mse 1ms, con molte meno occorrenze di 2ms. Purtroppo Windows fornisce solo la risoluzione di 1ms. potrei cronometrarlo manualmente usando un contatore ad alte prestazioni, ottenendo µs; ma speravo ancora di riuscire a metterli in secchi (per risparmiare memoria). Forse dovrei aggiungere 1ms a tutto ...1ms ==> (0..1]
Ian Boyd il

semplicemente adattando le gamme con R: docs.google.com/…
apeescape il

4

Un altro approccio, che è più giustificato dalle considerazioni di rete, è quello di cercare di adattare una somma di esponenziali indipendenti con parametri diversi. Un presupposto ragionevole sarebbe che ciascun nodo nel percorso del ping sarebbe un esponenziale indipendente, con parametri diversi. Un riferimento alla forma distributiva della somma di esponenziali indipendenti con parametri diversi è http://www.math.bme.hu/~balazs/sumexp.pdf .

Probabilmente dovresti anche guardare i tempi di ping rispetto al numero di hop.


3

Guardandolo direi che una distribuzione normale o forse binormale potrebbe adattarsi bene.

In R è possibile utilizzare la snlibreria per gestire la distribuzione e l'inclinazione normali obliqua nlso mleper eseguire un adattamento minimo non lineare o una massima probabilità di estinzione dei dati.

===

EDIT: rileggendo la tua domanda / commenti aggiungerei qualcosa in più

Se quello che ti interessa è solo disegnare un bel grafico sopra le barre, dimentica le distribuzioni, a chi importa alla fine se non ci fai nulla. Basta disegnare una B-spline sul punto dati e sei bravo.

Inoltre, con questo approccio eviti di dover implementare un algoritmo di adattamento MLE (o simile) e sei coperto nel caso di una distribuzione che non è normale (o qualunque cosa tu scelga di disegnare)


+1 ho pensato anche al binomio, quando ho visto per la prima volta l'istogramma. (Non sono sicuro del motivo per cui questo è stato downvoted).
Doug,

Beh, non sono solo belle linee. Vorrei anche essere in grado di indicare il vero "picco" nella curva, nonché l'ombra in un'unità di deviazione standard su entrambi i lati.
Ian Boyd,

@IanBoyd: una B-spline sarà sufficiente per queste cose, soprattutto perché l'istogramma ha una risoluzione relativamente bassa. Quindi, dipende sempre da cosa intendi per picco "vero".
nico,

2

Sulla base del tuo commento "Voglio davvero disegnare la curva matematica che segue la distribuzione. Concesso potrebbe non essere una distribuzione nota; ma non riesco a immaginare che questo non sia stato studiato prima." Sto fornendo una funzione che si adatta a questo.

Dai un'occhiata a ExtremeValueDistribution

Ho aggiunto un'ampiezza e reso diverse le due beta. Immagino che il centro della tua funzione sia più vicino a 9.5 e poi a 10.

Nuova funzione: a E ^ (- E ^ (((- x + alpha) / b1)) + (-x + alpha) / b2) / ((b1 + b2) / 2)

{alpha-> 9.5, b2 -> 0.899093, a -> 5822.2, b1 -> 0.381825}

Wolfram alpha : trama 11193.8 E ^ (- E ^ (1.66667 (10 - x)) + 1.66667 (10 - x)), x 0..16, y da 0 a 4500

Alcuni punti intorno a 10 ms:
{{9, 390.254}, {10, 3979.59}, {11, 1680.73}, {12, 562.838}}

La coda non si adatta perfettamente però. La coda può adattarsi meglio se b2 è più basso e il picco è scelto per essere più vicino a 9.


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.