MLE / Khả năng của khoảng thời gian phân phối lognormally


8

Tôi có một tập hợp các câu trả lời được thể hiện dưới dạng một khoảng như mẫu dưới đây.

> head(left)
[1]  860  516  430 1118  860  602
> head(right)
[1]  946  602  516 1204  946  688

trong đó bên trái là giới hạn dưới và bên phải là giới hạn trên của phản hồi. Tôi muốn ước tính các tham số theo phân phối logic.

Trong một thời gian khi tôi đang cố gắng tính toán khả năng trực tiếp, tôi đã phải vật lộn với thực tế là do hai giới hạn được phân phối dọc theo các bộ thông số khác nhau, tôi đã nhận được một số giá trị âm như dưới đây:

> Pr_high=plnorm(wta_high,meanlog_high,sdlog_high)
> Pr_low=plnorm(wta_low, meanlog_low,sdlog_low)
> Pr=Pr_high-Pr_low
> 
> head(Pr)
[1] -0.0079951419  0.0001207749  0.0008002343 -0.0009705125 -0.0079951419 -0.0022395514

Tôi thực sự không thể tìm ra cách giải quyết nó và quyết định sử dụng điểm giữa của khoảng thay vào đó là một sự thỏa hiệp tốt cho đến khi tôi tìm thấy hàm mledist trích xuất khả năng loglik của một phản hồi khoảng, đây là tóm tắt tôi nhận được:

> mledist(int, distr="lnorm")
$estimate
meanlog     sdlog 
6.9092257 0.3120138 

$convergence
[1] 0

$loglik
[1] -152.1236

$hessian
         meanlog       sdlog
meanlog 570.760358    7.183723
sdlog     7.183723 1112.098031

$optim.function
[1] "optim"

$fix.arg
NULL

