Có phân tích maximum-likelihood estimators đối với một số thông số, chẳng hạn như giá trị trung bình của normal distribution hoặc tỷ lệ của exponential distribution. Đối với các thông số khác, không có bộ ước lượng phân tích, nhưng bạn có thể sử dụng numerical analysis để tìm ước tính thông số hợp lý.
Chức năng fitdistr() trong R sử dụng chức năng tối ưu hóa số của chức năng đăng nhập bằng cách gọi hàm optim(). Nếu bạn nghĩ rằng dữ liệu của bạn là hỗn hợp của phân phối Gamma và t, thì chỉ cần tạo một hàm khả năng mô tả một hỗn hợp như vậy. Sau đó, chuyển các giá trị tham số đó tới optim() để tối ưu hóa. Dưới đây là một ví dụ sử dụng phương pháp này để lắp một phân phối:
library(MASS)
vals = rnorm(n = 10000, mean = 0, sd = 1)
print(summary(x_vals))
ll_func = function(params) {
log_probs = log(dnorm(x = vals, mean = params[1], sd = params[2]))
tot = sum(log_probs)
return(-1 * tot)
}
params = c(0.5, 10)
print(ll_func(params))
res = optim(params, ll_func)
print(res$par)
Chạy chương trình này trong R sản xuất sản lượng này:
[1] "mean: 0.0223766157516646"
[1] "sd: 0.991566611447471"
Đó là khá gần với giá trị ban đầu của trung bình = 0 và sd = 1
Đừng quên rằng với một hỗn hợp của hai bản phân phối, bạn có thêm một thông số xác định trọng số tương đối giữa các bản phân phối. Ngoài ra, hãy cẩn thận về việc lắp nhiều thông số cùng một lúc. Với nhiều thông số miễn phí bạn cần phải lo lắng về overfitting.
Nguồn
2011-06-26 23:13:43
tôi giả sử bạn có ý nghĩa (như các áp phích khác cũng đã thừa nhận) rằng phân phối của bạn là một * hỗn * của Gamma và t (tức là mỗi điểm cá nhân là rút ra từ các bản phân phối Gamma hoặc t). Phương án khác, điều này phức tạp hơn một chút, là (như tôi nghĩ nếu tôi đọc câu hỏi của bạn theo nghĩa đen) thì các giá trị riêng lẻ là tổng của các biến Gamma và t, tức là phân phối là một phép biến đổi của Gamma và t. Vui lòng làm rõ. Nếu nó là sau này tôi có thể đề xuất một giải pháp bằng cách sử dụng gói 'distr' ... –
Hơn hai năm sau đó và không phải là poster ban đầu, nhưng tôi sẽ rất quan tâm đến giải pháp đề xuất của bạn cho convolution bằng cách sử dụng' distr' gói. – msp