Variação de uma distribuição de dados categóricos em vários níveis

8

Atualmente, estou analisando grandes conjuntos de dados com várias características (como cidade). Eu queria encontrar uma medida que dissesse essencialmente o quanto ou a menor variação existente entre os dados. Isso seria muito mais útil do que simplesmente obter uma contagem do número de elementos distintos.

Por exemplo, considere os seguintes dados:

City
----
Moscow
Moscow
Paris
London
London
London
NYC
NYC
NYC
NYC

Percebo que existem quatro cidades distintas, mas isso não me diz quanto de distribuição existe. Uma 'fórmula' que criei foi a soma das frações do conjunto total de dados para cada elemento. Nesse caso, seria (2/10)^2 + (1/10)^2 + (3/10)^2 + (4/10)^2. Não tenho provas matemáticas reais para isso, mas apenas pensei sobre isso.

Nesse caso, por exemplo, em um conjunto com 10 elementos, se 9 fossem iguais e 1 fosse diferente, o número seria (9/10)^2 + (1/10)^2. No entanto, se fosse metade e meia, seria (5/10)^2 + (5/10)^2.

Eu queria ter uma opinião sobre quais fórmulas e áreas de estudo semelhantes existem. Eu realmente não consegui encontrar nada com algumas pesquisas rápidas no Google.

Eric Staner
fonte

Respostas:

10

Eu acho que o que você provavelmente quer é entropia (de Shannon) . É calculado assim: Isso representa uma maneira de pensar sobre a quantidade de informações em uma variável categórica.

H(x)=xip(xi)log2p(xi)

Em R, podemos calcular isso da seguinte maneira:

City = c("Moscow", "Moscow", "Paris", "London", "London", 
         "London", "NYC", "NYC", "NYC", "NYC")
table(City)
# City
# London Moscow    NYC  Paris 
#      3      2      4      1 
entropy = function(cat.vect){
  px  = table(cat.vect)/length(cat.vect)
  lpx = log(px, base=2)
  ent = -sum(px*lpx)
  return(ent)
}
entropy(City)                                             # [1] 1.846439
entropy(rep(City, 10))                                    # [1] 1.846439
entropy(c(    "Moscow",       "NYC"))                     # [1] 1
entropy(c(    "Moscow",       "NYC", "Paris", "London"))  # [1] 2
entropy(rep(  "Moscow", 100))                             # [1] 0
entropy(c(rep("Moscow",   9), "NYC"))                     # [1] 0.4689956
entropy(c(rep("Moscow",  99), "NYC"))                     # [1] 0.08079314
entropy(c(rep("Moscow",  97), "NYC", "Paris", "London"))  # [1] 0.2419407

A partir disso, podemos ver que o comprimento do vetor não importa. O número de opções possíveis ('níveis' de uma variável categórica) aumenta. Se houvesse apenas uma possibilidade, o valor é (o mais baixo possível). O valor é maior, para qualquer número de possibilidades quando as probabilidades são iguais. 0

Um pouco mais tecnicamente, com mais opções possíveis, são necessárias mais informações para representar a variável e minimizar o erro. Com apenas uma opção, não há informações na sua variável. Mesmo com mais opções, mas onde quase todas as instâncias reais são de um nível específico, há muito pouca informação; afinal, você pode adivinhar "Moscou" e quase sempre estar certo.

your.metric = function(cat.vect){
  px   = table(cat.vect)/length(cat.vect)
  spx2 = sum(px^2)
  return(spx2)
}
your.metric(City)                                             # [1] 0.3
your.metric(rep(City, 10))                                    # [1] 0.3
your.metric(c(    "Moscow",       "NYC"))                     # [1] 0.5
your.metric(c(    "Moscow",       "NYC", "Paris", "London"))  # [1] 0.25
your.metric(rep(  "Moscow", 100))                             # [1] 1
your.metric(c(rep("Moscow",   9), "NYC"))                     # [1] 0.82
your.metric(c(rep("Moscow",  99), "NYC"))                     # [1] 0.9802
your.metric(c(rep("Moscow",  97), "NYC", "Paris", "London"))  # [1] 0.9412

Sua métrica sugerida é a soma das probabilidades ao quadrado. De certa forma, ele se comporta de maneira semelhante (por exemplo, observe que é invariável ao comprimento da variável), mas observe que ela diminui à medida que o número de níveis aumenta ou à medida que a variável se torna mais desequilibrada. Ele se move inversamente para a entropia, mas as unidades - tamanho dos incrementos - diferem. Sua métrica será vinculada por e , enquanto a entropia varia de a infinito. Aqui está uma trama de seu relacionamento: 010

insira a descrição da imagem aqui

- Reinstate Monica
fonte
3
Entropia como você o define é delimitada por categorias por . Claramente, o pode crescer do tamanho que se deseja, mas na maioria dos problemas desse tipo é pequeno ou moderado e, assim, a entropia é finita. Slog2SS
Nick Cox
9

A soma dos quadrados das frações (para alinhar o texto com a aritmética) é de fato uma medida muito redescoberta ou reinventada da concentração de distribuições divididas em categorias distintas. Está agora em seu segundo século, pelo menos, permitindo que um pouco de latitude inclua sob o mesmo guarda-chuva seu complemento e seu recíproco: todas as três versões têm interpretações e usos fáceis. Existem (palpite) talvez vinte nomes diferentes para ele em uso comum. Vamos escrever genericamente para proporção ou probabilidade, onde necessariamente e .p1ps0s=1Sps1

