Eu li este parágrafo em James et al., Introdução à Aprendizagem Estatística , p183-184 [1]:
Como a média de muitas quantidades altamente correlacionadas tem uma variação maior do que a média de muitas quantidades que não são tão altamente correlacionadas, a estimativa de erro de teste resultante do LOOCV tende a ter uma variação maior do que a estimativa de erro de teste resultante do CV k-fold.
Você pode me dar um exemplo numérico, por exemplo, em R, para verificar a validade desta reivindicação?
Tentei verificar usando o seguinte código:
x = 1:100 #highly correlated data
y = sample(100) #same data without correlation
var(x) == var(y) # TRUE
O que está errado neste código?
- LOOCV significa "deixar de fora uma validação cruzada"
[1]: James, G., Witten, D., Hastie, T., Tibshirani, R. (2013),
Uma Introdução à Aprendizagem Estatística com Aplicações em R ,
Springer Textos em Estatística, Springer Science + Business Media, Nova York
fonte
sort(sample(100))
perceber que é idêntico1:100
e, portanto, suas variações são idênticas. Não posso ajudá-lo com o primeiro pedaço do seu post - eu pensaria que quantidades correlacionadas têm menor variação (por exemplo, correlações intra-cluster), mas não sei o que é LOOCV.1:100
não é mais correlacionado que o vetorsample(100)
. Eles podem ter sido gerados de maneira diferente, mas, além da ordem, são idênticos. Certamente, o cálculo da variação não leva em consideração o pedido. Existem exemplos on-line de como simular dados correlatos que provavelmente são o que você precisa.acf(x)
eacf(y)
veja a si mesmo!var
função, assim como seria se você calculasse a variação por t. Além disso, e possivelmente mais útil, ver ligaçãoRespostas:
A variação calculada no código exibe cada matriz como se fosse uma amostra de 100 valores separados. Como o array e sua versão permutada contêm os mesmos 100 valores, eles têm a mesma variação.
A maneira correta de simular a situação na cotação requer repetição. Gere uma amostra de valores. Calcule sua média. (Isso desempenha o papel de "estimativa de erro de teste".) Repita várias vezes. Colete todos esses meios e veja quanto eles variam. Essa é a "variação" referida na cotação.
Podemos antecipar o que acontecerá:
Quando os elementos de cada amostra nesse processo são correlacionados positivamente, quando um valor é alto, os outros tendem a ser altos também. A média deles será alta. Quando um valor é baixo, os outros também tendem a ser baixos. A média deles será baixa. Assim, os meios tendem a ser altos ou baixos.
Quando os elementos de cada amostra não são correlacionados, a quantidade pela qual alguns elementos são altos é geralmente equilibrada (ou "cancelada") por outros elementos baixos. No geral, a média tende a estar muito próxima da média da população da qual as amostras são coletadas - e raramente muito maior ou muito menor que isso.
R
facilita colocar isso em ação. O principal truque é gerar amostras correlacionadas. Uma maneira é usar variáveis normais padrão: combinações lineares delas podem ser usadas para induzir qualquer quantidade de correlação que você desejar.Aqui, por exemplo, estão os resultados desse experimento repetido quando ele foi realizado 5.000 vezes usando amostras de tamanho . Em um caso, as amostras foram obtidas de uma distribuição normal padrão. No outro, foram obtidos de maneira semelhante - ambos com média zero e variação unitária -, mas a distribuição da qual foram extraídos apresentava um coeficiente de correlação de .n = 2 90 %
A linha superior mostra as distribuições de frequência de todas as 5.000 médias. A linha inferior mostra os gráficos de dispersão gerados por todos os 5.000 pares de dados. Pela diferença de espalhamento dos histogramas, fica claro que o conjunto de médias das amostras não correlacionadas é menos disperso do que o conjunto de médias das amostras correlacionadas, exemplificando o argumento "cancelando".
A diferença na quantidade de spread se torna mais acentuada com maior correlação e com tamanhos de amostra maiores. O
R
código permite que você especifique comorho
en
, respectivamente, para que você possa experimentar. Como o código da pergunta, seu objetivo é produzir matrizesx
(a partir de amostras não correlacionadas) ey
(a partir de amostras correlacionadas) para comparação posterior.Agora, quando você calcular as variações das matrizes de médias
x
ey
, seus valores serão diferentes:A teoria nos diz que essas variações estarão próximas de e . Eles diferem dos valores teóricos apenas porque apenas 5.000 repetições foram feitas. Com mais repetições, as variações de e tenderão mais perto de seus valores teóricos.( 1 + 1 ) /22= 0,5 ( 1 + 2 × 0,9 + 1 ) /22= 0,95
x
y
fonte
mvtnorm
pacote.Sigma <- outer(1:n, 1:n, function(i,j) rho^abs(i-j)) xy = mvtnorm::rmvnorm(5000,mean=c(0,0),sigma = Sigma)
Como posso entender o caminho queQ %*% Z
leva a quantidades correlacionadas? livros, referências?mvtnorm
, porque ele me permitiu usar exatamente os mesmos valores de