Nous pouvons trouver différentes méthodes de rééchantillonnage , ou plus généralement appelées méthodes de " simulation ", qui dépendent du rééchantillonnage ou du brassage des échantillons. Il peut y avoir des divergences d'opinions quant à la terminologie appropriée, mais la discussion suivante tente de généraliser et de simplifier ce qui est disponible dans la littérature appropriée:
Les méthodes de rééchantillonnage sont utilisées pour (1) estimer la précision / exactitude de statistiques d'échantillon en utilisant un sous-ensemble de données (par exemple, Jackknifing) ou en tirant au hasard avec remplacement à partir d'un ensemble de points de données (par exemple, bootstrapping) (2) Échange d'étiquettes sur des points de données pour la signification tests ( tests de permutation, également appelés tests exacts, tests de randomisation ou tests de re-randomisation) (3) Validation de modèles à l'aide de sous-ensembles aléatoires (amorçage, validation croisée) (voir wikipedia: méthodes de rééchantillonnage )
BOOTSTRAPING
"Le bootstrap est une méthode statistique permettant d'estimer la distribution d'échantillonnage d'un estimateur par échantillonnage avec remplacement à partir de l'échantillon d'origine". La méthode attribue des mesures d'exactitude (définies en termes de biais , de variance , d' intervalles de confiance , d' erreur de prédiction ou d'une autre mesure de ce type) à des estimations d'échantillonnage.
L'idée de base de l'amorçage est que l'inférence sur une population à partir de données d'échantillon ( échantillon → population ) peut être modélisée en rééchantillonnant les données de l'échantillon et en effectuant l'inférence sur (rééchantillonnage → échantillon). Comme la population est inconnue, l'erreur vraie dans un échantillon statistique par rapport à sa valeur de population est inconnaissable. Dans les rééchantillons bootstrap, la «population» est en fait l'échantillon, et ceci est connu; par conséquent, la qualité de l'inférence à partir des données de rééchantillonnage → "vrai" échantillon est mesurable. "voir 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)
Dans les problèmes univariés, il est généralement acceptable de rééchantillonner les observations individuelles avec remplacement ("rééchantillonnage de cas"). Ici, nous rééchantillons les données avec remplacement, et la taille du rééchantillonnage doit être égale à la taille de l'ensemble de données d'origine.
Dans les problèmes de régression, le rééchantillonnage de cas fait référence au schéma simple consistant à rééchantillonner des cas individuels - souvent des lignes d'un ensemble de données dans des problèmes de régression, les variables explicatives sont souvent fixes, ou au moins observées avec plus de contrôle que la variable de réponse. En outre, la plage des variables explicatives définit les informations disponibles à partir de celles-ci. Par conséquent, rééchantillonner les cas signifie que chaque échantillon bootstrap perdra certaines informations (voir Wikipedia ). Il sera donc logique d'échantillonner les lignes de données plutôt que simplement 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]
Vous pouvez voir que certains cas sont répétés alors que nous échantillonnons avec remplacement.
" Bootstrap paramétrique - un modèle paramétrique est ajusté aux données, souvent par maximum de vraisemblance, et des échantillons de nombres aléatoires sont tirés de ce modèle ajusté . Généralement, l'échantillon prélevé a la même taille d'échantillon que les données d'origine. Ensuite, la quantité, ou l'estimation , l’intérêt est calculé à partir de ces données. Ce processus d’échantillonnage est répété plusieurs fois, comme pour d’autres méthodes bootstrap. L’utilisation d’un modèle paramétrique au stade de l’échantillonnage de la méthode bootstrap conduit à des procédures différentes de celles obtenues en appliquant la théorie statistique de base d'inférence pour le même modèle. "(voir Wikipedia ). Ce qui suit est un bootstrap paramétrique avec une hypothèse de distribution normale avec des paramètres de déviation moyenne et 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)
Il existe d'autres variantes de bootstrap, veuillez consulter la page wikipedia ou tout bon livre de statistiques sur le ré-échantillonnage.
JACKNIFE
"L'estimateur jackknife d'un paramètre est obtenu en omettant systématiquement chaque observation dans un jeu de données et en calculant l'estimation, puis en calculant la moyenne de ces calculs. Pour un échantillon de taille N, l'estimation jackknife est obtenue en agrégeant les estimations de chaque N − 1
estimation. dans l'échantillon. " voir: wikipedia Ce qui suit montre comment faire un jackknife 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
"le bootstrap normal et le jackknife, estiment la variabilité d'une statistique à partir de la variabilité de cette statistique entre sous-échantillons, plutôt que par des hypothèses paramétriques . Pour le jackknife plus général, les observations delete-m Les deux résultats donnent des résultats numériques similaires, ce qui explique pourquoi chacun peut être considéré comme une approximation de l’autre. " Voir cette question sur Bootstrap vs Jacknife.
TESTS DE RANDOMISATION
"Dans les tests paramétriques, nous échantillonnons de manière aléatoire une ou plusieurs populations. Nous émettons certaines hypothèses à propos de ces populations, le plus souvent qu’elles sont normalement réparties avec des variances égales. Nous établissons une hypothèse nulle définie en termes de paramètres, souvent de la forme m1 -m2 = 0. Nous utilisons nos statistiques d'échantillon comme estimations des paramètres de population correspondants et calculons une statistique de test (telle que at test), par exemple: dans Student's - teste les différences de moyennes lorsque les variances sont inconnues, mais sont prises en compte L’hypothèse d’intérêt est la suivante H0: m1 = m2
: L’une des hypothèses alternatives serait la suivante:HA: m1 < m2
. Étant donné que deux échantillons sont tirés des populations 1 et 2, en supposant qu'il s'agisse de populations normalement réparties présentant des variances égales et que les échantillons ont été prélevés indépendamment et au hasard dans chaque population, une statistique dont la distribution est connue peut être élaborée pour être testée H0
.
L 'approche maintenant appelée statistiques non paramétriques, sans ordre de rang, sans rang et sans distribution est un moyen d' éviter ces hypothèses de répartition. Ces statistiques sans distribution sont généralement critiquées pour être moins "efficaces" que le test analogue basé sur l'hypothèse que les populations sont distribuées normalement.
Une approche alternative est l’approche de randomisation - "processus consistant à attribuer de façon aléatoire des notes à des observations indépendamment de la connaissance de l’échantillon dont une observation est un membre. Un test de randomisation utilise une telle procédure, mais utilise plutôt les observations plutôt que la classement des observations. Pour cette raison, la distribution d’une statistique analogue (la somme des observations dans un échantillon) ne peut pas être facilement tabulée, bien qu’il soit théoriquement possible d’énumérer une telle distribution "( voir )
Les tests de randomisation diffèrent des tests paramétriques à presque tous les égards. (1) Il n’est pas nécessaire de disposer d’échantillons aléatoires d’une ou de plusieurs populations. En fait, nous n’avons généralement pas échantillonné au hasard. (2) Nous pensons rarement aux populations d'où proviennent les données et il n'est pas nécessaire de supposer quoi que ce soit au sujet de la normalité ou de l'homoscédasticité (3) Notre hypothèse nulle n'a rien à voir avec des paramètres, mais est formulée de manière assez vague, car Par exemple, l’hypothèse selon laquelle le traitement n’a pas d’effet sur le comportement des participants (4). Parce que nous ne sommes pas concernés par les populations, nous ne sommes pas concernés par l’estimation (ni même par les tests) des caractéristiques de ces populations (5). sorte de statistique de test, mais nous ne comparons pas cette statistique aux distributions présentées. Au lieu, nous le comparons aux résultats obtenus lorsque nous randomisons les données à plusieurs reprises et calculons la statistique correspondante pour chaque randomisation. (6) Encore plus que les tests paramétriques, les tests de randomisation soulignent l’importance de l’affectation aléatoire des participants aux traitements. "voir .
Le type de test de randomisation très populaire est le test de permutation. Si la taille de notre échantillon est 12 et 5, la permutation totale possible est C(12,5) = 792
. Si la taille de nos échantillons avait été de 10 et 15, plus de 3,2 millions d'arrangements auraient été possibles. C'est un défi informatique: Quoi alors? Exemple . Quand l'univers des arrangements possibles est trop grand pour être énuméré, pourquoi ne pas échantillonner les arrangements de cet univers indépendamment et au hasard? La distribution de la statistique de test sur cette série d'échantillons peut ensuite être tabulée, sa moyenne et sa variance calculées, et le taux d'erreur associé à un test d'hypothèse estimé.
TEST DE PERMUTATION
Selon wikipedia « Un test de permutation (également appelé un test de randomisation , test de rééchantillonnage , ou un test exact ) est un type de test de signification statistique dans laquelle la distribution de la statistique de test sous l'hypothèse nulle est obtenue en calculant toutes les valeurs possibles de la statistique de test sous réarrangements des étiquettes sur les points de données observées. tests permutation existent pour une statistique de test, peu importe si oui ou non la distribution est connue. Ainsi , on est toujours libre de choisir la statistique qui correspond le mieux discriminant entre les hypothèses et alternatives et qui minimise les pertes. "
La différence entre permutation et bootstrap est que bootstraps sample avec replacement et permutations sample sans remplacement . Dans les deux cas, l'ordre chronologique des observations est perdu et donc le regroupement de la volatilité est perdu - assurant ainsi que les échantillons sont sous l'hypothèse nulle du regroupement sans volatilité.
Les permutations ont toujours toutes les mêmes observations, elles ressemblent donc davantage aux données d'origine qu'aux échantillons bootstrap. On s’attend à ce que le test de permutation soit plus sensible qu’un test bootstrap. Les permutations détruisent le regroupement de la volatilité mais n’ajoutent aucune autre variabilité .
Voir la question sur la permutation et l'amorçage - "Le test de permutation est le meilleur pour tester les hypothèses et l'amorce est le meilleur pour estimer les intervalles de confiance ".
Donc, pour effectuer la permutation dans ce cas, nous pouvons simplement changer replace = FALSE
dans l'exemple de bootstrap ci-dessus.
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)
Dans le cas de plusieurs variables, le simple choix des lignes et le remaniement de l'ordre ne feront aucune différence, car les données resteront les mêmes. Nous remettons donc la variable y en revue. Quelque chose que vous avez fait, mais je ne pense pas que nous n’ayons pas besoin d’une double redistribution des deux x
et y variables
(comme vous l’avez fait).
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]
METHODES DE MONTE CARLO
"Les méthodes de Monte Carlo (ou expériences de Monte Carlo) sont une vaste classe d'algorithmes de calcul qui reposent sur un échantillonnage aléatoire répété pour obtenir des résultats numériques. Généralement, on effectue des simulations plusieurs fois pour obtenir la distribution d'une entité probabiliste inconnue. de la ressemblance de la technique à l'acte de jouer et d'enregistrer les résultats dans un vrai casino de jeu. "voir Wikipedia
"Dans les statistiques appliquées, les méthodes de Monte Carlo sont généralement utilisées à deux fins:
(1) Comparer des statistiques concurrentes pour de petits échantillons dans des conditions de données réalistes. Bien que l’erreur de type I et les propriétés de puissance des statistiques puissent être calculées pour des données tirées de distributions théoriques classiques (par exemple, courbe normale, distribution de Cauchy) et pour des conditions asymptotiques (taille de l’échantillon infinie et effet de traitement infiniment petit), les données réelles pas de telles distributions.
(2) Fournir des implémentations de tests d'hypothèses plus efficaces que des tests exacts tels que les tests de permutation (souvent impossibles à calculer) tout en étant plus précises que les valeurs critiques pour les distributions asymptotiques.
Les méthodes de Monte Carlo sont également un compromis entre la randomisation approximative et les tests de permutation . Un test de randomisation approximatif est basé sur un sous-ensemble spécifié de toutes les permutations (ce qui implique une gestion potentiellement énorme dont les permutations ont été prises en compte). L’approche de Monte Carlo est basée sur un nombre spécifié de permutations dessinées au hasard ( échange d’une perte de précision mineure si une permutation est dessinée deux fois - ou plus fréquemment - pour que l’efficacité de ne pas avoir à repérer les permutations déjà sélectionnées ). "
MC et test de permutation sont parfois appelés collectivement tests de randomisation . La différence est dans MC nous échantillonnons les échantillons de permutation, en utilisant plutôt toutes les combinaisons possibles, voir .
VALIDATION CROISÉE
L'idée au-delà de la validation croisée est que les modèles doivent être testés avec des données qui ne sont pas utilisées pour correspondre au modèle. La validation croisée est peut-être le plus souvent utilisée dans le contexte de la prédiction .
"La validation croisée est une méthode statistique permettant de valider un modèle prédictif. Des sous-ensembles de données sont conservés pour être utilisés en tant qu'ensembles de validation ; un modèle est ajusté aux données restantes (un ensemble d'apprentissage) et utilisé pour prédire l'ensemble de validation. la qualité des prévisions sur les ensembles de validation fournit une mesure globale de la précision des prévisions.
Une forme de validation croisée omet une observation à la fois; c'est semblable au jackknife. Une autre validation, la validation croisée des plis en K , divise les données en K sous-ensembles; Voir Wikipédia . La validation croisée se fait généralement avec des données quantitatives. Vous pouvez convertir vos données qualitatives (données factorielles) en données quantitatives pour les adapter à un modèle linéaire et les tester. Ce qui suit est simple stratégie de rétention dans laquelle 50% des données sont utilisées pour la prédiction du modèle, tandis que le reste est utilisé à des fins de test Xvar
.
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]
Contrairement aux tests d'amorçage et de permutation, le jeu de données de validation croisée pour la formation et les tests est différent. La figure suivante montre un résumé du rééchantillonnage selon différentes méthodes.
J'espère que ça aide un peu.