Mam zestaw danych, który jest statystykami z internetowego forum dyskusyjnego. Patrzę na rozkład liczby odpowiedzi, których oczekuje się od tematu. W szczególności utworzyłem zestaw danych, który zawiera listę odpowiedzi na temat, a następnie liczbę tematów, które mają taką liczbę odpowiedzi.
"num_replies","count"
0,627568
1,156371
2,151670
3,79094
4,59473
5,39895
6,30947
7,23329
8,18726
Jeśli wykreślę zestaw danych na wykresie dziennika, otrzymam to, co w zasadzie jest linią prostą:
(To jest dystrybucja Zipfian ). Wikipedia mówi mi, że proste linie na wykresach log-log implikują funkcję, którą można modelować za pomocą monomialu postaci . I faktycznie obserwowałem taką funkcję:
lines(data$num_replies, 480000 * data$num_replies ^ -1.62, col="green")
Moje oczy oczywiście nie są tak dokładne jak R. Więc jak mogę sprawić, by R dopasował dla mnie parametry tego modelu bardziej dokładnie? Próbowałem regresji wielomianowej, ale nie sądzę, że R próbuje dopasować wykładnik jako parametr - jaka jest właściwa nazwa dla modelu, który chcę?
Edycja: Dziękujemy za odpowiedzi wszystkim. Jak zasugerowałem, dopasowałem teraz model liniowy do dzienników danych wejściowych, używając tego przepisu:
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")
Wynik jest taki, pokazując model na czerwono:
To wydaje się być dobrym przybliżeniem dla moich celów.
Jeśli następnie użyję tego modelu Zipfian (alfa = 1,703164) wraz z generatorem liczb losowych do wygenerowania tej samej łącznej liczby tematów (1400930), co zawierał oryginalny zmierzony zestaw danych (używając tego kodu C, który znalazłem w Internecie ), wynik wygląda lubić:
Mierzone punkty są w kolorze czarnym, losowo generowane zgodnie z modelem są w kolorze czerwonym.
Myślę, że to pokazuje, że prosta wariancja utworzona przez losowe wygenerowanie tych 1400930 punktów jest dobrym wyjaśnieniem kształtu oryginalnego wykresu.
Jeśli jesteś zainteresowany samodzielną grą z surowymi danymi, opublikowałem je tutaj .