Tìm MLE cho quy trình Hawkes theo cấp số nhân


16

Quá trình Hawkes theo cấp số nhân là một quá trình điểm tự kích thích với tỷ lệ đến sự kiện là:

λ(t)=μ+ti<tαeβ(tti)

trong đó là thời gian đến sự kiện.t1,..tn

Hàm khả năng đăng nhập là

tnμ+αβ(eβ(tnti)1)+i<jln(μ+αeβ(tjti))

có thể được tính toán đệ quy:

tnμ+αβ(eβ(tnti)1)+ln(μ+αR(i))

R(i)=eβ(titi1)(1+R(i1))

R(1)=0

Tôi có thể sử dụng phương pháp số nào để tìm MLE? Phương pháp thực tế đơn giản nhất để thực hiện là gì?


1
Tôi đã thành công trong việc điều chỉnh và bằng cách tối đa hóa MLE triển khai LBFGS trong scipy. Tuy nhiên, khả năng đăng nhập không lõm vào , vì vậy tôi chỉ đơn giản lặp lại một loạt các giá trị và chọn một giá trị có khả năng tối đa. Lưu ý rằng là bắt buộc cho sự ổn định của quy trình. μαββα<β
Emaad Ahmed Manzoor

1
tò mò, hình thức chính xác của hàm λ (t) sử dụng các giá trị của R (i) thay vì bật lại ở mỗi bước là gì?
quạ

Câu trả lời:


7

Thuật toán đơn giản Nelder-Mead dường như hoạt động tốt .. Nó được triển khai trong Java bởi thư viện Apache Commons Math tại https://commons.apache.org/math/ . Tôi cũng đã viết một bài báo về các quy trình Hawkes tại Mô hình quy trình điểm cho dữ liệu không đều nhau tần số cao tần số đa biến .

felix, sử dụng biến đổi exp / log dường như để đảm bảo tính tích cực của các tham số. Đối với điều alpha nhỏ, tìm kiếm arxiv.org cho một bài báo gọi là "định lý giới hạn cho các quá trình bán hàng gần như không ổn định"


1
Chào mừng đến với trang web, @StephenCrowley. Nếu bạn có câu hỏi của riêng mình, xin vui lòng không đăng nó dưới dạng (/ như một phần của) một câu trả lời. Nhấp vào nút "HỎI CÂU HỎI" màu xám ở đầu trang và hỏi nó ở đó. Nếu bạn có một câu hỏi để làm rõ từ OP, bạn nên hỏi nó trong một bình luận cho bài đăng câu hỏi ở trên. (Mặc dù rất bực mình, bạn không thể làm điều đó cho đến khi bạn đạt tới 50 đại diện.)
gung - Tái lập Monica

3

Tôi đã giải quyết vấn đề này bằng thư viện nlopt . Tôi tìm thấy một số phương thức hội tụ khá nhanh.


1
Tôi cho rằng bạn đã quen thuộc với T. Ozaki (1979), Ước tính khả năng tối đa của các quá trình điểm tự thú vị của Hawkes , Ann. Inst. Thống kê. Môn Toán. , tập 31, không 1, 145-155.
Đức hồng y

1
Bạn có thể cho biết thêm chi tiết về những gì bạn đã làm? Dường như có một vấn đề với các ràng buộc cài đặt và cũng là phiên bản beta lớn không thể phân biệt được với zero alpha (cả hai đều trông Poisson).
felix

3

Bạn cũng có thể làm tối đa hóa đơn giản. Trong R:

neg.loglik <- function(params, data, opt=TRUE) {
  mu <- params[1]
  alpha <- params[2]
  beta <- params[3]
  t <- sort(data)
  r <- rep(0,length(t))
  for(i in 2:length(t)) {
    r[i] <- exp(-beta*(t[i]-t[i-1]))*(1+r[i-1])
  }
  loglik <- -tail(t,1)*mu
  loglik <- loglik+alpha/beta*sum(exp(-beta*(tail(t,1)-t))-1)
  loglik <- loglik+sum(log(mu+alpha*r))
  if(!opt) {
    return(list(negloglik=-loglik, mu=mu, alpha=alpha, beta=beta, t=t,
                r=r))
  }
  else {
    return(-loglik)
  }
}

# insert your values for (mu, alpha, beta) in par
# insert your times for data
opt <- optim(par=c(1,2,3), fn=neg.loglik, data=data)

Làm thế nào để bạn đảm bảo mu, alpha và beta không được đặt thành giá trị âm?
felix

Bạn có thể đặt loweruppertham số trong optimcuộc gọi.
giả định

Không phải cho Nelder-Mead, bạn có thể mặc định không? (Xem stat.ethz.ch/R-manual/R-devel/l Library / stat / html / optim.html ). Ngoài ra, tôi không nghĩ có bất kỳ cách nào để phân biệt beta khổng lồ với zero alpha nên việc tối ưu hóa chung dường như đã bị tiêu diệt.
felix
Khi sử dụng trang web của chúng tôi, bạn xác nhận rằng bạn đã đọc và hiểu Chính sách cookieChính sách bảo mật của chúng tôi.
Licensed under cc by-sa 3.0 with attribution required.