Como faço para descobrir que tipo de distribuição representa esses dados nos tempos de resposta do ping?


22

Eu experimentei um processo do mundo real, tempos de ping da rede. O "tempo de ida e volta" é medido em milissegundos. Os resultados são plotados em um histograma:

texto alternativo

Os tempos de ping têm um valor mínimo, mas uma cauda superior longa.

Quero saber qual é a distribuição estatística e como estimar seus parâmetros.

Mesmo que a distribuição não seja normal, ainda posso mostrar o que estou tentando alcançar.

A distribuição normal usa a função:

texto alternativo

com os dois parâmetros

  • μ (média)
  • σ 2  (variação)

Estimativa de parâmetros

As fórmulas para estimar os dois parâmetros são:

texto alternativo

Aplicando essas fórmulas aos dados que tenho no Excel, recebo:

  • μ = 10,9558 (média)
  • σ 2  = 67,4578 (variância)

Com esses parâmetros, posso traçar a distribuição " normal " sobre meus dados amostrados:

texto alternativo

Obviamente, não é uma distribuição normal. Uma distribuição normal possui uma cauda infinita superior e inferior e é simétrica. Essa distribuição não é simétrica.


  • Que princípios eu aplicaria; que fluxograma eu aplicaria para determinar que tipo de distribuição é essa?
  • Dado que a distribuição não tem cauda negativa e cauda longa positiva: que distribuições correspondem a isso?
  • Existe uma referência que corresponda às distribuições às observações que você está fazendo?

E indo direto ao ponto, qual é a fórmula para essa distribuição e quais são as fórmulas para estimar seus parâmetros?


Quero obter a distribuição para obter o valor "médio" e o "spread": texto alternativo

Na verdade, estou plotando o histograma em software e quero sobrepor a distribuição teórica:

texto alternativo

Nota: Postagens cruzadas de math.stackexchange.com


Atualização : 160.000 amostras:

insira a descrição da imagem aqui

Meses e meses, e inúmeras sessões de amostragem, oferecem a mesma distribuição. Não deve ser uma representação matemática.


Harvey sugeriu colocar os dados em uma escala de log. Aqui está a densidade de probabilidade em uma escala de log:

insira a descrição da imagem aqui

Tags : amostragem, estatística, estimativa de parâmetros, distribuição normal


Não é uma resposta, mas um adendo à pergunta. Aqui estão os baldes de distribuição. Acho que a pessoa mais aventureira pode colá-los no Excel (ou qualquer outro programa que você conheça) e pode descobrir a distribuição.

Os valores são normalizados

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
Só de olhar, parece uma distribuição normal distorcida. Você tem certeza de que os valores discrepantes são necessários para sua análise?
Brandon Bertelsen

1
Minha análise vai consistir apenas de desenhar um gráfico muito over-top bares :) Mas seria enganar para fingir que não havia cauda topo ...
Ian Boyd

Você está recebendo muitas idéias úteis para diferentes distribuições. Para responder à sua pergunta: "Eu quero saber o que distribuição estatística isto é", o método usual é um gráfico QQ, fácil de gerar em R.
Mike Dunlavey

1
Obviamente, se tudo o que você deseja é uma curva suave, pegue todos os seus dados, classifique-os para criar um CDF empírico, suavize-os e use a primeira derivada numericamente. Essa é a sua curva.
precisa saber é o seguinte

Respostas:


12

Às vezes, o Weibull é usado para modelar o tempo de ping. tente uma distribuição weibull. Para encaixar um em 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 você está se perguntando pelos nomes patetas (por exemplo, $ scale para obter o inverso da forma), é porque "survreg" usa outra parametrização (isto é, é parametrizado em termos do "inverso weibull", que é mais comum em ciências atuariais) .


10

Deixe-me fazer uma pergunta mais básica: o que você quer fazer com essa informação distributiva?

