Na seção anterior explicitamos o caráter altamente subjetivo da abordagem tradicional à tarefa de se buscar os valores dos parâmetros que proporcionam o melhor ajuste teórico aos pontos do semivariograma experimental. Além disso, se esse procedimento iterativo de tentativa e erro não é feito de forma sistemática e se não segue a nenhum planejamento criterioso, ele pode ser muito pouco eficiente e recair em redundâncias ou em ações irrelevantes para o cumprimento da meta. Mesmo após a obtenção de um ajuste final satisfatório, a tarefa pode ter sido desnecessariamente exaustiva.
Figura 20. Semivariograma experimental com 25 pontos calculados. Visualmente
podemos notar a grande continuidade na origem e a ausência de efeito pepita. Entretanto, a escolha dos valores ótimos de alcance e patamar não é tarefa tão simples quando se emprega apenas a análise visual dos pontos.
A nossa proposta é a de formular um procedimento criterioso e sistemático para a escolha dos valores ótimos dos parâmetros de ajuste do variograma teórico baseado no conceito de Planejamento de Experimentos (Experiment Design).
O primeiro passo é definir para cada parâmetro de ajuste valores mínimo, intermediário e máximo que sejam razoáveis. No caso do patamar e do alcance, podemos fazer isto com o auxílio do semivariograma experimental por simples análise visual dos pontos. Escolhemos para o alcance os valores 150, 250 e 350. Para o patamar escolhemos os valores 0.7, 1.2 e 1.7. Para o terceiro parâmetro, , a escolha dos valores requer uma análise mais cuidadosa. Para isso, construímos um gráfico que mostra como o volume da superfície interpolada varia em função do valor de . Este gráfico é apresentado na Figura 21. Escolhemos para o parâmetro de suavização os valores 0.5, 1 e 3 que referem-se à faixa onde os valores de volume possuem ordem de grandeza compatível com os dados.
Figura 21. Comportamento do volume da superfície interpolada em função do valor do
parâmetro de suavização (). A curva em cor vermelha representa o volume da superfície interpolada enquanto que a curva azul indica o volume verdadeiro. No detalhe está uma ampliação do trecho do gráfico entre os valores de zero e cinco. É possível ver neste gráfico que a ordem de grandeza do valor do volume e de sua taxa de variação fica fora do domínio dos dados para maior do que três.
A Tabela 2 apresenta os valores mínimo, intermediário e máximo escolhidos para o alcance, patamar e . Estes valores são usados nos experimentos como base para a definição dos valores ótimos destes parâmetros.
Tendo definido os valores limites de cada parâmetro, somos agora capazes de estudar a influência de cada um desses parâmetros no resultado final, ou seja, queremos saber qual conjunto de valores fornece o melhor ajuste do semivariograma, tendo em vista a otimização da variável de controle. Para isso, empregamos um procedimento sistemático, eficiente e bem estruturado em bases de um esquema de Planejamento de Experimentos (Experiment Design).
O procedimento consiste em efetuar uma corrida com as combinações entre os parâmetros, ou um arranjo fatorial, e testar o comportamento do sistema para cada situação. Assim, para os parâmetros A (alcance), P (patamar) e K (suavização), os experimentos realizados são: A (variação de A), P (variação de P), K (variação de K), AP (variação conjunta de A e P), AK (variação conjunta de A e K), PK (variação conjunta de P e K) e APK (variação de todos os parâmetros). Tal técnica permite avaliar não somente os efeitos principais dos parâmetros, como também os efeitos de interação entre os mesmos.
A Figura 22 mostra, para cada experimento, como se comporta a variável de controle (volume) em função dos parâmetros. Conclui-se que o parâmetro K é determinante na obtenção do resultado final. Nesta figura, o símbolo A- representa todas as combinações em que A assume seu valor mínimo, A0 representa todas as combinações em que A assume seu valor intermediário e A+ representa todas as combinações em que A assume seu maior valor. O símbolo AP- representa todas as combinações em que A e P assumem seus valores mínimos simultaneamente, e assim por diante.
mínimo intermediário máximo Alcance (A) 150 m 250 m 350 m Patamar (P) 0.7 m2 1.2 m2 1.7 m2
Suavização () 0.5 1.0 3.0
Tabela 2. Valores mínimo, intermediário e máximo considerados razoáveis escolhidos
Os valores ótimos dos parâmetros podem ser obtidos do estudo do arranjo fatorial de experimentos ilustrado na Figura 22 com a comparação entre o volume predito e o volume verdadeiro. A variação de P dentro dos limites estabelecidos não tem influência alguma sobre o resultado, portanto podemos arbitrar um valor para P dentro dos limites preestabelecidos sem prejuízo da meta. O Parâmetro A exerce sutil influência sobre o volume calculado de modo que podemos fixa tanto para A como para P os seus valores intermediários. O volume calculado se aproxima do volume verdadeiro quando K está próximo de 2. Desse modo, os valores ótimos são A= 250 m, P= 1,2 m2 e K= 2.
Com os valores dos parâmetros definidos, plotamos a superfície interpolada por krigagem ordinária que possui mínima diferença de volume em relação ao volume verdadeiro.
A Figura 23 apresenta o histograma e curva de freqüência acumulada para a superfície interpolada, que aparece na forma de mapa com código de cores na Figura 24.
Figura 22. Planejamento fatorial mostrando a contribuição de cada parâmetro no valor
final da variável de controle. Os pontos azuis representam o valor do volume da superfície predita a partir de determinada combinação de parâmetros, enquanto que a linha vermelha indica o volume verdadeiro.
Figura 23. Histograma e curva de freqüência acumulada referentes à superfície
predita.
Figura 24. Superfície predita usando-se os parâmetros estabelecidos pelo esquema
de planejamento de experimentos. Código de cores refere-se às cotas em relação a um nível de referência arbitrário. A gridagem usada possui resolução espacial (pixel) de 10 m para coincidir com a resolução da população visada.
A Figura 25 faz uma comparação entre a população visada (esquerda) e a “população predita” (direita). Percebe-se que os valores da população predita são mais suaves do que os valores originais. Isto se deve ao fato de que a resolução amostral (distância média entre os pontos de dados) é maior do que a variabilidade espacial da população visada (tamanho da menor estrutura da população na escala de trabalho). Então, a variabilidade mínima que a amostra é capaz de “enxergar” é da ordem de grandeza da resolução amostral. Neste trabalho, a resolução espacial da população é de 10 metros enquanto que a resolução espacial média da amostra é de 60 metros.
Então, a qualidade da predição é sempre condicionada à qualidade da amostra, mas podemos maximizar o ganho de qualidade com a amostra que temos. Em relação aos procedimentos de ajuste “tradicionais” dos parâmetros, que são centrados no ajuste sobre o semivariograma experimental, o procedimento baseado
Figura 25. Comparação entre a população visada (esquerda) e a “população predita”
em esquemas de planejamento de experimentos, que são centrados no interpolador de krigagem, nos permite avaliar o ajuste diretamente pela variável de controle escolhida que no caso do atual trabalho é o volume (ou as cotas). A Figura 26 traz dois mapas de comparação entre as cotas preditas e as cotas verdadeiras, um para o caso de ajuste “tradicional” e o outro para o caso de ajuste por esquema de planejamento de experimentos visando o volume.
De fato, ambos os resultados são razoáveis, o que era de se esperar. Entretanto, como já dissemos, os procedimentos “tradicionais” tendem a ser exaustivos e a exigir muita habilidade do intérprete. Já o procedimento que utiliza esquemas de planejamento de experimentos é conciso, sistemático, objetivo e fornece o melhor ajuste visando um determinado parâmetro de controle, que neste trabalho foi o volume, mas que pode ser qualquer outro parâmetro, por exemplo, a Variância de Interpolação.
Figura 26. Nestes mapas, o código de cores representa o módulo da diferença de cota
entre a superfície original e a superfície interpolada. À esquerda, a escolha dos parâmetros do variograma foi feita do modo “tradicional”, isto é, ajuste “a sentimento” sobre o variograma com auxílio da função fit.variogram. À direita, a escolha foi feita pelo esquema de planejamento de experimento. Este último ajuste, de fato, minimiza as diferenças de cota.
6 CONCLUSÃO
O ajuste dos parâmetros do modelo teórico Matern ao semivariograma experimental (alcance, patamar e suavização) pode ser feito através de procedimento que utiliza esquema de planejamento de experimentos e visando uma discrepância mínima das cotas em relação aos valores verdadeiros. Além disso, este procedimento é conciso e objetivo e pode ser empregado no lugar dos procedimentos que chamamos de “tradicionais” (aqueles que se baseiam no ajuste de uma curva sobre os pontos do semivariograma experimental). O parâmetro de controle pode ser qualquer quantidade escolhida em função do interesse da pesquisa.
7 REFERÊNCIAS BIBLIOGRÁFICAS
Almeida, C.F.P., 2001. A Variação do Suporte Amostral e as Mudanças na Estrutura do Semivariograma. Dissertação de Mestrado, Instituto de Matemática Universidade Federal do Rio de Janeiro, Rio de Janeiro, 104p.
Almeida, C.F.P., Braga, L.P.V., Bettini, C., 2001. A Variação do Suporte Amostral e as Mudanças na Estrutura do Semivariograma. Anais do III Workshop Brasileiro de Geoinformática - GEOINFO 2001. v. Único. p. 9-16.
Annels, A.E., 1991. Mineral Deposit Evaluation: a Practical Approach, Chapman&Hall.
Arantes, D., Mackenzie, B.W., 1995. A Posição Competitiva do Brasil na Mineração de Ouro; Estudos de Política e Economia Mineral, nº.7, DNPM.
Borges, C.C., 2005. A Topologia: Considerações Teóricas e Implicações para o Ensino da Matemática. Caderno de Física da UFES, 03 (2): 15-35.
Bussab, W.O., Morettin, P.A.. 2004. Estatística Básica, 5ª ed., São Paulo : Ed. Saraiva, ISBN: 85-02-03497-9, 523p.
Chaves, H.A.F., Resende, J., Porto Alegre, H.K., 1988. Geoestatística Aplicada à Pesquisa do Xisto, Formação Irati, São Mateus do Sul, Paraná; B. Geoci. PETROBRAS, Rio de Janeiro, 2(2/4): 209-215.
Cressie, N.A.C., 1993. Statistics for Spatial Data, Revised Edition. John Wiley & Sons, ISBN: 0-471-00255-0, 900p.
David, M., 1982. Geostatistical Ore Reserve Estimation. Developments in Geomathematics 2. Elsevier Co. ISBN: 0-444-41532-7. 360p.
Davis, J.C.,1986. Sstatistics and Data Analysis in Geology, 2nd edition. John Wiley & Sons, 650p.
Guilbert, J.M., Park Jr, C.F., 1997. The Geology of Ore Deposits, New York: W.H. Freeman and Company. ISBN: 0-7167-1456-6, 985p.
Guimarães, A.O., 2002. Modelagem Geológica e Geoestatística de Reservatórios da Bacia de Campos, RJ. Dissertação de Mestrado, Departamento de Geologia Universidade Federal do Rio de Janeiro, Rio de Janeiro, 101p.
Harvard, R., 2005. Gaussian Markov Random Fields: Theory and Applications; Boca Raton: Chapman & Hall/CRC, 263p.
John, J.A., 1977. Experiments: Design and Analysis, London: C. Griffin, 296p.
Landim, P.M.B., 2003. Análise Estatística de Dados Geológicos, 2ª ed., São Paulo: Ed. UNESP, ISBN: 85-7139-504-7, 253p.
Litch, O.A.B., 1998. Prospecção Geoquímica: Princípios, técnicas e métodos, Rio de Janeiro: CPRM, 236p.
Monteiro, M.C., 2005. Procedimentos Geoestatísticos para Quantificar a Incerteza em Modelos Estáticos de Reservatórios Petrolíferos. Tese de doutoramento em geologia, Universidade Federal do Rio de Janeiro, Rio de Janeiro.
Murrel, P., 2006. R Graphics; Boca Raton: Chapman & Hall/CRC, 301p.
Pebesma, E.J., Wesseling, C.G., 1998. Gstat: a Program for Geostatistical Modelling, Prediction and Simulation. Computers & Geosciences Vol. 24, No. 1: 17-31. R Development Core Team, 2008. R: A Language and Environment for Statistical
Computing. R Foundation for Statistical Computing, Vienna, Austria. ISBN: 3- 900051-07-0.
Ribeiro JR., P.J., Diggle, P.J., 2001. geoR: A Package for Geostatistical Analysis. R- NEWS Vol 1, No 2 :15-18. ISSN 1609-3631.
Schmidt, A.M., Nobre, A.A., Ferreira, G.S., 2002. Alguns Aspectos da Modelagem de Dados Espacialmente Referenciados. Revista Brasileira de Estatística, 63, 220, 59-88.
Schobbenhaus, C., Silva Coelho, C.E., 1988. Principais Depósitos Minerais do Brasil. Metais Básicos não Ferrosos, Ouro e Alumínio, vol. III, DNPM.
Yamamoto, J.K., 2001. Avaliação e Classificação de Reservas Minerais, São Paulo : Ed. da USP, ISBN: 85-314-0626-9, 226p.
Apêndice A. O Projeto R
R é um sistema de "programação de dados" idealizado para trabalhos em análise e modelagem estatística e que fornece de forma integrada, entre outras coisas, uma linguagem de programação orientada a objetos, recursos para geração de gráficos de alto nível, interface para outras linguagens de programação, etc. R é, portanto, uma suíte integrada de recursos computacionais para manipulação de dados, cálculos e exibição de gráficos. R é um programa de código aberto desenvolvido a partir do programa comercial S, que foi criado no final da década de 1980 nos laboratórios da AT&T. O Projeto R começou em 1995 com os trabalhos de Robert Genteman e Ross Ihaka, do Departamento de Estatística da Universidade de Auckland e rapidamente se difundiu nos meios de pesquisa em estatística. Atualmente é mantido pela R Core-development Team, que é um time internacional de desenvolvedores voluntários que continuamente desenvolvem documentação de ajuda, tutoriais e pacotes funcionais que acrescentam bastantes potencialidades à já
poderosa versão base do R. A página na Internet do Projeto R,
http://www.r-project.org possui todas as informações sobre o R, além de
disponibilizar gratuitamente o programa R e seus pacotes.
Alguns dos benefícios de se usar o R:
Programa de código aberto (gratuito). Fácil de obter via download e de instalar. Funciona perfeitamente em várias plataformas, tais como Windows, UNIX e Macintosh;
Facilidade e extrema liberdade de manipular e estocar dados. Versatilidade na entrada e saída de dados, podendo obter dados de arquivos de texto ASCII, planilha do MS-Excel ou da Internet;
Grande variedade de operadores para cálculos sobre objetos, principalmente vetores e matrizes;
Coleção vasta, coerente e integrada de funções internas e pacotes para análise de dados, várias voltadas para estatística e geoestatística;
Opções variadas para apresentação gráfica de resultados e dados em tela ou armazenado em arquivo de imagem no computador;
Linguagem de programação simples, mas muito versátil cuja sintaxe é superficialmente similar à da linguagem C, mas com a diferença de que as funções são capazes de receber vetores, matrizes ou outras funções como argumento. Isto é freqüentemente útil, por exemplo, em modelagem estatística; Excelente conjunto interno de arquivos de ajuda.
Algumas carências do R:
Interface gráfica limitada. O programa S, ao contrário, possui ótima interface gráfica;
Não há suporte comercial ao produto. Existem, no entanto, mailing list e fóruns internacionais (acessíveis a partir da página do projeto R) que minimizam a falta de suporte técnico;
Praticamente todas as ações dentro do ambiente R são executadas via linha de comando, o que exige do usuário inicial um rápido aprendizado da sintaxe da linguagem, mesmo para executar as mais simples tarefas.
Fundamentos da Linguagem R
O R é uma linguagem baseada em objetos. Isto quer dizer que tudo o que nós vamos usar no R está guardado na memória do computador sob a forma de um
objeto. Todos os objetos em R têm um nome associado e podem armazenar diferentes tipos de coisas (números, texto, vetores, matrizes, expressões, etc.).
Para armazenar algo num objeto usamos o operador de atribuição. Este operador consiste num sinal < seguido por um sinal -, como se vê no exemplo apresentado em seguida, em que guardamos o número 0.55 no objeto que resolvemos chamar de coef.frac:
> coef.frac <- .55
A linguagem R também é case-sensitive, isto é, faz distinção entre letras maiúsculas e minúsculas. Com isso, um objeto de nome Taxa é diferente de outro de nome taxa.
O R possui 24 tipos de variáveis, como por exemplo, “char”, “logical”, “integer”, “double”, “character”, etc. As variáveis são armazenadas nos objetos. O objeto mais básico do R para guardar dados é o vetor. Um vetor é uma estrutura de dados que permite armazenar um conjunto de valores do mesmo tipo (por exemplo números) sob um mesmo nome. No R, um número é considerado um vetor de comprimento igual a um.
As funções do R definem um conjunto de operações sobre um objeto. O R possui um vasto conjunto de funções internas e de funções fornecidas por pacotes, mas o programador também pode criar as suas próprias funções. Assim, para um dado vetor x, as instruções:
> range(x) > x*x > mean(x) > var(x)
Retornam, respectivamente, o valor máximo e mínimo de x, um vetor em que cada elemento é igual ao quadrado do respectivo elemento de x, a média dos valores de x e a variância de x. A possibilidade de se usar vetores como argumento de funções torna os programas menos pesados do que os escritos em outras linguagens, pois descarta a necessidade de cálculos iterativos (esta característica é, por vezes, referida como aritmética vetorial).
Apêndice B. Códigos-fonte dos programas criados neste trabalho
Aqui apresento todos os códigos-fonte que foram criados para os objetivos deste trabalho, a fim de mostrar como se operou com a linguagem R na busca dos resultados e para serem conferidos por aqueles cujo interesse pela sintaxe e pela flexibilidade de trabalho possibilitada pela linguagem por ventura tenha sido despertado em maior grau. De posse destes códigos, é possível reproduzir todas as etapas realizadas neste trabalho a partir de qualquer computador com o R previamente instalado, bastando para isto transferir todas as linhas para o console do R. Os pacotes usados foram: geoR, RandomFields e gstat.
CÓDIGO 1) Geração da população
###################################################################### ######################################################################
### POPULAÇÃO 1: NORMAL - MEAN= 10; STDEV= .4 ### ### NUGGET= 0; PSILL= 1; RANGE= 0.25; KAPPA= 0.5; ANISO= (45º, 2) ###
### SÉRGIO M. FERREIRA ### ### DEGEO/UFRJ - 20/06/2008 ### ###################################################################### ### Geração da população usando grf{geoR} ### ###################################################################### ###################################################################### #Tamanho da população e malha
nx<- 100 #Pontos na direcao x, no intervalo [0,nx] ny<- nx #Pontos na direcao y, no intervalo [0,ny] n<- nx*ny #Número de nós para a simulação
e<- 10 #Fator de escala para metros xi<- 0
xf<- e*nx #Metros yi<- xi
yf<- e*ny
###################################################################### #Parâmetros input para a simulação
nugget<- 0 #Variância do erro (pepita)
aniso<- c(pi/4, 2) #Anisotropia: direção (em radianos) e intensidade kappa<- 0.5 #Parâmetro de suavização adicional usado por "matern"
cov<- c(1,0.25) #Parâmetros de covariância: patamar e alcance mean<- 10
####################################################################### #Geração da população sintética
f<- grf(n, grid="reg", nx=nx+1, ny=ny+1, nsim=1, cov.model="matern", cov.pars=cov, kappa=kappa, nugget=nugget, lambda=1,
aniso.pars=aniso, mean=mean, method="RF", RF=TRUE, messages=FALSE) f$coords<- f$coords*xf
####################################################################### #Visualização dos dados em tela
zlim<- range(f$data, finite=TRUE)
nlevels<- 16 #numero de niveis desejado + 1
levels<- seq(floor(zlim[1]), ceiling(zlim[2]), length=nlevels) x <- seq(xi, xf, e)
y <- seq(yi, yf, e)
z<- matrix(f$data, nx+1,ny+1) windows()
image(x, y, z, col=heat.colors(100), xlab="Leste", ylab="Norte", axes=TRUE) windows()
filled.contour(x, y, z, zlim=zlim, levels=levels, filled=TRUE, col=heat.colors(nlevels-1),
plot.title = title(main = "População S1", xlab="Leste", ylab="Norte"),
key.title=title(main="Cota\n(metros)")) windows()
persp(x, y, z, xlab = "Leste", ylab = "Norte", zlab = "Cota", theta = 40, phi = 30, scale = FALSE, expand = 20,
col = "lightyellow", border = NA, ltheta=45, lphi=20, shade=0.6, box = TRUE, axes = TRUE, nticks = 5, ticktype = "detailed") ###################################################################### ### POPULAÇÃO REPRESENTADA EM HISTOGRAMA E CURVA DE FREQ. ACUM. #### ###################################################################### ## Guardando em data frame os parâmetros da população S1 ##
distrib.param<- data.frame(nugget=nugget, psill=cov[1], range=cov[2], aniso.angle=aniso[1], aniso.ratio=aniso[2], cov.model="matern", kappa=kappa, mean=mean(f$data), P50=quantile(f$data, prob=0.5, type=9), std.dev=sd(f$data), var=var(f$data)) ###################################################################### # Plotando a distribuição de freqüências da população
h<- hist(f$data, breaks = "Sturges", plot = FALSE) windows()
{plot(h, xlim = range(h$breaks), col = "lightblue",
main = paste("Freqüência das cotas\n População S1"), xlab = "Cotas", ylab = "Freqüência")
legend("topright", title= "Distribuição normal", expression(list(mu == 9.22, P[50] == 9.24), list(sigma^2 == 0.85, var == 0.73)))
}
## Plotando a freq. acum. dos percentis pelos intervalos do histograma ## fa1<- 0
fa<- vector()
for (i in 1:length(h$counts)){ fa1<- fa1 + h$counts[i]
fa<- append(fa, values=fa1, after = length(fa)) }
windows()
{plot(x=h$breaks[1:(length(h$breaks)-1)], y=fa/length(f$data),
main = paste("Freqüência Acumulada das cotas\n População S1"), xlab = "Cotas", ylab = "Freqüência Acumulada", type="b")
legend("right", title= "Distribuição normal", expression(list(mu == 10.0, P[50] == 9.2), list(sigma^2 == 4.1, var == 16.2)))
}
###################################################################### ### EXECUTE AGORA AS LINHAS DO ARQUIVO "SALVA_S1.TXT" PARA ### ### SALVAR TODOS OS OBJETOS (GRÁFICOS E TABELAS) EM DISCO. ### ### * * * * * * * * * * ### ### FIM DO PROGRAMA ### ######################################################################
CÓDIGO 2) Campanha de amostragem aleatória
###################################################################### ###################################################################### ### POPULAÇÃO 1: NORMAL - MEAN= 10; STDEV= .4 ### ### NUGGET= 0; PSILL= 1; RANGE= 0.25; KAPPA= 0.5; ANISO= (45º, 2) ### ### SÉRGIO M. FERREIRA ### ### DEGEO/UFRJ - 20/06/2008 ### ###################################################################### ### Geração de amostra aleatória ### ###################################################################### ###################################################################### #SUBSETS
#Criar o subset contendo os 100 valores mais altos: biggest<- 100
prob<- 1-(biggest/length(f$data))
Q1<- quantile(f$data, prob=prob, type=9) subset1<- f[f$data>=Q1,]
#Criar o subset com valores acima do 3o quartil, menos os "biggest": Q2<- quantile(f$data, prob=.75, type=9)
subset2<- f[f$data>=Q2 & f$data<Q1,]
#Criar o subset com valores abaixo do 3o quartil: subset3<- f[f$data<Q2,]
###################################################################### #Amostragem dos subsets e geração da Amostra
###############
### Subset1 - Amostra 1 (malha fina regular nos valores mais altos) x.am<- subset1$x
y.am<- subset1$y
data.am<- subset1$data #am1#
###############
### Subset2 - Amostra 2 (valores intermediários) frac2<- .02 #Fração a ser amostrada em [0,1] size2<- round(frac2*length(subset2$data))
amt2<- sample(subset2$data, size=size2, replace=FALSE) search.2a<- match(subset2$data, amt2, nomatch=0)
search.2b<- vector()
for(i in 1:length(search.2a)){ if(search.2a[i]>0){
search.2b<- append(search.2b, values= i, after=length(search.2b)) }}
for(i in search.2b){
x.am<- append(x.am, values= subset2$x[i], after=length(x.am)) y.am<- append(y.am, values= subset2$y[i], after=length(y.am))
data.am<- append(data.am, values= subset2$data[i], after=length(data.am)) }
#am2#
x2<- y2<- data2<- vector() for(i in search.2b){
x2<- append(x2, values= subset2$x[i], after=length(x2)) y2<- append(y2, values= subset2$y[i], after=length(y2))
data2<- append(data2, values= subset2$data[i], after=length(data2)) }
am2<- data.frame(x=x2, y=y2, data=data2) ###############
### Subset3 - Amostra 3 (Valores mais baixos) frac3<- .02 #Fração a ser amostrada em [0,1] size3<- round(frac3*length(subset3$data))
amt3<- sample(subset3$data, size=size3, replace=FALSE) search.3a<- match(subset3$data, amt3, nomatch=0)
search.3b<- vector()
for(i in 1:length(search.3a)){ if(search.3a[i]>0){
search.3b<- append(search.3b, values= i, after=length(search.3b)) }}
for(i in search.3b){
x.am<- append(x.am, values= subset3$x[i], after=length(x.am)) y.am<- append(y.am, values= subset3$y[i], after=length(y.am))
data.am<- append(data.am, values= subset3$data[i], after=length(data.am)) }
#am3#
x3<- y3<- data3<- vector() for(i in search.3b){
x3<- append(x3, values= subset3$x[i], after=length(x3)) y3<- append(y3, values= subset3$y[i], after=length(y3))
data3<- append(data3, values= subset3$data[i], after=length(data3)) }
am3<- data.frame(x=x3, y=y3, data=data3)
###################################################################### #AMOSTRA
amostra<- data.frame(x=x.am, y=y.am, data=data.am)
###################################################################### #Data frame que guarda os dados estatísticos sobre esta amostra
l<- length(amostra$data) #Número de pontos m<- mean(amostra$data) #Média dos valores p50<- quantile(amostra$data, prob=.5, type=9) #Percentil 50 (Mediana) s<- sd(amostra$data) #Desvio-padrão
var<- var(amostra$data) #Variância
lim<- range(amostra$data) #Valores mínimo e máximo mdados.amostra<- data.frame(npontos=l, vmin=lim[1], vmax=lim[2], media=m, p50=p50, dpadrao=s, variancia=var)
###################################################################### #Plotagem em tela da amostra parcial "am1" e da Amostra total de S1 x <- seq(xi, xf, e)
y <- seq(yi, yf, e)
z<- matrix(f$data, nx+1,ny+1) windows()
image(x, y, z, col=heat.colors(100), xlab="Leste", ylab="Norte", axes=TRUE) points(amostra, pch=19, col= 1)
windows()
image(x, y, z, col=heat.colors(100), xlab="Leste", ylab="Norte", axes=TRUE) points(am1, pch=19, col= 2)
## Para plotar o histograma da amostra aleatória (sem os valores altos) ## am23.data<- am2$data
am23.data<- append(am23.data, values=am3$data, after=length(am23.data)) h<- hist(am23.data, breaks = "Sturges", plot = FALSE)
windows()