2011-01-26 25 views
32

Có thể tạo ra các bản phân phối trong R có nghĩa là gì, có nghĩa là, SD, skew và kurtosis? Cho đến nay nó xuất hiện các tuyến đường tốt nhất sẽ là tạo ra các số ngẫu nhiên và chuyển đổi chúng cho phù hợp. Nếu có một gói phù hợp để tạo ra các bản phân phối cụ thể mà có thể được điều chỉnh, tôi chưa tìm thấy nó. Cảm ơnLàm thế nào để tạo ra phân phối cho, có nghĩa là, SD, nghiêng và kurtosis trong R?

+3

Như đã trình bày những không duy nhất mô tả một bản phân phối. Ngay cả khi bạn xác định tất cả các khoảnh khắc bạn không được đảm bảo để xác định duy nhất một bản phân phối. Tôi nghĩ bạn cần giải thích chính xác bạn đang cố làm gì. Tại sao bạn đang cố gắng làm điều này? Bạn có thể đặt thêm các hạn chế để có thể xác định phân phối không? – Dason

+0

Ah vâng, chúng tôi muốn phân phối liên tục, đơn phương trong một chiều. Các bản phân phối kết quả cuối cùng sẽ được chuyển đổi bằng số như một cách để kiểm tra một biến thể của lý thuyết thích hợp thông qua mô phỏng. –

+2

