Tổng các biến ngẫu nhiên cắt ngắn bình thường


8

Giả sử tôi có biến ngẫu nhiên bình thường độc lậpn

X1~N(μ1,σ12)X2~N(μ2,σ22)Xn~N(μn,σn2)

và . Tôi sẽ mô tả mật độ của như thế nào nếu phân phối của mỗi được cắt ngắn trong ? Nói cách khác, tôi đang lấy mẫu từ phân phối bình thường độc lập, loại bỏ các mẫu không nằm trong phạm vi của mỗi trung bình và tổng hợp chúng. Y X i ( μ i - 2 σ i , μ i + 2 σ i ) n 2 σ iY= =X1+X2++XnYXTôi(μTôi-2σTôi,μTôi+2σTôi)n2σTôi

Ngay bây giờ, tôi đang làm điều này với mã R bên dưới:

x_mu <- c(12, 18, 7)
x_sd <- c(1.5, 2, 0.8)
a <- x_mu - 2 * x_sd
b <- x_mu + 2 * x_sd

samples <- sapply(1:3, function(i) {
  return(rtruncnorm(100000, a[i], b[i], x_mu[i], x_sd[i]))
})

y <- rowSums(samples)

Có phương pháp nào để tạo ra mật độ của trực tiếp không?Y


2
Câu hỏi của bạn ngụ ý rằng bạn biết tất cả . Đó thực sự là trường hợp hoặc bạn đang ước tính chúng? Có một sự khác biệt rất lớn! Vì tò mò, tại sao bạn lại vứt bỏ dữ liệu đó? Tùy thuộc vào mục tiêu của bạn, tôi nghi ngờ có tồn tại (nhiều) thủ tục tốt hơn. σTôi
whuber

Tôi biết tất cả các phương tiện và SD cho dữ liệu của tôi, vâng.
Devin

7
Tôi tin rằng bạn có thể mô tả nó là "một mớ hỗn độn". Bài viết này, jstor.org/ sóng / 2236545 , xem xét vấn đề, với sự nghiêm ngặt khoa học hơn.
Alecos Papadopoulos

2
Xấp xỉ bên ngoài thông qua CLT, điều này là tương đối khó khăn. Tôi đoán nếu đủ nhỏ, bạn có thể thử tích chập số. n
Glen_b -Reinstate Monica

2
@Silverfish Tùy thuộc vào việc triển khai, nền tảng và mức độ chấp nhận được của lưới, hàng trăm sẽ ổn (có lẽ nhiều hơn); Tuy nhiên, bên cạnh tốc độ, với đủ điều khoản, bạn phải cẩn thận hơn nhiều về các chi tiết thực hiện hoặc một số vấn đề về số có thể bắt đầu tăng lên.
Glen_b -Reinstate Monica

Câu trả lời:


2

Bạn có thể sử dụng xấp xỉ bằng các phương pháp yên ngựa, cho tổng các quy tắc rút ngắn. Bây giờ tôi sẽ không cung cấp thông tin chi tiết, bạn có thể xem câu trả lời của tôi về Tổng phân phối Gamma cho các gợi ý. Những gì chúng ta cần là tìm hàm tạo thời điểm cho một bình thường bị cắt cụt, rất dễ dàng. Tôi sẽ làm điều đó ở đây cho một tiêu chuẩn bình thường bị cắt ở , có mật độ f ( x ) = { 1±2 nơiC=Φ(2)-Φ(-2)ở đâyφ(x),Φ(x)là mật độ và lũy cho một tiêu chuẩn bình thường, tương ứng.

f(x)= ={1Cφ(x),|x|20,|x|>2
C= =Φ(2)-Φ(-2)φ(x),Φ(x)

Hàm tạo mô men có thể được tính là và sau đó chúng ta có thể sử dụng xấp xỉ yên ngựa.

M(t)= =EetX= =1C-22etxφ(x)dx= =1Ce12t2[Φ(2-t)-Φ(-2-t)]

-3

Tôi tò mò tại sao, nhưng vâng, có một cách đơn giản để tạo pdf của tổng số phân phối này:

## install.packages("truncnorm")
## install.packages("caTools")
library(truncnorm)

x.mu <- c(12, 18, 7)
x.sd <- c(1.5, 2, 0.8)
x.a <- x.mu - 2*x.sd
x.b <- x.mu + 2*x.sd

dmulti <- function(x, a, b, mu, sd)
  rowSums(
    sapply(1:length(mu),
           function(idx)
             dtruncnorm(x, a=a[idx], b=b[idx], mean=mu[idx], sd=sd[idx])))/length(mu)
pmulti <- function(q, a, b, mu, sd)
  rowSums(
    sapply(1:length(mu),
           function(idx)
             ptruncnorm(q, a=a[idx], b=b[idx], mean=mu[idx], sd=sd[idx])))/length(mu)

pointrange <- range(c(x.a, x.b))
pointseq <- seq(pointrange[1], pointrange[2], length.out=100)
## Plot the probability density function
plot(pointseq, dmulti(pointseq, x.a, x.b, x.mu, x.sd),
     type="l")

## Plot the cumulative distribution function
plot(pointseq, pmulti(pointseq, x.a, x.b, x.mu, x.sd),
     type="l")

Nếu tôi đọc mã này một cách chính xác, bạn dường như đang thực hiện một cái gì đó giống như một hỗn hợp chứ không phải là tổng kết. Cốt truyện mà mã này tạo ra là không chính xác. Nó thậm chí không phải là một hàm mật độ xác suất hợp lệ!
whuber

@whuber, cảm ơn vì đã bắt. Tôi đã chuẩn hóa pdf và thêm cdf.
Bill Denney

3
Cảm ơn bạn. Tuy nhiên, lỗi cơ bản vẫn tồn tại: bạn đang tính toán phân phối hỗn hợp thay vì tổng.
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.