У меня есть набор данных, который является статистикой с форума веб-обсуждения. Я смотрю на распределение количества ответов, которые должна иметь тема. В частности, я создал набор данных, в котором есть список ответов на темы, а затем - количество тем с таким количеством ответов.
"num_replies","count"
0,627568
1,156371
2,151670
3,79094
4,59473
5,39895
6,30947
7,23329
8,18726
Если я нанесу набор данных на график log-log, я получу то, что в основном является прямой линией:
(Это распределение Zipfian ). Википедия говорит мне, что прямые линии на графиках log-log подразумевают функцию, которая может быть смоделирована мономом вида . И на самом деле я оценил такую функцию:
lines(data$num_replies, 480000 * data$num_replies ^ -1.62, col="green")
Мои глазные яблоки, очевидно, не так точны, как R. Итак, как я могу заставить R подгонять параметры этой модели для меня более точно? Я пробовал полиномиальную регрессию, но я не думаю, что R пытается вписать показатель степени в качестве параметра - как правильно назвать модель, которую я хочу?
Редактировать: Спасибо за ответы всех. Как и предполагалось, теперь я сопоставил линейную модель с журналами входных данных, используя этот рецепт:
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")
В результате мы видим модель красным цветом:
Это выглядит как хорошее приближение для моих целей.
Если я затем использую эту модель Zipfian (альфа = 1.703164) вместе с генератором случайных чисел, чтобы сгенерировать то же общее количество тем (1400930), что и в исходном измеренном наборе данных (используя этот код C, который я нашел в Интернете ), результат будет выглядеть нравится:
Измеренные точки выделены черным, случайным образом сгенерированные в соответствии с моделью - красным.
Я думаю, что это показывает, что простая дисперсия, созданная случайным образом генерированием этих 1400930 точек, является хорошим объяснением формы исходного графика.
Если вы хотите поиграть с необработанными данными самостоятельно, я разместил их здесь .