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 ) = -∑xEup (xEu)registro2p (xEu)
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 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: 0 01 10 0
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 .p 1 ≥ps≥ 0 ∑Ss = 1ps≡ 1
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.∑Ss = 1p2s= : R s = 1 , … , S R
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.p1 1≥ ⋯ ≥pS p1 1 1 1 ps 0 0 R = 1 1 / S R = S( 1 /S2) = 1 / S S= 1 2 , 10 , 100 R ≥ 0,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.1 - R R R 1 - R 1 - R
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 / R S ps= 1 / S 1 / R = 1 /∑Ss = 1( 1 / S)2= S 1 / R 1 / 6 , 2 / 6 , 3 / 6 1 / R ≈ 2,57 2 / 6 , 2 / 6 , 2 / 6 3 / 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).H 2H, exp( H) 10H 2,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.∑spas [ln(1/ps)]b a=2,b=0 a=1,b=1 a=0;b=0 S
fonte
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:
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!
fonte