Description Usage Arguments Details Value Author(s) Examples
Algorytm działa w następujący sposób. Na wstępie agregowane są wartości
do poziomu score. Tak przygotowane informacje posłużą
do wygenerowania losowo liczby badów i goodów dla każdego score, jakie zostałyby wylosowane
w eksperymencie losowania ze zwracaniem z wyjściowej próby.
Jednorazowo losowanych jest tyle prób bootstrap, aby liczba wszystkich wylosowanych
obserwacji
nie przekroczyła n_once
. Ma to zapobiec przekroczeniu dostępnej wielkości pamięci.
Z wylosowanych obserwacji tworzone są macierze
do funkcji AR_quick
, gdzie jedna kolumna odpowiada jedemu eksperymentowi.
Jeśli liczba kolumn w macierzy jest mniejsza niż n_boot
, co może być
spowodowane ograniczeniem przez n_once
, wykonywana jest
kolejna pętla. Algorytm został zoptymalizowany pod kątem prób, w których
występuje mała liczba unikalnych wartości score
, w stosunku do liczby obserwacji w próbie.
1 2 3 4 5 6 7 8 |
score |
wektor z wartościami score. |
def |
wektor z liczbą defaultów dla danego rekordu danych. |
n_boot |
liczba prób bootstrap do wygenerowania. |
obs |
wektor z liczbą obserwacji dla danego rekordu danych. |
n_once |
ile jednorazowo maksymalnie może być wylosowanych obserwacji. Parametr dodany jedynie, aby nie przekroczyć dostępnej pamięci. Nie ma wpływu na końcowy wynik. |
seed |
ziarno. |
Dane wejściowe mogą być już w jakiś sposób zagregowane (np.do poziomu score), lub nie.
Zwraca wektor długości b_boot+1
. Pierwszy element wektora
zawiera wyliczony AR na całej próbie, w dalszej kolejności znajdują
się wartości wyliczone w oparciu o próby bootstrap.
Michał Danaj
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 | ## dane do przykładu
n<-100000; #liczba obserwacji w prĂłbie
nb<-100; #liczba prĂłb bootstrap
score<-rnorm(n); #generowanie score
def<-as.numeric(score+rnorm(n)<0) #generowanie defaultĂłw
score<-floor(200*score) #dyskretyzacja wartości score
#liczba unikalnych wartości score
length(unique(score))
#[1] 1362
#czas wykonania
system.time(AR_boot(score, def, nb))
#user system elapsed
# .41 0.00 1.53
#porównanie z czasem wykonania w przypadku pętli i stadradowej funkcji
#do wyliczania GINI
system.time(
sapply(1:nb, function(i){
id<-sample(length(score), replace=TRUE);
AR(score[id], def[id])['AR']
})
)
# user system elapsed
#83.66 1.62 92.44
|
Add the following code to your website.
For more information on customizing the embed code, read Embedding Snippets.