A razão pela qual pergunto é porque pode fazer mais sentido aproximar a distribuição com algum tipo de estimador de densidade do kernel, em vez de insistir que ela se encaixe em uma das distribuições familiares exponenciais (possivelmente alteradas). Você pode responder quase todos os mesmos tipos de perguntas que uma distribuição padrão permitirá que você responda, e não precisa se preocupar (muito) sobre se selecionou o modelo correto.

Mas se houver um tempo mínimo fixo e você precisar de algum tipo de distribuição parametrizada de forma compacta para acompanhá-lo, apenas olhando para cima eu subtrairia o mínimo e ajustaria uma gama, como outros sugeriram.


Eu quero desenhar a curva de distribuição teórica sobre ela, encontrar a média , a mediana e o desvio padrão . Gostaria principalmente da mediana, mas realmente quero desenhar a curva teórica.
Ian Boyd

1
Acho que Rich quis dizer algo como: "Que tipo de pergunta você está tentando responder?" Determinar a distribuição dos dados é uma pergunta, sim, mas certamente há outra pergunta que você espera poder responder depois de conhecer a distribuição. O que é isso?
Matt Parker

@ MattParker eu quero saber o que é o tempo de "pico".
Ian Boyd

2
@IanBoyd Eu não acho que você realmente precise conhecer a distribuição teórica para conseguir isso - a mediana funcionaria? E para sombreamento nos 'desvios padrão' adjacentes, você pode apenas usar quantis. Se seu objetivo é comunicar quanto tempo a maioria dos pings leva, não vejo nada errado em relatar a mediana com os quantis de 25% e 75%. Ou, se você deseja emular os 68% que caem dentro de 1 SD da média na distribuição normal, os quantis de 16% e 84%.
Matt Parker

8

Não há razão para esperar que qualquer conjunto de dados do mundo real caiba em uma forma distributiva conhecida ... especialmente a partir de uma fonte de dados tão bagunçada conhecida.

O que você quer fazer com as respostas indica em grande parte uma abordagem. Por exemplo, se você deseja saber quando os tempos de ping foram alterados significativamente, a tendência da distribuição empírica pode ser um caminho a percorrer. Se você deseja identificar discrepâncias, outras técnicas podem ser mais apropriadas.


Realmente eu quero desenhar a curva matemática que segue a distribuição. Concedido que pode não ser uma distribuição conhecida; mas não consigo imaginar que isso não tenha sido investigado antes.
Ian Boyd

4
Procure 'estimativa de densidade'.
PeterR

6

Uma abordagem mais simples pode ser transformar os dados. Após a transformação, pode ser perto de Gaussian.

Uma maneira comum de fazer isso é usar o logaritmo de todos os valores.

Meu palpite é que, neste caso, a distribuição do tempo recíproco dos tempos de ida e volta será mais simétrica e talvez próxima de gaussiana. Ao usar o recíproco, você está essencialmente tabulando velocidades em vez de tempos, portanto ainda é fácil interpretar os resultados (diferentemente dos logaritmos ou de muitas transformações).


4

xGamma(k,θ) vir da gama no wiki, verá que existem alguns gráficos parecidos com o que você possui.

Atualização - Processo de estimativa

θ^k^k^


eu estava realmente indo para os esforços para evitar mencionar a distribuição Gamma. eu vi na Wikipedia, na verdade não consigo encontrar a fórmula para a distribuição ou as fórmulas para estimar os parâmetros nessa fórmula. E então fiquei muito nervoso quando vi "Não existe uma solução de forma fechada para k". E eu tentei mesmo assim com algumas fórmulas - mas quando você obtém um pacote que volta em 0ms, o ln (0) explode.
Ian Boyd

Porque, embora eu tenha um bom entendimento da distribuição normal, desde os meus dias de universidade, estou excedente quando chegamos a coisas como "divergência entre Kullback e Leibler" .
Ian Boyd

knão se refere aos dados que você possui. Vou atualizar minha resposta com alguns detalhes sobre o processo de estimativa.

