Eu tenho um conjunto de dados que é estatísticas de um fórum de discussão na web. Eu estou olhando para a distribuição do número de respostas que um tópico deve ter. Em particular, criei um conjunto de dados com uma lista de contagens de respostas de tópicos e, em seguida, a contagem de tópicos com esse número de respostas.
"num_replies","count"
0,627568
1,156371
2,151670
3,79094
4,59473
5,39895
6,30947
7,23329
8,18726
Se plotar o conjunto de dados em um gráfico de log-log, obtenho o que é basicamente uma linha reta:
(Esta é uma distribuição Zipfian ). A Wikipedia me diz que linhas retas nos gráficos de log-log implicam uma função que pode ser modelada por um monômio da forma . E, de fato, observei essa função:
lines(data$num_replies, 480000 * data$num_replies ^ -1.62, col="green")
Meus globos oculares obviamente não são tão precisos quanto R. Então, como posso fazer com que o R ajuste os parâmetros deste modelo para mim com mais precisão? Tentei regressão polinomial, mas não acho que R tente ajustar o expoente como parâmetro - qual é o nome adequado para o modelo que eu quero?
Edit: Obrigado pelas respostas a todos. Como sugerido, agora ajustei um modelo linear nos logs dos dados de entrada, usando esta receita:
data <- read.csv(file="result.txt")
# Avoid taking the log of zero:
data$num_replies = data$num_replies + 1
plot(data$num_replies, data$count, log="xy", cex=0.8)
# Fit just the first 100 points in the series:
model <- lm(log(data$count[1:100]) ~ log(data$num_replies[1:100]))
points(data$num_replies, round(exp(coef(model)[1] + coef(model)[2] * log(data$num_replies))),
col="red")
O resultado é este, mostrando o modelo em vermelho:
Parece uma boa aproximação para meus propósitos.
Se eu usar esse modelo Zipfian (alpha = 1.703164) junto com um gerador de números aleatórios para gerar o mesmo número total de tópicos (1400930) que o conjunto de dados medido original contido (usando este código C que encontrei na web ), o resultado será semelhante. gostar:
Os pontos medidos estão em preto, os gerados aleatoriamente de acordo com o modelo estão em vermelho.
Acho que isso mostra que a variação simples criada pela geração aleatória desses 1400930 pontos é uma boa explicação para a forma do gráfico original.
Se você estiver interessado em jogar com os dados brutos, eu os publiquei aqui .
fonte
Respostas:
Seu exemplo é muito bom, porque aponta claramente problemas recorrentes com esses dados.
Dois nomes comuns são função de poder e lei de poder. Na biologia e em alguns outros campos, as pessoas costumam falar de alometria, especialmente quando você está relacionando medidas de tamanho. Na física, e em alguns outros campos, as pessoas falam de leis de escala.
Eu não consideraria monomial um bom termo aqui, pois associo isso a potências inteiras. Pela mesma razão, isso não é melhor considerado como um caso especial de um polinômio.
Os problemas de adaptação de uma lei de potência à cauda de uma distribuição se transformam em problemas de adaptação de uma lei de potência à relação entre duas variáveis diferentes.
A maneira mais fácil de ajustar uma lei de energia é usar logaritmos de ambas as variáveis e depois ajustar uma linha reta usando regressão. Há muitas objeções a isso sempre que ambas as variáveis estão sujeitas a erro, como é comum. O exemplo aqui é um caso em questão, pois ambas as variáveis (e nenhuma) podem ser consideradas como resposta (variável dependente). Esse argumento leva a um método mais simétrico de ajuste.
Além disso, sempre há a questão de suposições sobre a estrutura de erros. Novamente, o exemplo aqui é um exemplo, pois os erros são claramente heterocedásticos. Isso sugere algo mais como mínimos quadrados ponderados.
Uma excelente revisão é http://www.ncbi.nlm.nih.gov/pubmed/16573844
Outro problema é que as pessoas geralmente identificam leis de energia apenas em alguns dados. As questões se tornam científicas e estatísticas, indo até a identificação de leis de poder como pensamento positivo ou um passatempo amador na moda. Grande parte da discussão surge sob os títulos fractal e comportamento sem escala, com discussões associadas que vão da física à metafísica. No seu exemplo específico, um pouco de curvatura parece evidente.
Os entusiastas das leis de poder nem sempre são compatíveis com os céticos, porque os entusiastas publicam mais do que os céticos. Sugiro que um gráfico de dispersão em escalas logarítmicas, embora um gráfico natural e excelente que seja essencial, seja acompanhado por gráficos residuais de algum tipo para verificar se há desvios da forma da função de potência.
fonte
Se você presumir que uma potência é um bom modelo para se ajustar, poderá usar
log(y) ~ log(x)
como modelo e ajustar uma regressão linear usandolm()
:Tente o seguinte:
Ajustar um modelo:
Agora crie um gráfico:
fonte