Podemos encontrar diferentes métodos de reamostragem , ou métodos vagamente chamados de " simulação ", que dependem da reamostragem ou do embaralhamento das amostras. Pode haver diferenças de opinião com relação à terminologia adequada, mas a discussão a seguir tenta generalizar e simplificar o que está disponível na literatura apropriada:
Os métodos de reamostragem são usados em (1) estimar a precisão / exatidão das estatísticas da amostra através do uso de subconjunto de dados (por exemplo, Jackknifing) ou desenhar aleatoriamente com a substituição de um conjunto de pontos de dados (por exemplo, inicialização) (2) Trocar etiquetas nos pontos de dados ao realizar significância testes ( testes de permutação, também chamados testes exatos, testes de randomização ou testes de re-randomização) (3) Validando modelos usando subconjuntos aleatórios (inicialização, validação cruzada) (consulte a Wikipédia: métodos de reamostragem )
BOOTSTRAPING
"O bootstrapping é um método estatístico para estimar a distribuição amostral de um estimador por amostragem com substituição da amostra original". O método atribui medidas de precisão (definidas em termos de viés , variação , intervalos de confiança , erro de previsão ou alguma outra medida) a estimativas amostrais.
A idéia básica do bootstrapping é que a inferência sobre uma população a partir de dados da amostra ( amostra → população ) possa ser modelada através da nova amostragem dos dados da amostra e da realização de inferência ((amostragem → amostra)). Como a população é desconhecida, o erro verdadeiro em uma estatística de amostra em relação ao seu valor populacional é incognoscível. Nas reamostragens de bootstrap, a "população" é de fato a amostra, e isso é conhecido; portanto, a qualidade de inferência a partir de dados resample → amostra 'verdadeira' é mensurável." ver 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)
Em problemas univariados, geralmente é aceitável redefinir as observações individuais com substituição ("reamostragem de caso"). Aqui, reamostramos os dados com substituição, e o tamanho da reamostragem deve ser igual ao tamanho do conjunto de dados original.
Nos problemas de regressão, a reamostragem de caso refere-se ao esquema simples de reamostrar casos individuais - geralmente linhas de um conjunto de dados em problemas de regressão, as variáveis explicativas são geralmente fixas ou, pelo menos, observadas com mais controle do que a variável de resposta. Além disso, o intervalo das variáveis explicativas define as informações disponíveis a partir delas. Portanto, reamostrar casos significa que cada amostra de bootstrap perderá algumas informações (consulte a Wikipedia ). Portanto, será lógico fazer uma amostra justa das linhas dos dados 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]
Você pode ver que alguns casos são repetidos enquanto estamos amostrando com substituição.
" Bootstrap paramétrico - um modelo paramétrico é ajustado aos dados, geralmente por probabilidade máxima, e amostras de números aleatórios são retiradas desse modelo ajustado . Geralmente, a amostra retirada tem o mesmo tamanho de amostra que os dados originais. Em seguida, a quantidade ou estimativa , o interesse é calculado a partir desses dados.Este processo de amostragem é repetido muitas vezes como em outros métodos de inicialização.O uso de um modelo paramétrico no estágio de amostragem da metodologia de inicialização leva a procedimentos diferentes dos obtidos pela aplicação da teoria estatística básica inferência para o mesmo modelo. "(consulte Wikipedia ). A seguir, é apresentada uma inicialização paramétrica com suposição de distribuição normal com parâmetros de média e desvio padrão.
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)
Existem outras variantes do bootstrap, consulte a página da wikipedia ou qualquer bom livro estático sobre reamostragem.
JACKNIFE
"O estimador de canivete de um parâmetro é encontrado excluindo sistematicamente cada observação de um conjunto de dados e calculando a estimativa e, em seguida, encontrando a média desses cálculos. Dada uma amostra do tamanho N, a estimativa de canivete é encontrada agregando as estimativas de cada N − 1
estimativa na amostra ". veja: wikipedia O seguinte mostra como puxar o canivete 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
"o bootstrap regular e o jackknife, estimam a variabilidade de uma estatística a partir da variabilidade dessa estatística entre subamostras, em vez de suposições paramétricas . Para o jackknife mais geral, o jackknife delete-m observações, o bootstrap pode ser visto como um acaso Ambos produzem resultados numéricos semelhantes, razão pela qual cada um pode ser visto como uma aproximação ao outro. " Veja esta pergunta em Bootstrap vs Jacknife.
ENSAIOS DE RANDOMIZAÇÃO
"Nos testes paramétricos, coletamos amostras aleatoriamente de uma ou mais populações. Fazemos algumas suposições sobre essas populações, mais comumente que elas são normalmente distribuídas com variações iguais. Estabelecemos uma hipótese nula que é enquadrada em termos de parâmetros, geralmente da forma m1 -m2 = 0. Utilizamos nossas estatísticas amostrais como estimativas dos parâmetros populacionais correspondentes e calculamos uma estatística de teste (como no teste) Por exemplo: no teste t de Student - teste de diferenças nas médias quando as variações são desconhecidas, mas são consideradas A hipótese de interesse é essa H0: m1 = m2
. Uma hipótese alternativa seria declarada como:HA: m1 < m2
. Dadas duas amostras retiradas das populações 1 e 2, assumindo que essas são populações normalmente distribuídas com variâncias iguais, e que as amostras foram coletadas de forma independente e aleatória de cada população, uma estatística cuja distribuição é conhecida pode ser elaborada para testar H0
.
Uma maneira de evitar essas suposições distributivas tem sido a abordagem agora chamada de estatísticas não paramétricas, de ordem de classificação, de classificação e de distribuição. Essas estatísticas livres de distribuição são geralmente criticadas por serem menos "eficientes" do que o teste análogo, baseado no pressuposto de que as populações sejam normalmente distribuídas.
Outra abordagem alternativa é a abordagem de randomização - "processo de atribuir classificações aleatoriamente a observações, independentemente do conhecimento de quem amostra é uma observação. Um teste de randomização utiliza esse procedimento, mas o faz operando nas observações e não na articulação. Por esse motivo, a distribuição de uma estatística análoga (a soma das observações em uma amostra) não pode ser facilmente tabulada, embora seja teoricamente possível enumerar essa distribuição "( ver )
Os testes de randomização diferem dos testes paramétricos em quase todos os aspectos. (1) Não há exigência de que tenhamos amostras aleatórias de uma ou mais populações - na verdade, geralmente não temos amostragens aleatórias. (2) Raramente pensamos em termos das populações de onde os dados vieram e não há necessidade de assumir nada sobre normalidade ou homoscedasticidade. (3) Nossa hipótese nula não tem nada a ver com parâmetros, mas é redigida de maneira vaga, pois: por exemplo, a hipótese de que o tratamento não tem efeito sobre o desempenho dos participantes. (4) Como não estamos preocupados com as populações, não estamos preocupados em estimar (ou mesmo testar) as características dessas populações (5). tipo de estatística de teste, no entanto, não comparamos essa estatística com distribuições apresentadas. Em vez de, comparamos com os resultados obtidos quando randomizamos os dados repetidamente nos grupos e calculamos a estatística correspondente para cada randomização. (6) Ainda mais que os testes paramétricos, os testes de randomização enfatizam a importância da atribuição aleatória dos participantes aos tratamentos ".veja .
O tipo de teste de randomização muito popular é o teste de permutação. Se o tamanho da amostra for 12 e 5, a permutação total possível é C(12,5) = 792
. Se nossos tamanhos de amostra fossem 10 e 15, mais de 3,2 milhões de arranjos seriam possíveis. Este é o desafio da computação: o que então? Amostra . Quando o universo de arranjos possíveis é muito grande para enumerar, por que não provar arranjos desse universo de forma independente e aleatória? A distribuição da estatística do teste nessas séries de amostras pode ser tabulada, sua média e variância calculadas e a taxa de erro associada a um teste de hipótese estimado.
ENSAIO DE PERMUTAÇÃO
De acordo com a wikipedia "Um teste de permutação (também chamado de teste de randomização , teste de re-randomização ou teste exato ) é um tipo de teste de significância estatística em que a distribuição da estatística do teste sob a hipótese nula é obtida calculando todos os valores possíveis da estatística de teste sob rearranjos dos rótulos nos pontos de dados observados.Existem testes de permutação para qualquer estatística de teste, independentemente de sua distribuição ser ou não conhecida.Portanto, é sempre possível escolher a estatística que melhor discrimina entre hipótese e alternativa e o que minimiza as perdas ".
A diferença entre permutação e autoinicialização é que as autoinicializações são amostradas com substituição e as permutações são exibidas sem substituição . Em qualquer um dos casos, a ordem temporal das observações é perdida e, portanto, o agrupamento por volatilidade é perdido - garantindo assim que as amostras estão sob a hipótese nula de não agrupar volatilidade.
As permutações sempre têm as mesmas observações, portanto, são mais parecidas com os dados originais do que com amostras de autoinicialização. A expectativa é que o teste de permutação seja mais sensível do que um teste de autoinicialização. As permutações destroem o agrupamento de volatilidade, mas não adicionam nenhuma outra variabilidade .
Veja a pergunta sobre permutação versus inicialização - "O teste de permutação é melhor para testar hipóteses e a inicialização é melhor para estimar intervalos de confiança ".
Portanto, para executar a permutação nesse caso, podemos apenas mudar replace = FALSE
no exemplo de inicialização acima.
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)
No caso de mais de uma variável, apenas escolher as linhas e reorganizar a ordem não fará nenhuma diferença, pois os dados permanecerão os mesmos. Então, reorganizamos a variável y. Algo que você fez, mas acho que não precisamos reorganizar duas vezes x
e y variables
(como você fez).
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]
MÉTODOS MONTE CARLO
"Os métodos de Monte Carlo (ou experimentos de Monte Carlo) são uma ampla classe de algoritmos computacionais que se baseiam em amostragem aleatória repetida para obter resultados numéricos; normalmente, são executadas simulações várias vezes para obter a distribuição de uma entidade probabilística desconhecida. O nome vem da semelhança da técnica ao ato de tocar e gravar os resultados em um cassino real. "ver Wikipedia
"Nas estatísticas aplicadas, os métodos de Monte Carlo são geralmente usados para dois propósitos:
(1) Comparar estatísticas concorrentes para amostras pequenas em condições realistas de dados. Embora as propriedades estatísticas e de erro e potência do tipo I possam ser calculadas para dados extraídos de distribuições teóricas clássicas (por exemplo, curva normal, distribuição de Cauchy) para condições assintóticas (isto é, tamanho infinito da amostra e efeito infinitesimalmente pequeno do tratamento), dados reais geralmente são não tem tais distribuições.
(2) Fornecer implementações de testes de hipóteses que são mais eficientes do que testes exatos, como testes de permutação (que geralmente são impossíveis de calcular) enquanto são mais precisos que os valores críticos para distribuições assintóticas.
Os métodos de Monte Carlo também são um compromisso entre testes aproximados de randomização e permutação . Um teste de aleatorização aproximado é baseado em um subconjunto especificado de todas as permutações (o que implica uma limpeza potencialmente enorme, cujas permutações foram consideradas). A abordagem de Monte Carlo baseia-se em um número especificado de permutações extraídas aleatoriamente ( trocando uma pequena perda de precisão se uma permutação for extraída duas ou mais vezes - pela eficiência de não precisar rastrear quais permutações já foram selecionadas ). "
O teste de MC e de permutação é chamado coletivamente de testes de randomização . A diferença está no MC que amostramos as amostras de permutação, usando todas as combinações possíveis, veja .
VALIDAÇÃO CRUZADA
A idéia além da validação cruzada é que os modelos devem ser testados com dados que não foram usados para se ajustar ao modelo. A validação cruzada é talvez usada com mais frequência no contexto de previsão .
"A validação cruzada é um método estatístico para validar um modelo preditivo. Subconjuntos de dados são mantidos para uso como conjuntos de validação ; um modelo é adequado aos dados restantes (um conjunto de treinamento) e usado para prever o conjunto de validação. a qualidade das previsões nos conjuntos de validação gera uma medida geral da precisão das previsões.
Uma forma de validação cruzada deixa de fora uma única observação de cada vez; isso é semelhante ao canivete. Outro, validação cruzada com dobra K, divide os dados em subconjuntos K; cada um é apresentado por sua vez como o conjunto de validação. "consulte Wikipedia . A validação cruzada geralmente é feita com dados quantitativos. Você pode converter seus dados qualitativos (dados fatoriais) em quantitativos de alguma maneira para ajustar um modelo linear e testar esse modelo. A seguir, é simples estratégia de espera em que 50% dos dados são usados para previsão do modelo, enquanto o restante é usado para teste.Vamos assumir que Xvar
também é uma variável 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]
Ao contrário dos testes de inicialização e permutação, o conjunto de dados de validação cruzada para treinamento e teste é diferente. A figura a seguir mostra um resumo da reamostragem em diferentes métodos.
Espero que isso ajude um pouco.