Sim, tecnicamente deve ser referido como <1ms . E esse gráfico não inclui zero, porque está passando por um link de latência mais alta (modem). Mas eu posso rodar o programa da melhor maneira possível através de um link mais rápido (ou seja, executar ping em outra máquina na LAN) e obter rotineiramente <1mse 1ms, com muito menos ocorrências de 2ms. Infelizmente, o Windows fornece apenas resolução de 1ms. eu poderia cronometrar manualmente usando um contador de alto desempenho, obtendo µs; mas eu ainda esperava poder colocá-los em baldes (para economizar memória). Talvez eu deveria adicionar 1ms de tudo ...1ms ==> (0..1]
Ian Boyd

simplesmente ajustando gama com R: docs.google.com/…
apeescape

4

Outra abordagem, que é mais justificada por considerações de rede, é tentar ajustar uma soma de exponenciais independentes com parâmetros diferentes. Uma suposição razoável seria que cada nó no caminho do ping o atraso seria um exponencial independente, com parâmetros diferentes. Uma referência à forma distributiva da soma de exponenciais independentes com parâmetros diferentes é http://www.math.bme.hu/~balazs/sumexp.pdf .

Você provavelmente também deve observar os tempos de ping versus o número de saltos.


3

Olhando para ele, eu diria que uma distribuição normal normal ou possivelmente uma distribuição binormal pode se encaixar bem.

Em R você pode usar o sn biblioteca para lidar com a distribuição normal de inclinação e usar nlsou mlefazer um ajuste mínimo de quadrado não linear ou de extimação de probabilidade máxima de seus dados.

===

EDIT: relendo sua pergunta / comentários eu acrescentaria algo mais

Se você está interessado apenas em desenhar um gráfico bonito sobre as barras, esqueça as distribuições, quem se importa no final, se você não está fazendo nada com isso. Basta desenhar um B-spline sobre seu ponto de dados e você estará bem.

Além disso, com essa abordagem, você evita a necessidade de implementar um algoritmo de ajuste do MLE (ou similar) e é abordado no caso de uma distribuição que não é normal de inclinação (ou o que você escolher desenhar)


+1 eu pensei binomial também, quando vi o histograma pela primeira vez. (Não sei por que isso foi prejudicado).
doug

Bem, não são apenas linhas bonitas. eu também gostaria de poder apontar para o verdadeiro "pico" na curva, bem como sombrear em uma unidade de desvio padrão de cada lado.
Ian Boyd

@IanBoyd: Um spline B será suficiente para essas coisas, especialmente porque o histograma é de baixa resolução. Então, sempre depende do que você quer dizer com pico "verdadeiro".
Nico

2

Com base no seu comentário "Realmente quero desenhar a curva matemática que segue a distribuição. É possível que não seja uma distribuição conhecida; mas não posso imaginar que isso não tenha sido investigado antes". Estou fornecendo uma função que se encaixa.

Dê uma olhada em ExtremeValueDistribution

Eu adicionei uma amplitude e tornei os dois betas diferentes. Eu acho que o centro da sua função está mais próximo de 9,5 e 10.

Nova função: a E ^ (- E ^ (((- x + alfa) / b1)) + (-x + alfa) / b2) / ((b1 + b2) / 2)

{alfa-> 9,5, b2 -> 0,899093, a -> 5822,2, b1 -> 0,381825}

Alfa de Wolfram : plot 11193,8 E ^ (- E ^ (1,666667 (10 - x)) + 1,666667 (10 - x)), x 0..16, y de 0 a 4500

Alguns pontos em torno de 10ms:
{{9, 390.254}, {10, 3979.59}, {11, 1680.73}, {12, 562.838}}

Cauda não se encaixa perfeitamente embora. A cauda pode ser ajustada melhor se b2 for mais baixo e o pico for escolhido para ficar mais próximo de 9.


Ao utilizar nosso site, você reconhece que leu e compreendeu nossa Política de Cookies e nossa Política de Privacidade.
Licensed under cc by-sa 3.0 with attribution required.