Lắp phân phối t trong R: tham số tỷ lệ


17

Làm cách nào để tôi khớp với các tham số của phân phối t, tức là các tham số tương ứng với 'trung bình' và 'độ lệch chuẩn' của phân phối bình thường. Tôi cho rằng chúng được gọi là "trung bình" và "chia tỷ lệ / bậc tự do" cho phân phối t?

Đoạn mã sau thường dẫn đến lỗi 'tối ưu hóa thất bại'.

library(MASS)
fitdistr(x, "t")

Tôi có phải chia tỷ lệ x trước hoặc chuyển đổi thành xác suất không? Làm thế nào tốt nhất để làm điều đó?


2
Không phải vì bạn phải chia tỷ lệ tham số mà vì trình tối ưu hóa bị lỗi. Xem câu trả lời của tôi dưới đây.
Sergey Bushmanov

Câu trả lời:


16

fitdistrsử dụng các kỹ thuật tối ưu hóa và khả năng tối đa để tìm các tham số của một phân phối nhất định. Đôi khi, đặc biệt đối với phân phối t, như @ user12719 nhận thấy, việc tối ưu hóa ở dạng:

fitdistr(x, "t")

thất bại với một lỗi.

Trong trường hợp này, bạn nên giúp tối ưu hóa bằng cách cung cấp điểm bắt đầu và giới hạn dưới để bắt đầu tìm kiếm các tham số tối ưu:

fitdistr(x, "t", start = list(m=mean(x),s=sd(x), df=3), lower=c(-1, 0.001,1))

Lưu ý, df=3là dự đoán tốt nhất của bạn về những gì "tối ưu"df có thể. Sau khi cung cấp thông tin bổ sung này, lỗi của bạn sẽ biến mất.

Một vài trích đoạn để giúp bạn hiểu rõ hơn về cơ chế bên trong của fitdistr:

Đối với các bản phân phối Bình thường, log-Bình thường, hình học, hàm mũ và Poisson, các MLE dạng đóng (và các lỗi tiêu chuẩn chính xác) được sử dụng và startkhông được cung cấp.

...

Đối với các phân phối được đặt tên sau đây, các giá trị bắt đầu hợp lý sẽ được tính nếu startbị bỏ qua hoặc chỉ được chỉ định một phần: "cauchy", "gamma", "logistic", "nhị thức âm" (tham số theo mu và kích thước), "t" và "weibull ". Lưu ý rằng các giá trị khởi đầu này có thể không đủ tốt nếu độ phù hợp kém: đặc biệt là chúng không có khả năng chống lại các ngoại lệ trừ khi phân phối được trang bị có đuôi dài.


1
Cả hai câu trả lời (Flom và Bushmanov) đều hữu ích. Tôi đang chọn cái này, bởi vì nó làm cho rõ ràng hơn rằng với các giá trị ban đầu đúng và các ràng buộc 'fitdistr' hội tụ.
12719

10

νt

νt

set.seed(1234)
n <- 10
x <- rt(n,  df=2.5)

make_loglik  <-  function(x)
    Vectorize( function(nu) sum(dt(x, df=nu,  log=TRUE)) )

loglik  <-  make_loglik(x)
plot(loglik,  from=1,  to=100,  main="loglikelihood function for df     parameter", xlab="degrees of freedom")
abline(v=2.5,  col="red2")

nhập mô tả hình ảnh ở đây

n

Hãy để chúng tôi thử một số mô phỏng:

t_nu_mle  <-  function(x) {
    loglik  <-  make_loglik(x)
    res  <-  optimize(loglik, interval=c(0.01, 200), maximum=TRUE)$maximum
    res   
}

nus  <-  replicate(1000, {x <- rt(10, df=2.5)
    t_nu_mle(x) }, simplify=TRUE)

> mean(nus)
[1] 45.20767
> sd(nus)
[1] 78.77813

Hiển thị ước tính là rất không ổn định (nhìn vào biểu đồ, một phần khá lớn của các giá trị ước tính nằm ở giới hạn trên được đưa ra để tối ưu hóa 200).

Lặp lại với kích thước mẫu lớn hơn:

nus  <-  replicate(1000, {x <- rt(50, df=2.5)
    t_nu_mle(x) }, simplify=TRUE)
> mean(nus)
[1] 4.342724
> sd(nus)
[1] 14.40137

cái này tốt hơn nhiều, nhưng giá trị trung bình vẫn cao hơn giá trị thật 2,5.

Sau đó, hãy nhớ rằng đây là một phiên bản đơn giản hóa của vấn đề thực sự trong đó các tham số vị trí và tỷ lệ cũng phải được ước tính.

tν


5
Kết luận của bạn rằng các vấn đề về ước tính df thực sự có thể có tác dụng đối với lý do chọn phân phối t ở vị trí đầu tiên (nghĩa là độ mạnh) được cho là gây kích động.
12719

1
(+1) "Không giới hạn ở trên" không phải là một câu trả lời sai và có thể hữu ích cho một số mục đích khi được kết hợp với ước tính khoảng. Điều quan trọng là không được sử dụng một cách mù quáng thông tin Fisher được quan sát để hình thành các khoảng tin cậy Wald.
Scortchi - Phục hồi Monica

8

Trong phần trợ giúp cho fitdistr là ví dụ này:

fitdistr(x2, "t", df = 9)

chỉ ra rằng bạn chỉ cần một giá trị cho df. Nhưng điều đó giả định tiêu chuẩn hóa.

Để kiểm soát nhiều hơn, họ cũng hiển thị

mydt <- function(x, m, s, df) dt((x-m)/s, df)/s
fitdistr(x2, mydt, list(m = 0, s = 1), df = 9, lower = c(-Inf, 0))

trong đó các tham số sẽ là m = mean, s = độ lệch chuẩn, df = độ tự do


1
Tôi đoán tôi bối rối về các tham số của phân phối t. Nó có 2 tham số (trung bình, df) hoặc 3 (trung bình, độ lệch chuẩn, df) không? Tôi đã tự hỏi nếu một người có thể phù hợp với tham số 'df'.
12719

1
@ user12719 Phân phối của Student-t có ba tham số: vị trí, tỷ lệ và mức độ tự do. Chúng không được gọi là giá trị trung bình, độ lệch chuẩn và df vì giá trị trung bình và phương sai của phân phối này phụ thuộc vào ba tham số. Ngoài ra, chúng không tồn tại trong một số trường hợp. Peter Flom đang sửa lỗi df nhưng đây cũng có thể được coi là một tham số không xác định.

1
@PeterFlom Trong trường hợp phân phối Cauchy , rõ ràng m và s là vị trí và tỷ lệ. Tôi đồng ý ký hiệu m và s gợi ý rằng chúng tương ứng với độ lệch trung bình và độ lệch chuẩn. Nhưng điều này có thể chỉ là một sự đơn giản hóa \mu\sigmalà tốt. +1 từ lâu, nhân tiện.

1
@PeterFlom Việc trích dẫn này từ tệp trợ giúp của R có ngụ ý rằng df luôn là 9 cho phân phối của sinh viên không? Bạn có nghĩ rằng df cũng nên được ước tính không? Trên thực tế, sự vắng mặt dflà nguyên nhân gây ra lỗi và câu trả lời đúng sẽ cung cấp một số công thức để tìm ra nó.
Sergey Bushmanov

1
@PeterFlom BTW, nếu bạn đọc vài dòng tệp trợ giúp phía trên trích dẫn của bạn, bạn sẽ thấy lý do tại sao df=9tốt trong ví dụ của họ và không liên quan ở đây.
Sergey Bushmanov
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.