Saya mencari untuk menghasilkan 450 titik data dalam R. Ada tiga set yang berbeda 150 masing-masing didistribusikan dalam sebuah band lingkaran dengan jari-jari yang berbeda (pada 1, 2,8 dan 5).
Secara khusus, saya ingin mereproduksi grafik pertama pada hal. 466 dari The Elements of Statistics Learning.
Saya akan sangat berterima kasih atas bantuan dalam kode R yang dapat menghasilkan data ini.
Terima kasih!
Jawaban:
Dalam kasus lingkaran, cukup untuk menghasilkan sudut yang seragam, , pada dan kemudian buat jari-jari, , apa pun yang diinginkan. Jika Anda menginginkan Cartesian, daripada koordinat polar, dan .θ [ 0 , 2 π) r x = r cosθ y= r dosaθ
Salah satu cara yang sangat mudah untuk menghasilkan titik acak dari distribusi seragam a-d-sphere (a hypersphere dalam ruang dimensi sewenang-wenang , dengan permukaan dimensi ), adalah untuk menghasilkan normals standar multivariat , lalu skala menurut jaraknya dari titik asal:d+1 d Xi∼Nd+1(0,I)
dimanaadalah norma Euclidean .||.||
Dalam R, mari kita hasilkan pada permukaan bola (2-):
Inilah data dari dua sudut yang sedikit berbeda:
Anda kemudian dapat skala ke radius lain apa pun yang Anda suka.
Dalam dimensi rendah, ada cara yang lebih cepat, tetapi jika generator angka acak normal Anda cukup cepat, itu cukup baik dalam dimensi yang lebih tinggi.
Ada beberapa paket pada CRAN untuk statistik sirkuler, termasuk
CircStats
dancircular
. Mungkin ada sesuatu di CRAN yang menghasilkan distribusi seragam di n-bola untuk n> 1, tapi saya tidak tahu itu.sumber