Cách tiếp cận của @ ocram chắc chắn sẽ có hiệu quả. Về mặt các thuộc tính phụ thuộc, nó hơi hạn chế.
Một phương pháp khác là sử dụng copula để lấy phân phối chung. Bạn có thể chỉ định phân phối cận biên cho thành công và tuổi tác (nếu bạn có dữ liệu hiện tại thì điều này đặc biệt đơn giản) và một họ copula. Thay đổi các tham số của copula sẽ mang lại mức độ phụ thuộc khác nhau và các họ copula khác nhau sẽ cung cấp cho bạn các mối quan hệ phụ thuộc khác nhau (ví dụ: phụ thuộc đuôi mạnh).
Một tổng quan gần đây về việc làm điều này trong R thông qua gói copula có sẵn ở đây . Xem thêm các cuộc thảo luận trong bài báo đó cho các gói bổ sung.
Bạn không nhất thiết cần một gói toàn bộ mặc dù; đây là một ví dụ đơn giản sử dụng copula Gaussian, xác suất thành công cận biên 0,6 và độ tuổi phân phối gamma. Thay đổi r để kiểm soát sự phụ thuộc.
r = 0.8 # correlation coefficient
sigma = matrix(c(1,r,r,1), ncol=2)
s = chol(sigma)
n = 10000
z = s%*%matrix(rnorm(n*2), nrow=2)
u = pnorm(z)
age = qgamma(u[1,], 15, 0.5)
age_bracket = cut(age, breaks = seq(0,max(age), by=5))
success = u[2,]>0.4
round(prop.table(table(age_bracket, success)),2)
plot(density(age[!success]), main="Age by Success", xlab="age")
lines(density(age[success]), lty=2)
legend('topright', c("Failure", "Success"), lty=c(1,2))
Đầu ra:
Bàn:
success
age_bracket FALSE TRUE
(0,5] 0.00 0.00
(5,10] 0.00 0.00
(10,15] 0.03 0.00
(15,20] 0.07 0.03
(20,25] 0.10 0.09
(25,30] 0.07 0.13
(30,35] 0.04 0.14
(35,40] 0.02 0.11
(40,45] 0.01 0.07
(45,50] 0.00 0.04
(50,55] 0.00 0.02
(55,60] 0.00 0.01
(60,65] 0.00 0.00
(65,70] 0.00 0.00
(70,75] 0.00 0.00
(75,80] 0.00 0.00