#----------------------------------------------------------------- # Para selecionar amostras de uma população, basta usar a função - # sample e relacioná-la com as informações disponíveis - #----------------------------------------------------------------- rm(list=ls()) help("sample") ?sample #------------------------------ # Amostragem simples ao acaso - #------------------------------ # 1:10 sample(1:10) # somente uma permutação; ou seja, amostra de 10 elementos de 1:10 sample(1:10, 5) # retirar aleatoriamente 5 elementos de 1:10 sample(1:10, 5) # novamente! A amostra mudou sample(1:10, 5, replace = T) # amostras com reposição #------------------------------------------ # Gráfico mostrando as possíveis amostras - #------------------------------------------ x = cbind(rep(1:10, 10), gl(10, 10)) # gl = Generate Factor Levels # #par(mar = rep(0.1, 4)) par(mfrow=c(1,1)) for (i in 1:10){ plot(x, pch = 19, col = "blue", axes = F, ann = F) points(x[sample(100, 15), ], col = "red", cex = 3, lwd = 2) Sys.sleep(2) } ?Sys.sleep ###### moeda <- sample( x = c("Cara", "Coroa"), size = 10, replace = TRUE) table(moeda) table(moeda)/10 moeda <- sample( x = c("Cara", "Coroa"), size = 100, replace = TRUE) table(moeda) table(moeda)/100 moeda <- sample( x = c("Cara", "Coroa"), size = 1000, replace = TRUE) table(moeda) table(moeda)/1000 ## moeda viciada moeda <- sample( x = c("Cara", "Coroa"), size = 1000, replace = TRUE, prob = c(.2, .8)) table(moeda) table(moeda)/1000 ############## ## random sampling sample(x = 1:64, size = 0.25*64) ############### #-------------------------------------------- # Amostragem estratificada #-------------------------------------------- #----------------------------------------------------------------- #' Uma pesquisa será conduzida junto à comunidade universitária, #' constituída pelas seguintes categorias: #' #' Técnicos administrativos: 3.433; #' Docentes: 1.650; #' Alunos de graduação: 13.079; #' Alunos de pós-graduação: 4.779 #' #' Deve-se extrair uma amostra de n = 1.225. Considerando-se #' a proporcionalidade, qual o tamanho da amostra a ser extraída #' de cada um dos quatro estratos? #----------------------------------------------------------------- n = 1225 N1 = 3433 ; N2 = 1650 ; N3 = 13079 ; N4 = 4779 (N = N1 + N2 + N3 + N4) (f = n / N) n1 = f*N1 ; n2 = f*N2 ; n3 = f*N3 ; n4 = f*N4 (amostras = cbind(n1, n2, n3, n4)) round(amostras) # Se houver uma lista ordenada com os nomes: (amostra.1 = sample(N1, n1, replace=F)) (amostra.2 = sample(N2, n2, replace=F)) (amostra.3 = sample(N3, n3, replace=F)) (amostra.4 = sample(N4, n4, replace=F)) ############################################################### # Deve-se extrair uma amostra de tamanho n = 80 de uma população de # tamanho N = 2000, que consiste de 4 estratos de tamanhos N_1 = 500, # N_2 = 1200, N_3 = 200 e N_4 = 100. Se a alocação deve ser proporcional, # qual o tamanho da amostra a ser extraída de cada um dos quatro estratos? n = 80 N1 = 500 ; N2 = 1200 ; N3 = 200 ; N4 = 100 (N = N1 + N2 + N3 + N4) (f = n / N) n1 = f*N1 ; n2 = f*N2 ; n3 = f*N3 ; n4 = f*N4 (amostras = cbind(n1, n2, n3, n4)) # Se houver uma lista ordenada com os nomes: (amostra.1 = sample(N1, n1, replace=F)) (amostra.2 = sample(N2, n2, replace=F)) (amostra.3 = sample(N3, n3, replace=F)) (amostra.4 = sample(N4, n4, replace=F)) ################### ## https://geokrigagem.com.br/geoestatistica-no-r-licao-20-amostragens-tutorial/ library(gstat) require(sp) data(jura) ?jura ## Rock Types: 1: Argovian, 2: Kimmeridgian, ## 3: Sequanian, 4: Portlandian, 5: Quaternary. ## Land uses: 1: Forest, 2: Pasture (Weide(land), Wiese, Grasland), ## 3: Meadow (Wiese, Flur, Matte, Anger), ## 4: Tillage (Ackerland, bestelltes Land) summary(prediction.dat) summary(validation.dat) summary(transect.dat) summary(juragrid.dat) ## Transformando um data.frame para um SpatialPointsDataFrame coordinates(jura.grid) = ~Xloc+Yloc ## Os dados espaciais são especificados como gridded gridded(jura.grid)=TRUE ##################################### ## gerar amostras aleatórias simples library(RColorBrewer) cores=brewer.pal(n=4,name="Paired") plot(jura.grid["Rock"], main = "Amostragem aleatória simples") AAS = spsample(jura.grid, n=50, type ="random", col=cores) points(AAS, pch = 8, cex =0.5) ### gerar amostras aleatórias estratificadas ## a função spsample apenas estratifica os pontos espacialmente cores=brewer.pal(n=4,name="Dark2") plot(jura.grid["Landuse"], main = "Amostragem aleatória estratificada") AAE = spsample(jura.grid, n=50, type ="stratified", col=cores) points(AAE, pch = 10, cex =0.5) ### gerar amostras aleatórias sistemáticas cores=brewer.pal(n=4,name="RdBu") plot(jura.grid["Landuse"], main = "Amostragem aleatória sistemática", col=cores) AAsist = spsample(jura.grid, n=50, type ="regular") points(AAsist, pch = 19, cex =1) #### ########## da <- data.frame( x = 1:200, carac = sample(1:5, 200, replace = TRUE) ) lapply(split(da, da$carac), function(dado) { sample(dado$x, nrow(dado)*.25) }) ################### ### Distr amostral da proporção ## Exemplo slide 12, aula 8 pi = 0.37 n <- 200 a) (z <- (0.40-0.37)/sqrt(pi*(1-pi)/n)) 1-pnorm(0.88) ########## ###Distribuição amostral da média de amostras da ## distribuição normal ######################## # Neste exemplo, vamos obter 1000 amostras de tamanho 20 # de uma distribuição normal de média 100 e variância 30. # Vamos organizar as amostras em uma matriz em que cada # coluna corresponde a uma amostra. # A seguir, vamos calcular a média de cada amostra. # Esperamos que a média das médias amostrais seja 100 # e a variância seja 1,5 (= 30/20), e que a distribuição # das médias amostrais seja normal. # Para completar vamos obter o gráfico com o histograma # das médias das amostras e a distribuição teórica. (y <- matrix(rnorm(20000, mean=100, sd=sqrt(30)), nc=1000)) (ybar <- apply(y, 2, mean)) mean(ybar) # [1] 99.96043 30/20 var(ybar) # [1] 1.582839 hist(ybar, prob = T, ylim=c(0,0.4)) curve(dnorm(x, mean=100, sd=sqrt(30/20)), 95, 105, col = "red", add=T) ## http://www.leg.ufpr.br/Rpira/Rpira/node22.html ######## y <- matrix(rnorm(2000, mean=2.3, sd=0.7), nc=100) (ybar <- apply(y, 2, mean)) mean(ybar) var(ybar) hist(ybar, prob = T) curve(dnorm(x, mean=2.3, sd=0.7/sqrt(20)), 1, 3, add=T, col="red") curve(dnorm(x, mean=2.3, sd=0.7), 1,3.7, col="blue", ylim = c(0,2.5)) curve(dnorm(x, mean=2.3, sd=0.7/sqrt(20)), 1, 3.7, add=T, col="red") ## slide 21, aula 8 1-pnorm(2.86) 1-pnorm(5) qnorm(0.985) qnorm(0.975)