Como calcular média, mediana, modo, std dev da distribuição

8

Como calcular média, variância, mediana, desvio padrão e modo de distribuição? Se eu gerar aleatoriamente números que formam a distribuição normal, especifiquei a média como m=24.2desvio padrão como sd=2.2:

> dist = rnorm(n=1000, m=24.2, sd=2.2)

Então eu posso fazer o seguinte:

Significar:

> mean(dist)
[1] 24.17485

Variação:

> var(dist)
[1] 4.863573

Mediana:

> median(dist)
[1] 24.12578

Desvio padrão:

> sqrt(var(dist))
[1] 2.205351

Modo aka Modus (retirado daqui ):

> names(sort(-table(dist)))[1]
[1] "17.5788181686221"
  1. Essa é toda a mágica ou há algo mais que eu não percebi?
  2. De alguma forma, posso visualizar minha distribuição normal em forma de sino com linhas verticais representando (média, mediana ...)?
  3. O que esses atributos dizem sobre distribuição?

PS: o código está em R

Wakan Tanka
fonte
Não está claro o que você quer dizer com sua pergunta 1. A questão 3 parece ampla demais, pois é possível escrever muito sobre cada uma. Você poderia revisar as páginas da Wikipedia sobre média, mediana, desvio padrão e modo, e depois perguntar algo mais específico?
Glen_b -Reinstala Monica
Além disso, seu título fala de uma "distribuição", mas o texto do seu corpo parece se referir a uma amostra . Seu título deve se referir a uma amostra?
Glen_b -Reinstala Monica
@Glen_b by 1st Quero dizer que, se os métodos que eu publiquei são válidos para o cálculo de parâmetros (média, variação ...) para distribuição ou outra coisa ou de alguma forma diferente, devem ser usados? 3º Eu não percebi que é muito amplo, esperava respostas como: se a mediana for maior que a média, então seus dados ... Em relação à redigitação, talvez esteja correto, na verdade eu estava trabalhando com distribuição normal ou estou errado?
Wakan Tanka 19/06/2015
Sinto muito, mas não posso seguir o seu comentário.
Glen_b -Reinstate Monica
Você não precisa classificar uma variável contínua antes de poder estimar seu modo. Consulte stats.stackexchange.com/questions/176112/… para discussão. (Você deve querer evitar binning como dependente de escolhas arbitrárias de largura bin e origem.)
Nick Cox

Respostas:

10

Primeiro, um comentário geral sobre o modo:

Você não deve usar essa abordagem para obter o modo de (pelo menos nocionalmente) dados continuamente distribuídos; é improvável que você tenha valores repetidos (a menos que você tenha amostras realmente grandes, seria um pequeno milagre, e mesmo assim vários problemas numéricos podem fazê-lo se comportar de maneiras um tanto inesperadas), e geralmente você obtém apenas o valor mínimo que caminho. Seria uma maneira de encontrar um dos modos globais em dados discretos ou categóricos, mas eu provavelmente não faria dessa maneira ainda. Aqui estão várias outras abordagens para obter o modo para dados discretos ou categóricos:

x = rpois(30,12.3)

tail(sort(table(x)),1)   #1: category and count; if multimodal this only gives one

w=table(x); w[max(w)==w] #2: category and count; this can find more than one mode

which.max(table(x))      #3: category and *position in table*; only finds one mode

Se você deseja apenas o valor e não a contagem ou posição, names()obtém-o daqueles

Para identificar modos (pode haver mais de um modo local) para dados contínuos de uma maneira básica, você pode classificar os dados (como em um histograma) ou suavizá-los (usando, densitypor exemplo) e tentar encontrar um ou mais modos dessa maneira.

Menos caixas de histograma tornarão sua estimativa de um modo menos sujeita a ruído, mas o local não será fixado em uma posição melhor que a largura da lixeira (ou seja, você só recebe um intervalo). Mais compartimentos podem permitir mais precisão dentro de um compartimento, mas o ruído pode fazê-lo saltar por muitos desses compartimentos; uma pequena alteração na origem ou largura da bandeja pode produzir alterações relativamente grandes no modo. (Existe a mesma troca de desvio-desvio em todas as estatísticas.)

Observe que summaryvocê fornecerá várias estatísticas básicas.

[Você deve usar em sd(x)vez de sqrt(var(x)); é mais claro para uma coisa]

-

Em relação ao q.2 sim; você certamente poderia mostrar a média e a mediana dos dados em uma exibição, como um histograma ou um gráfico de caixa. Veja aqui alguns exemplos e códigos que você deve poder generalizar para os casos que precisar.

Glen_b -Reinstate Monica
fonte
Obrigado, você pode explicar a diferença entre encadernação e suavização?
Wakan Tanka 19/06/2015
@Wakan O que é obrigatório?
Glen_b -Reinstate Monica
1
Extremamente útil. Muito surpreendente o projeto R não transformou isso em uma função básica.
Hack-R
7

Algumas estatísticas descritivas adicionais e não muito conhecidas.

x<-rnorm(10)

sd(x) #Standard deviation

fivenum(x) #Tukey's five number summary, usefull for boxplots

IQR(x) #Interquartile range

quantile(x) #Compute sample quantiles

range(x) # Get minimum and maximum

Tenho certeza de que você pode encontrar muitos outros em um desses Rmanuais disponíveis gratuitamente .

JohnK
fonte
Você pode postar algumas situações quando você as usou (fivenum, IQR, quantil ...) e elas foram úteis?
Wakan Tanka
0

Como o @Glen_b descreveu, o modo de uma distribuição contínua não é tão simples quanto para um vetor de números inteiros.

Esse código R obterá o modo para uma distribuição contínua, usando a hist()função incrivelmente útil da base R. Como o @Glen_b descreveu, isso envolve colocar observações em compartimentos - categorias discretas em que, se a observação cair dentro do intervalo do compartimento, será contada como uma instância de esse compartimento, que contorna o problema de ser altamente improvável em uma distribuição contínua observar exatamente o mesmo valor duas vezes.

set.seed(123)
dist <- rnorm(n=1000, m=24.2, sd=2.2)
h <- hist(dist, # vector
          plot = F, # stops hist() from automatically plotting histogram
          breaks = 40) # number of bins

Agora, tratamos o ponto médio do intervalo da lixeira que possui a contagem máxima como o modo

h$mids[which.max(h$counts)] 

# [1] 23.75

Voila! O modo.

ps, você também pode tratar o início do intervalo como o modo via h$breaks[which.max(h$counts)]. Como os modos discutidos para distribuições contínuas não são simples e exigem decisões a serem tomadas, é por isso que não há uma função simples para elas como existe com mean()emedian()

moinhos de vento
fonte
Portanto, isso se resume a dizer que, para encontrar o modo, você encontra a lixeira mais frequente. O que você faz quando há laços? Como você escolhe caixas de forma sistemática?
Nick Cox
Essas são perguntas muito boas @ Nick Cox? Gostaria de saber a resposta. Eu acho que você precisaria de uma regra para quando houver laços.
precisa saber é o seguinte