Я получил задание о сети Барабаси-Альберт. Вопрос требует:
- Имитация игры Барабаси с 1000 узлами и m = 5
- Напишите функцию для вывода логарифмической функции правдоподобия, заданной γ и степенной последовательностью
- Найти оценку максимального правдоподобия Kmin и γ (с γ в диапазоне [1,5])
- Найти значение γ, которое максимизирует функцию логарифмического правдоподобия
Я знаю, что степенной показатель степени сети Барабаси-Альберта должен быть равен 3 с помощью моделирования, но я не мог найти ответ, используя следующий код:
library(igraph)
ba <- barabasi.game(1000, m=5) #Simulate a barabasi game with 1000 nodes and m=5
k <- as.vector(igraph::degree(ba)) #Assign k as the degree vector
min(k) #Maximum likelihood estimator of K
f <- function(k0) { #MLE of γ
a = k/(k+k0)
b = log(k0/(k+k0))
return(1 - 1/mean(b) - 1/mean(a))
}
str(root <- uniroot(f, c(min(k), max(k)), tol = 0.0001)) #Find the root of γ
f4 <- function(gamma) { #Log-likelihood Function
k0 <- root$root
n <- length(k)
return(n*log(gamma-1)+n*(gamma-1)*log(k0)-gamma*sum(log(k+k0)))
}
str(root2 <- uniroot(f4, c(1.0, 5.0), tol = 0.0001))
Я ожидаю, что γ должно быть близко к 3, но я не могу получить ответ. Могу ли я спросить, если кто-нибудь знает, где проблема? Большое спасибо.