Trên xác nhận chéo (số liệu thống kê.SE), phần sau có liên quan một chút và có thể được người đọc quan tâm: [Làm cách nào để mô phỏng dữ liệu đáp ứng các ràng buộc cụ thể như có độ lệch chuẩn và trung bình cụ thể?] (Http: //stats.stackexchange .com/q/30303/7290) – gung

Trả lời

30

Có bản phân phối của Johnson trong gói SuppDists. Johnson sẽ cung cấp cho bạn một bản phân phối phù hợp với khoảnh khắc hoặc số lượng. Các bình luận khác là chính xác rằng 4 khoảnh khắc không phải là sự phân phối. Nhưng Johnson chắc chắn sẽ cố gắng.

Dưới đây là một ví dụ về việc lắp đặt một Johnson đối với một số dữ liệu mẫu:

require(SuppDists) 

## make a weird dist with Kurtosis and Skew 
a <- rnorm(5000, 0, 2) 
b <- rnorm(1000, -2, 4) 
c <- rnorm(3000, 4, 4) 
babyGotKurtosis <- c(a, b, c) 
hist(babyGotKurtosis , freq=FALSE) 

## Fit a Johnson distribution to the data 
## TODO: Insert Johnson joke here 
parms<-JohnsonFit(babyGotKurtosis, moment="find") 

## Print out the parameters 
sJohnson(parms) 

## add the Johnson function to the histogram 
plot(function(x)dJohnson(x,parms), -20, 20, add=TRUE, col="red") 

Cốt truyện cuối cùng trông như thế này:

enter image description here

Bạn có thể thấy một chút vấn đề mà những người khác chỉ trong khoảng 4 khoảnh khắc không hoàn toàn nắm bắt được phân phối.

Chúc may mắn!

CHỈNH SỬA Như Hadley đã chỉ ra trong nhận xét, phù hợp với Johnson sẽ tắt. Tôi đã kiểm tra nhanh và phù hợp với phân phối Johnson bằng cách sử dụng moment="quant" phù hợp với phân phối Johnson bằng cách sử dụng 5 số lượng thay vì 4 khoảnh khắc. Các kết quả tìm kiếm tốt hơn nhiều:

parms<-JohnsonFit(babyGotKurtosis, moment="quant") 
plot(function(x)dJohnson(x,parms), -20, 20, add=TRUE, col="red") 

nào sản xuất như sau:

enter image description here

Bất cứ ai có bất cứ ý tưởng tại sao Johnson dường như thiên vị khi phù hợp sử dụng những khoảnh khắc?

+2

Có điều gì đó sai với đường cong đó - một sự thay đổi vị trí đơn giản sẽ làm cho phù hợp hơn đáng kể – hadley

+0

Tôi đồng ý nó sẽ tắt. Khi tôi có một ít thời gian tôi có thể đào sâu vào nó một chút. –

1

Các thông số đó không thực sự xác định đầy đủ phân phối. Cho rằng bạn cần mật độ hoặc tương đương với chức năng phân phối.

0

Như @David và @Carl đã viết ở trên, có một số gói dành riêng để tạo các bản phân phối khác nhau, xem ví dụ: the Probability distributions Task View on CRAN.

Nếu bạn quan tâm đến lý thuyết (cách vẽ mẫu số phù hợp với phân phối cụ thể với các tham số đã cho) thì chỉ cần tìm các công thức thích hợp, ví dụ: xem gamma distribution on Wiki và tạo nên một hệ thống chất lượng đơn giản với các thông số được cung cấp để tính toán tỷ lệ và hình dạng.

Xem ví dụ cụ thể here, trong đó tôi đã tính các thông số alpha và beta của phân phối beta bắt buộc dựa trên độ lệch trung bình và chuẩn.

+0

Bạn có thể vui lòng nêu rõ lý do tại sao tôi nhận được phiếu giảm giá? – daroczig

12

Đây là một câu hỏi thú vị, không thực sự có giải pháp tốt. Tôi đoán rằng mặc dù bạn không biết những khoảnh khắc khác, bạn có ý tưởng về phân phối sẽ trông như thế nào. Ví dụ, nó không đơn điệu.

Có một vài cách khác nhau để giải quyết vấn đề này:

  1. Giả sử một khoảnh khắc phân phối và kết hợp cơ bản.Có nhiều gói R tiêu chuẩn để thực hiện việc này. Một nhược điểm là tổng quát đa biến có thể không rõ ràng.

  2. xấp xỉ gần đúng. Trong bài báo này:

    Gillespie, C.S. và Renshaw, E. An improved saddlepoint approximation.Toán Biosciences, 2007.

    Chúng tôi nhìn vào việc khôi phục một pdf/PMF khi đưa ra chỉ vài khoảnh khắc đầu tiên. Chúng tôi thấy rằng phương pháp này hoạt động khi độ lệch không quá lớn.

  3. mở rộng Laguerre:

    Mustapha, H. và Dimitrakopoulosa, R. Generalized Laguerre expansions of multivariate probability densities with moments. Máy vi tính & Toán học với ứng dụng, 2010.

    Kết quả trong bài viết này có vẻ hứa hẹn hơn, nhưng tôi chưa mã hóa chúng.

3

Tôi đồng ý bạn cần ước tính mật độ để nhân rộng bất kỳ phân phối nào. Tuy nhiên, nếu bạn có hàng trăm biến, như là điển hình trong một mô phỏng Monte Carlo, bạn sẽ cần phải có một sự thỏa hiệp.

Một gợi ý cách tiếp cận như sau:

  1. Sử dụng Fleishman chuyển đổi để có được hệ số cho skew nhất định và nhọn. Fleishman lấy độ lệch và kurtosis và cung cấp cho bạn các hệ số
  2. Tạo N biến bình thường (mean = 0, std = 1)
  3. Chuyển đổi dữ liệu trong (2) với hệ số Fleishman để chuyển đổi dữ liệu bình thường sang nghiêng và nhọn
  4. Trong bước này, dữ liệu sử dụng từ từ bước (3) và chuyển đổi nó để giá trị trung bình mong muốn và độ lệch chuẩn (std) sử dụng new_data = mong muốn bình + (dữ liệu từ bước 3) * mong muốn std

Dữ liệu kết quả từ Bước 4 sẽ có giá trị trung bình, độ lệch, độ lệch và kurtosis mong muốn.

Hãy cẩn thận:

  1. Fleishman sẽ không làm việc cho tất cả các kết hợp của độ lệch và kurtois
  2. Trên bước giả biến không tương quan. Nếu bạn muốn tạo dữ liệu có liên quan, bạn sẽ cần một bước trước khi Fleishman chuyển đổi
+0

Có R thực hiện điều này? –

7

Câu hỏi này được hỏi hơn 3 năm trước, vì vậy tôi hy vọng câu trả lời của tôi không đến quá muộn.

một cách để xác định duy nhất phân phối khi biết một số khoảnh khắc. Bằng cách đó là phương pháp Tối đa Entropy. Phân phối kết quả từ phương pháp này là phân phối tối đa hóa sự thiếu hiểu biết của bạn về cấu trúc của phân phối, cho những gì bạn biết. Bất kỳ phân phối nào khác cũng có những khoảnh khắc mà bạn đã chỉ định nhưng không phải là bản phân phối MaxEnt ngầm giả định cấu trúc nhiều hơn những gì bạn nhập vào. Chức năng tối đa hóa là Entropy Information của Shannon, $ S [p (x)] = - \ int p (x) log p (x) dx $.Biết được ý nghĩa, sd, skewness và kurtosis, dịch như những ràng buộc về những khoảnh khắc thứ nhất, thứ hai, thứ ba và thứ tư của phân phối, tương ứng.

Vấn đề là sau đó để tối đa hóa S chịu sự ràng buộc: 1) $ \ int xp (x) dx = "giây phút đầu tiên" $, 2) $ \ int x^2 p (x) dx = "giây phút" $, 3) ... và như vậy trên

Tôi đề nghị cuốn sách "Harte, J., Entropy tối đa và sinh thái học: Lý thuyết phong phú, phân phối và năng lượng (Oxford University Press, New York, 2011). "

Dưới đây là một liên kết mà cố gắng để thực hiện điều này trong R: https://stats.stackexchange.com/questions/21173/max-entropy-solver-in-r

Các vấn đề liên quan