BaşlayınÜcretsiz başlayın

Karışım dağılımlarından örnekleme (I)

Bir karışım dağılımı, yoğunluğu normal dağılım yoğunluklarının (bileşenlerin) doğrusal birleşimi olan bir dağılımdır. Her bileşenin bir ağırlığı (seçilme olasılığı), bir ortalaması ve bir standart sapması vardır (tıpkı diğer normal dağılımlar gibi).

Algoritmayı iki egzersizde adım adım kuracaksın. Bu bölümde, choose_component() tanımını tamamlayarak örnekleme yapılacak bileşeni seçeceksin.

Bu egzersiz, kursun bir parçasıdır

Rcpp ile R Kodunu Optimize Etme

Kursa Göz Atın

Egzersiz talimatları

  • R ad alanındaki runif() fonksiyonunu kullanarak 0 ile total_weight arasında uniform bir rastgele sayı üret.
  • While döngüsünün içinde, x değerini weights'ın j. elemanı kadar azalt.

Uygulamalı etkileşimli egzersiz

Bu egzersizi bu örnek kodu tamamlayarak deneyin.

#include 
using namespace Rcpp;

// [[Rcpp::export]]
int choose_component(NumericVector weights, double total_weight) {
  // Generate a uniform random number from 0 to total_weight
  double x = ___::___(0, ___);
  
  // Remove the jth weight from x until x is small enough
  int j = 0;
  while(x >= weights[j]) {
    // Subtract jth element of weights from x
    ___;
    j++;
  }
  
  return j;
}

/*** R
  weights <- c(0.3, 0.7)
  # Randomly choose a component 5 times
  replicate(5, choose_component(weights, sum(weights)))
*/
Kodu Düzenle ve Çalıştır