Làm cách nào tôi có thể tạo các điểm phân phối đồng đều trên một vòng tròn?


8

Tôi đang tìm cách tạo 450 điểm dữ liệu trong R. Có ba bộ 150 khác nhau được phân phối trong một dải tròn với bán kính khác nhau (ở 1, 2,8 và 5).

Cụ thể, tôi đang tìm cách tái tạo biểu đồ đầu tiên trên p546 của Các yếu tố của học thống kê. nhập mô tả hình ảnh ở đây

Tôi sẽ rất biết ơn về một số trợ giúp trong mã R có thể tạo ra dữ liệu này.

Cảm ơn!


Xem ví dụ Lovisolo, da Silva. Phân phối đồng đều các điểm trên một siêu hình cầu với các ứng dụng cho mã hóa mặt phẳng bit vector . Không có mã sẵn sàng trong bài viết, nhưng thuật toán. Nếu bạn không thể tìm thấy pdf, hãy gửi email cho tôi.
ttnphns

Tạo các điểm đồng đều trên một hình cầu được mô tả tại stats.stackexchange.com/questions/7977/ mẹo ; phương pháp tổng quát hóa trực tiếp cho tất cả các kích thước khác. Nhưng tiêu đề của câu hỏi này dường như không có hoặc ít liên quan đến chính câu hỏi, yêu cầu phân phối đồng đều trên vòng tròn cùng với "nhiễu Gaussian" phụ gia theo hướng xuyên tâm. Do đó, tôi đã chỉnh sửa tiêu đề để thay đổi "hypersphere" thành "circle".
whuber

Câu trả lời:


11

Trong trường hợp hình tròn, nó đủ để tạo một góc đồng nhất, , trên và sau đó tạo bán kính, , bất cứ điều gì mong muốn. Nếu bạn muốn Cartesian, thay vì tọa độ cực, và .θ[0,2π)rx= =rcosθy= =rtộiθ

Một cách thực sự dễ dàng để tạo các điểm ngẫu nhiên từ phân bố đồng đều một hình cầu d (một siêu cầu trong không gian có kích thước tùy ý , với bề mặt của chiều ), là tạo ra các quy tắc chuẩn đa biến , và sau đó chia tỷ lệ theo khoảng cách từ gốc:d+1dXTôi~Nd+1(0,Tôi)

YTôi= =XTôi/||XTôi||,

nơilà chỉ tiêu Euclide .||.||

Trong R, hãy tạo ra trên bề mặt của một hình cầu (2-):

x <- matrix(rnorm(300),nc=3)
y <- x/sqrt(rowSums(x^2))
head(y)
           [,1]        [,2]       [,3]
[1,]  0.9989826 -0.03752732 0.02500752
[2,] -0.1740810  0.08668104 0.98090887
[3,] -0.7121632 -0.70011994 0.05153283
[4,] -0.5843537 -0.49940138 0.63963192
[5,] -0.7059208  0.20506946 0.67795451
[6,] -0.6244425 -0.70917197 0.32733262

head(rowSums(y^2))
[1] 1 1 1 1 1 1

Đây là dữ liệu từ hai góc độ hơi khác nhau:

Lô 3d của dữ liệu phân phối thống nhất trên hình cầu

Sau đó, bạn có thể mở rộng đến bất kỳ bán kính nào khác mà bạn thích.

Trong các kích thước thấp, có nhiều cách nhanh hơn, nhưng nếu trình tạo số ngẫu nhiên bình thường của bạn nhanh một cách hợp lý, thì nó khá tốt ở các kích thước cao hơn.

Có một số gói trên CRAN để thống kê thông tư, bao gồm CircStatscircular. Có lẽ có một cái gì đó trên CRAN tạo ra các bản phân phối đồng đều trên n-spher cho n> 1, nhưng tôi không biết về nó.


Đây là bước đầu tiên của cách tiếp cận được sử dụng trong bài viết mà tôi đề cập trong bình luận của tôi ở trên. Các tác giả sử dụng 3 giai đoạn: 1) tạo ra rất nhiều điểm dữ liệu thông thường và bán lại chúng thành bán kính đơn vị; 2) sử dụng phân cụm k-nghĩa để thay thế nhiều điểm cho k poin bạn cần để xếp gạch siêu phẳng, ốp lát gần với thống nhất cho đến nay; 3) áp dụng sự thay đổi đặc biệt cho từng điểm để đạt được sự đồng đều gần như chính xác. Tôi đã từng mã hóa thuật toán đó, nhưng trong SPSS, không phải trong R.
ttnphns

Tôi nghĩ rằng bước 2 và 3 hữu ích khi bạn muốn tạo lưới tốt trên quả cầu, nhưng không phải để tạo điểm ngẫu nhiên ... [@Glen_b câu trả lời hay! ]
Elvis

@ttnphns Tôi lấy câu hỏi để hỏi về các điểm có phân bố đồng đều trên bề mặt, chứ không phải là điểm mà các điểm gần nhau cách đều nhau.
Glen_b -Reinstate Monica

Nhưng tôi hiểu rằng OP đã yêu cầu điều này: ốp lát thực sự đồng đều, đều đặn, cách đều nhau. Dữ liệu ngẫu nhiên là xa thực sự thống nhất.
ttnphns

1
Phải, tất nhiên. Đối với định hướng, luôn luôn khôn ngoan khi nói phân phối "đến từ đồng phục / bình thường" thay vì phân phối "có đồng phục / bình thường" đáng ngờ.
ttnphns
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.