A sua medida é . Pelo menos para os biólogos, o índice é mnemônico para as espécies. Então essa soma é para os ecologistas o índice de Simpson (depois de EH Simpson, 1922-2019, a pessoa para quem o paradoxo de Simpson é chamado); para economistas, é o índice Herfindahl-Hirschman; e assim por diante. Ele tem uma longa história em criptografia, muitas vezes escondida em segredo por décadas por seu uso em problemas classificados, mas mais famosa por AM Turing. IJ Good (que como Simpson trabalhou com Turing na Segunda Guerra Mundial) chamou de taxa de repetição, o que motiva o símbolo acima; para DJC MacKay, é a probabilidade de correspondência.s=1Sps2=:Rs=1,,SR

Suponha que classifiquemos as proporções . Então, em um extremo, cresce para e o outro diminui para e, em seguida, . Um outro extremo é probabilidades iguais de modo que . Os dois limites coincidem naturalmente para . Assim, para espécies respectivamente.p1pSp11ps0R=11/SR=S(1/S2)=1/SS=12,10,100R0.5,0.1,0.01

O complemento foi uma das várias medidas de heterogeneidade usadas por Corrado Gini, mas cuidado com a sobrecarga séria de termos em várias literaturas: os termos índice ou coeficiente de Gini foram aplicados a várias medidas distintas. Ele apresenta no aprendizado de máquina como uma medida da impureza das classificações; inversamente, mede a pureza. Os ecologistas costumam falar em diversidade: mede a diversidade inversamente e mede diretamente. Para os geneticistas, é a heterozigosidade.1RRR1R1R

O recíproco tem uma interpretação de 'número equivalente'. Imaginar como acima qualquer caso em que espécies são igualmente comum com cada . Em seguida, . Por extensão mede um número equivalente de categorias igualmente comuns, de modo que, por exemplo, os quadrados de fornecem que corresponde à intuição de que a distribuição está entre e em concentração ou diversidade.1/RSps=1/S1/R=1/s=1S(1/S)2=S1/R1/6,2/6,3/61/R2.572/6,2/6,2/63/6,3/6,0

(Os números equivalentes para a entropia de Shannon são apenas seu antilogaritmo, digamos ou para as bases e respectivamente).H2H,exp(H)10H2,e=exp(1)10

Existem várias generalizações da entropia que tornam essa medida uma de uma família mais ampla; uma simples, dada por IJ Good, define o zoológico partir do qual fornece nossa medida; é entropia de Shannon; retorna , o número de espécies presentes, que é a medida mais simples possível da diversidade e uma com vários méritos.spsa [ln(1/ps)]ba=2,b=0a=1,b=1a=0;b=0S

Nick Cox
fonte
Uau, parece haver muito disso. Não é meu campo, por isso só estou familiarizado com ele, embora me lembre de ter ouvido falar em alguns desses nomes. Como é calculado o ? É sempre , ou apenas quando as espécies são equivalentes? S1/R
gung - Restabelece Monica
S é quantas espécies estão presentes. Às vezes, você adota uma classificação (por exemplo, homens e mulheres, então ), de modo que seja predefinida para a coleta de dados, exceto que, neste exemplo, outros esquemas também são possíveis. Às vezes é quantas espécies se apresentam; imagine que você é um botânico ou ornitólogo procurando espécies de árvores ou pássaros. Naturalmente, o termo espécie é genérico (trocadilho biológico fraco); em economia que poderiam ser os setores da economia, tipos de produtos ou serviços comercializados, etc. Em demografia pode ser categorias étnicas, etc.S=2
Nick Cox
Portanto, para os dados de exemplo das cidades, S=4? Isso não parece uma métrica tão boa quanto as outras.
gung - Restabelece Monica
Isso mesmo no exemplo simples. Mas suponha que você e eu comparemos quantos países já visitamos. Você diz 78, eu digo 23. Isso é informativo. E nesse exemplo, eu realmente não consigo descobrir informações precisas sobre quantos dias eu passei em cada um. O ecologista que diz a outro ecologista que 78 e 23 espécies de aves foram encontradas em duas ilhas está trocando dados úteis.
Nick Cox
1

Pergunta interessante ... Depende realmente do que você deseja fazer com essa métrica - se você apenas deseja classificar uma lista pela "mais variável", muitas coisas podem funcionar. A métrica que você criou parece razoável. Eu não diria que você precisa de "prova" matemática: prova de quê? Você pode fazer uma pergunta como "é provável que esse conjunto de dados venha de uma distribuição uniforme?". Encontro algum apelo intuitivo em "qual é a probabilidade de dois desenhos aleatórios dessa lista serem iguais?". Você poderia fazer isso no R assim:

set.seed(1)
cities <- c("Moscow", "Moscow", "NYC", "London")
# Gives .3525
prob_equal = mean(sample(rep(cities, 100)) == sample(rep(cities, 100)))
citiesTwo <- c(rep("Moscow", 100), rep("NYC", 100)) # Gave .497
citiesTwo <- c(rep("Moscow", 100), rep("NYC", 10)) # Gave .833

Onde a parte "média" fornece a média de um vetor algumas centenas de entradas aleatórias como TRUE, TRUE, FALSE, TRUE, FALSE ..., que se torna a média de 1, 1, 0, 1, 0, etc.

1 menos que a probabilidade pode dar uma noção melhor de "variância" (por exemplo, prob dois aleatórios são diferentes, portanto, um número mais alto significa mais diverso). Alguma quantidade dessas provavelmente poderia ser calculada sem muito esforço. Provavelmente é algo como P (uma seleção aleatória é Moscou) * P (um segundo é Moscou) + P (uma seleção aleatória é NYC) * P (um segundo é NYC) + ..., então eu acho que é apenas propor_moscow ^ 2 + ratio_nyc ^ 2, o que de fato seria o que você inventou!

dcc310
fonte