Warning messages:
1: In plnorm(q = c(946L, 602L, 516L, 1204L, 946L, 688L, 1376L, 1376L,  :
NaNs produced
2: In plnorm(q = c(860L, 516L, 430L, 1118L, 860L, 602L, 1290L, 1290L,  :
NaNs produced

Các giá trị tham số dường như có ý nghĩa và loglikabilities lớn hơn bất kỳ phương pháp nào khác mà tôi đã sử dụng (phân phối trung điểm hoặc phân phối của một trong hai giới hạn).

Có một thông điệp cảnh báo mà tôi không hiểu vì vậy có ai có thể cho tôi biết nếu tôi đang làm đúng và thông điệp này có ý nghĩa gì không?

Đánh giá cao sự giúp đỡ!


Câu hỏi của bạn là "Làm cách nào để sử dụng chức năng R cụ thể và thông báo Cảnh báo này có ý nghĩa gì?". Đó là một câu hỏi cho StackOverflow chứ không phải CrossValidated. Hơn nữa, khi bạn đề cập đến một chức năng từ một gói, bạn nên đề cập đến nó từ gói nào . Trong trường hợp này tôi đoán bạn có nghĩa là chức năng từ gói fitdistrplus.
Glen_b -Reinstate Monica

Chào mừng đến với trang web, @ElioDruml. Tôi không thể biết liệu câu hỏi chính của bạn là về cách ước tính các tham số này hay ý nghĩa của thông điệp cảnh báo là gì. Câu hỏi trước sẽ là một câu hỏi hay cho CV, nhưng câu hỏi sau thực sự là một câu hỏi cho Stack Overflow (xem Câu hỏi thường gặp của chúng tôi ). Bạn có thể làm rõ câu hỏi chính của bạn là gì? Bạn muốn Q của bạn ở lại đây, hoặc được di chuyển đến SO? (Nếu sau này, hãy gắn cờ Q & chúng tôi sẽ di chuyển nó cho bạn , tuy nhiên , vui lòng không đăng bài chéo .)
gung - Tái lập Monica

Câu trả lời:


9

Có vẻ như bạn có thể không tính toán chính xác khả năng.

x

  1. Fθ

  2. Nó nằm giữa và bao gồm (trong đó và độc lập với ),b > a b a xab>abax

PrFθ(axb)=Fθ(b)Fθ(a).

Ví dụ, đây là một Rtriển khai trong đó các giá trị của nằm trong vectơ , các giá trị của trong vectơ và là Logn normal. (Đây không phải là giải pháp cho mục đích chung; cụ thể, nó giả định rằng và cho tất cả dữ liệu.)b F θ b > aaleftbrightFθb>aba

#
# Lognormal log-likelihood for interval data.
#
lambda <- function(mu, sigma, left, right) {
  sum(log(pnorm(log(right), mu, sigma) - pnorm(log(left), mu, sigma)))
}

Để tìm khả năng ghi nhật ký tối đa, chúng ta cần một tập hợp các giá trị bắt đầu hợp lý cho giá trị trung bình của nhật ký và độ lệch chuẩn của nhật ký . Ước tính này thay thế mỗi khoảng bằng giá trị trung bình hình học của các điểm cuối của nó:σμσ

#
# Create an initial estimate of lognormal parameters for interval data.
#
lambda.init <- function(left, right) {
  mid <- log(left * right)/2
  c(mean(mid), sd(mid))
}

Chúng ta hãy tạo một số dữ liệu phân phối lognormally ngẫu nhiên và chia chúng thành các khoảng:

set.seed(17)
n <- 12                     # Number of data
z <- exp(rnorm(n, 6, .5))   # Mean = 6, SD = 0.5
left <- 100 * floor(z/100)  # Bin into multiples of 100
right <- left + 100

Việc lắp có thể được thực hiện bởi trình tối ưu hóa đa biến có mục đích chung. (Cái này là một bộ giảm thiểu theo mặc định, vì vậy nó phải được áp dụng cho tiêu cực của khả năng đăng nhập.)

fit <- optim(lambda.init(left,right), 
             fn=function(theta) -lambda(theta[1], theta[2], left, right))
fit$par

6.1188785 0.3957045

Ước tính của là , không xa giá trị dự định là và ước tính của là , không xa giá trị dự định là : không tệ đối với chỉ giá trị. Để xem mức độ phù hợp tốt như thế nào, hãy vẽ đồ thị hàm phân phối tích lũy theo kinh nghiệm và hàm phân phối được trang bị. Để xây dựng ECDF, tôi chỉ nội suy tuyến tính qua từng khoảng:6,12 6 σ 0,40 0,5 12μ6.126σ0.400.512

#
# ECDF of the data.
#
F <- function(x) (1 + mean((abs(x - left) - abs(x - right)) / (right - left)))/2

y <- sapply(x <- seq(min(left) * 0.8, max(right) / 0.8, 1), F)
plot(x, y, type="l", lwd=2, lty=2, ylab="Cumulative probability")
curve(pnorm(log(x), fit$par[1], fit$par[2]), from=min(x), to=max(x), col="Red", lwd=2, 
  add=TRUE)

Lô đất

Bởi vì độ lệch dọc luôn nhỏ và thay đổi cả lên và xuống, nên nó có vẻ phù hợp.


Cảm ơn rất nhiều cho đầu vào của bạn @whuber. Tôi đã tạo lại ví dụ của bạn và tất cả đều có ý nghĩa. Tuy nhiên, tôi không thể tạo lại dữ liệu của riêng mình với n = 56 trong đó phần đầu còn lại <- c (860, 516, 430, 1118, 860, 602) và bên phải <- c (946, 602, 516 , 1204, 946, 688). Tôi nhận được thông báo cảnh báo này: "1: Trong pnorm (log (phải), mu, sigma): NaNs sản xuất 2: Trong pnorm (log (trái), mu, sigma): NaNs được tạo ra" khi khớp với trình tối ưu hóa để trích xuất ước tính mle. Điều đó đưa tôi trở lại vấn đề trước đây của tôi là có xác suất âm khi calc. các khả năng từng bước và trừ.
Elio Druml

Đây là những thông điệp cảnh báo tương tự được đưa ra bởi chức năng mledist từ gói fitdistrplus. Tuy nhiên, như bạn có thể thấy ở trên, nó cho tôi một đầu ra cho các ước tính mle trông tương đối tốt. Tôi có nên tin tưởng nó và / hoặc vấn đề ở đây là gì? Cảm ơn vì bạn đã phản hồi.
Elio Druml

Tại sao bạn không đăng dữ liệu của mình, Elio, để chúng tôi có thể chẩn đoán sự cố? Mặc dù vậy, tôi không chắc đây là những lỗi nghiêm trọng. Bạn có thể gặp phải những rắc rối tương tự được báo cáo bởi một người dùng khác khi tối thiểu hóa một hàm trong Mathicala ; giải thích tương tự có thể áp dụng trong trường hợp của bạn.
whuber
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.