Possiamo trovare diversi metodi di ricampionamento , o vagamente chiamati metodi di " simulazione ", che dipendono dal ricampionamento o dal mescolamento dei campioni. Potrebbero esserci differenze nelle opinioni rispetto alla terminologia corretta, ma la seguente discussione cerca di generalizzare e semplificare ciò che è disponibile nella letteratura appropriata:
I metodi di ricampionamento sono usati per (1) stimare la precisione / accuratezza delle statistiche del campione attraverso l'uso di un sottoinsieme di dati (ad esempio Jackknifing) o disegnare in modo casuale con la sostituzione da una serie di punti di dati (ad esempio bootstrap) (2) Scambiare etichette su punti di dati quando si esegue un significato test ( test di permutazione, chiamati anche test esatti, test di randomizzazione o test di ri-randomizzazione) (3) Convalida dei modelli utilizzando sottoinsiemi casuali (bootstrap, cross validation) (vedi Wikipedia: metodi di ricampionamento )
BOOTSTRAPING
"Il bootstrap è un metodo statistico per stimare la distribuzione campionaria di uno stimatore campionando con la sostituzione dal campione originale". Il metodo assegna misure di accuratezza (definite in termini di distorsione , varianza , intervalli di confidenza , errore di previsione o qualche altra misura di questo tipo) per stimare le stime.
L'idea di base del bootstrap è che l'inferenza su una popolazione dai dati del campione ( campione → popolazione ) può essere modellata ricampionando i dati del campione ed eseguendo l'inferenza su (ricampionare → campione). Poiché la popolazione è sconosciuta, il vero errore in una statistica campione rispetto al suo valore di popolazione è inconoscibile. Nei bootstrap-resamples, la "popolazione" è in effetti il campione, e questo è noto; quindi la qualità dell'inferenza dai dati di ricampionamento → campione 'vero' è misurabile. "vedi Wikipedia
Yvar <- c(8,9,10,13,12, 14,18,12,8,9, 1,3,2,3,4)
#To generate a single bootstrap sample
sample(Yvar, replace = TRUE)
#generate 1000 bootstrap samples
boot <-list()
for (i in 1:1000)
boot[[i]] <- sample(Yvar,replace=TRUE)
In problemi univariati, di solito è accettabile ricampionare le singole osservazioni con la sostituzione ("ricampionamento del caso"). Qui ricampioniamo i dati con la sostituzione e la dimensione del ricampionamento deve essere uguale alla dimensione del set di dati originale.
Nei problemi di regressione, il ricampionamento dei casi si riferisce al semplice schema di ricampionamento dei singoli casi - spesso righe di un set di dati in problemi di regressione, le variabili esplicative sono spesso fisse, o almeno osservate con più controllo rispetto alla variabile di risposta. Inoltre, l'intervallo delle variabili esplicative definisce le informazioni disponibili da esse. Pertanto, ricampionare i casi significa che ogni campione di bootstrap perderà alcune informazioni (vedi Wikipedia ). Quindi sarà logico campionare le righe dei dati piuttosto semplicemente Yvar
.
Yvar <- c(8,9,10,13,12, 14,18,12,8,9, 1,3,2,3,4)
Xvar <- c(rep("A", 5), rep("B", 5), rep("C", 5))
mydf <- data.frame (Yvar, Xvar)
boot.samples <- list()
for(i in 1:10) {
b.samples.cases <- sample(length(Xvar), length(Xvar), replace=TRUE)
b.mydf <- mydf[b.samples.cases,]
boot.samples[[i]] <- b.mydf
}
str(boot.samples)
boot.samples[1]
Puoi vedere alcuni casi ripetuti mentre stiamo campionando con la sostituzione.
" Bootstrap parametrico : un modello parametrico viene adattato ai dati, spesso con la massima probabilità, e campioni di numeri casuali vengono estratti da questo modello adattato . Di solito il campione prelevato ha le stesse dimensioni del campione dei dati originali. Quindi la quantità o la stima , di interesse viene calcolato da questi dati. Questo processo di campionamento viene ripetuto più volte come per altri metodi bootstrap. L'uso di un modello parametrico nella fase di campionamento della metodologia bootstrap porta a procedure diverse da quelle ottenute applicando la teoria statistica di base per dedurre lo stesso modello. "(vedi Wikipedia ). Di seguito è riportato il bootstrap parametrico con assunzione della distribuzione normale con parametri di deviazione media e standard.
Yvar <- c(8,9,10,13,12, 14,18,12,8,9, 1,3,2,3,4)
# parameters for Yvar
mean.y <- mean(Yvar)
sd.y <- sd(Yvar)
#To generate a single bootstrap sample with assumed normal distribution (mean, sd)
rnorm(length(Yvar), mean.y, sd.y)
#generate 1000 bootstrap samples
boot <-list()
for (i in 1:1000)
boot[[i]] <- rnorm(length(Yvar), mean.y, sd.y)
Esistono altre varianti di bootstrap, consulta la pagina di Wikipedia o qualsiasi buon libro statistico sul ricampionamento.
Jacknife
"Lo stimatore jackknife di un parametro si trova tralasciando sistematicamente ogni osservazione da un set di dati e calcolando la stima e quindi trovando la media di questi calcoli. Dato un campione di dimensione N, la stima jackknife si trova aggregando le stime di ogni N − 1
stima nel campione ". vedi: wikipedia Quanto segue mostra come jackknife il Yvar
.
jackdf <- list()
jack <- numeric(length(Yvar)-1)
for (i in 1:length (Yvar)){
for (j in 1:length(Yvar)){
if(j < i){
jack[j] <- Yvar[j]
} else if(j > i) {
jack[j-1] <- Yvar[j]
}
}
jackdf[[i]] <- jack
}
jackdf
"il bootstrap regolare e il jackknife, stimano la variabilità di una statistica dalla variabilità di quella statistica tra i sottocampioni, piuttosto che dai presupposti parametrici . Per il jackknife più generale, il jackknife osservazioni delete-m, il bootstrap può essere visto come un caso approssimazione. Entrambi producono risultati numerici simili, motivo per cui ognuno può essere visto come approssimazione all'altro. " Vedi questa domanda su Bootstrap vs Jacknife.
PROVE DI RANDOMIZZAZIONE
"Nei test parametrici campioniamo casualmente da una o più popolazioni. Facciamo alcune ipotesi su quelle popolazioni, più comunemente che sono normalmente distribuite con varianze uguali. Stabiliamo un'ipotesi nulla che è inquadrata in termini di parametri, spesso nella forma m1 -m2 = 0. Utilizziamo le nostre statistiche di esempio come stime dei corrispondenti parametri della popolazione e calcoliamo una statistica di test (come nel test) Ad esempio: nel test t di Student per le differenze nelle medie quando le varianze sono sconosciute, ma sono considerate essere uguali. L'ipotesi di interesse è quella H0: m1 = m2
. Una delle ipotesi alternative sarebbe dichiarata come:HA: m1 < m2
. Dati due campioni prelevati dalle popolazioni 1 e 2, supponendo che si tratti di popolazioni normalmente distribuite con varianze uguali e che i campioni siano stati estratti in modo indipendente e casuale da ciascuna popolazione, è possibile elaborare una statistica la cui distribuzione è nota per testare H0
.
Un modo per evitare queste ipotesi distributive è stato l'approccio ora chiamato statistiche non parametriche, di ordine di rango, di ordine di rango e libere di distribuzione. Queste statistiche prive di distribuzione sono generalmente criticate per essere meno "efficienti" rispetto al test analogo basato sul presupposto che le popolazioni siano normalmente distribuite.
Un altro approccio alternativo è l'approccio di randomizzazione - "processo di assegnazione casuale di ranghi ad osservazioni indipendenti dalla propria conoscenza di quale campione un'osservazione è un membro. Un test di randomizzazione si avvale di tale procedura, ma lo fa operando sulle osservazioni anziché sull'articolazione classifica delle osservazioni. Per questo motivo, la distribuzione di una statistica analoga (la somma delle osservazioni in un campione) non può essere facilmente tabulata, sebbene sia teoricamente possibile enumerare tale distribuzione "( vedi )
I test di randomizzazione differiscono dai test parametrici per quasi tutti gli aspetti. (1) Non è necessario disporre di campioni casuali da una o più popolazioni, in effetti di solito non abbiamo effettuato il campionamento casuale. (2) Raramente pensiamo in termini di popolazioni da cui provengono i dati, e non è necessario assumere nulla sulla normalità o l'omoscedasticità (3) La nostra ipotesi nulla non ha nulla a che fare con i parametri, ma è formulata in modo piuttosto vago, come, per esempio, l'ipotesi che il trattamento non abbia alcun effetto sul rendimento dei partecipanti. (4) Poiché non ci occupiamo delle popolazioni, non ci occupiamo di stimare (o addirittura testare) le caratteristiche di quelle popolazioni (5) una sorta di statistica di prova, tuttavia non confrontiamo tale statistica con le distribuzioni presentate. Anziché, lo confrontiamo con i risultati ottenuti quando randomizziamo ripetutamente i dati tra i gruppi e calcoliamo la statistica corrispondente per ogni randomizzazione. (6) Ancor più dei test parametrici, i test di randomizzazione sottolineano l'importanza dell'assegnazione casuale dei partecipanti ai trattamenti. "vedi .
Il tipo di test di randomizzazione che è molto popolare è il test di permutazione. Se la dimensione del nostro campione è 12 e 5, la permutazione totale possibile è C(12,5) = 792
. Se le dimensioni dei nostri campioni fossero 10 e 15, sarebbero stati possibili oltre 3,2 milioni di arrangiamenti. Questa è la sfida informatica: che cosa succede allora? Campione . Quando l'universo delle possibili disposizioni è troppo grande per essere enumerato, perché non campionare le disposizioni di questo universo in modo indipendente e casuale? La distribuzione della statistica del test su questa serie di campioni può quindi essere tabulata, calcolata la sua media e varianza e stimato il tasso di errore associato a un test di ipotesi.
TEST DI PERMUTAZIONE
Secondo wikipedia "Un test di permutazione (chiamato anche test di randomizzazione , test di ri-randomizzazione o test esatto ) è un tipo di test di significatività statistica in cui si ottiene la distribuzione della statistica test sotto l'ipotesi nulla calcolando tutti i possibili valori della statistica test sotto riarrangiamenti delle etichette sui punti dati osservati. Esistono test di permutazione per qualsiasi statistica test, indipendentemente dal fatto che sia nota o meno la sua distribuzione. Pertanto, si è sempre liberi di scegliere la statistica che meglio discrimina tra ipotesi e alternativa e che minimizza le perdite ".
La differenza tra permutazione e bootstrap sta nel fatto che bootstrap campiona con sostituzione e permutazioni campionano senza sostituzione . In entrambi i casi, si perde l'ordine temporale delle osservazioni e quindi si perde il clustering di volatilità , garantendo così che i campioni siano sotto l'ipotesi nulla di nessun cluster di volatilità.
Le permutazioni hanno sempre tutte le stesse osservazioni, quindi sono più simili ai dati originali che ai campioni bootstrap. L'aspettativa è che il test di permutazione sia più sensibile di un test bootstrap. Le permutazioni distruggono il clustering di volatilità ma non aggiungono altra variabilità .
Vedi la domanda sulla permutazione vs il bootstrap - "Il test di permutazione è il migliore per testare le ipotesi e il bootstrap è il migliore per stimare gli intervalli di confidenza ".
Quindi, per eseguire la permutazione in questo caso, possiamo semplicemente cambiare replace = FALSE
nell'esempio di bootstrap sopra.
Yvar <- c(8,9,10,13,12, 14,18,12,8,9, 1,3,2,3,4)
#generate 1000 bootstrap samples
permutes <-list()
for (i in 1:1000)
permutes[[i]] <- sample(Yvar,replace=FALSE)
In caso di più di una variabile, il solo prelievo delle righe e il rimescolamento dell'ordine non faranno alcuna differenza poiché i dati rimarranno gli stessi. Quindi rimpasto la variabile y. Qualcosa che hai fatto, ma non credo che non abbiamo bisogno di un doppio rimescolamento di entrambi x
e y variables
(come hai fatto).
Yvar <- c(8,9,10,13,12, 14,18,12,8,9, 1,3,2,3,4)
Xvar <- c(rep("A", 5), rep("B", 5), rep("C", 5))
mydf <- data.frame (Yvar, Xvar)
permt.samples <- list()
for(i in 1:10) {
t.yvar <- Yvar[ sample(length(Yvar), length(Yvar), replace=FALSE) ]
b.df <- data.frame (Xvar, t.yvar)
permt.samples[[i]] <- b.df
}
str(permt.samples)
permt.samples[1]
METODI DI MONTE CARLO
"I metodi Monte Carlo (o esperimenti Monte Carlo) sono un'ampia classe di algoritmi computazionali che si basano su ripetuti campionamenti casuali per ottenere risultati numerici; in genere si eseguono simulazioni più volte per ottenere la distribuzione di un'entità probabilistica sconosciuta. Il nome deriva dalla somiglianza della tecnica all'atto di giocare e registrare i risultati in un vero casinò. "Vedi Wikipedia
"Nelle statistiche applicate, i metodi Monte Carlo sono generalmente utilizzati per due scopi:
(1) Per confrontare le statistiche concorrenti per piccoli campioni in condizioni di dati realistici. Sebbene l'errore di tipo I e le proprietà di potenza delle statistiche possano essere calcolati per i dati ricavati dalle classiche distribuzioni teoriche (ad esempio, curva normale, distribuzione di Cauchy) per condizioni asintotiche (cioè, dimensione del campione infinita ed effetto di trattamento infinitamente piccolo), i dati reali spesso lo fanno non avere tali distribuzioni.
(2) Fornire implementazioni di test di ipotesi più efficienti di test esatti come test di permutazione (che sono spesso impossibili da calcolare) pur essendo più accurati dei valori critici per le distribuzioni asintotiche.
I metodi Monte Carlo sono anche un compromesso tra randomizzazione approssimativa e test di permutazione . Un test di randomizzazione approssimativo si basa su un sottoinsieme specificato di tutte le permutazioni (che comporta un servizio di pulizie potenzialmente enorme di cui sono state prese in considerazione le permutazioni). L'approccio Monte Carlo si basa su un numero specificato di permutazioni disegnate casualmente ( scambiando una perdita minore in precisione se una permutazione viene disegnata due volte - o più frequentemente - per l'efficienza di non dover tracciare quali permutazioni sono già state selezionate ). "
Sia il test MC che il test di permutazione sono talvolta chiamati collettivamente test di randomizzazione . La differenza è in MC che campioniamo i campioni di permutazione, piuttosto usando tutte le possibili combinazioni vedi .
CONVALIDA INCROCIATA
L'idea oltre la convalida incrociata è che i modelli dovrebbero essere testati con dati che non sono stati utilizzati per adattarsi al modello. La convalida incrociata è forse più spesso utilizzata nel contesto della previsione .
"La convalida incrociata è un metodo statistico per la convalida di un modello predittivo. I sottoinsiemi dei dati sono considerati come set di convalida ; un modello è adatto ai dati rimanenti (un set di addestramento) e utilizzato per prevedere il set di convalida. Media la qualità delle previsioni nei set di convalida produce una misura complessiva dell'accuratezza della previsione.
Una forma di validazione incrociata lascia fuori una singola osservazione alla volta; questo è simile al coltello a serramanico. Un altro, K-fold cross-validation, divide i dati in K sottoinsiemi; ciascuno è tenuto a turno come set di convalida. "vedi Wikipedia . La convalida incrociata di solito viene eseguita con dati quantitativi. Puoi in qualche modo convertire i tuoi dati qualitativi (dati fattoriali) in quantitativi per adattarli a un modello lineare e testare questo modello. Quanto segue è semplice strategia di controllo in cui il 50% dei dati viene utilizzato per la previsione del modello mentre il resto viene utilizzato per i test. Supponiamo che Xvar
sia anche una variabile quantitativa.
Yvar <- c(8,9,10,13,12, 14,18,12,8,9, 1,3,2,3,4)
Xvar <- c(rep(1, 5), rep(2, 5), rep(3, 5))
mydf <- data.frame (Yvar, Xvar)
training.id <- sample(1:nrow(mydf), round(nrow(mydf)/2,0), replace = FALSE)
test.id <- setdiff(1:nrow(mydf), training.id)
# training dataset
mydf.train <- mydf[training.id]
#testing dataset
mydf.test <- mydf[test.id]
A differenza dei bootstrap e dei test di permutazione, il set di dati di convalida incrociata per addestramento e test è diverso. La figura seguente mostra un riepilogo del ricampionamento in diversi metodi.
Spero che questo aiuti un po '.