[R-br] ajustar escala e interpolação

Heloíse Pavanato helopavanato em gmail.com
Quarta Setembro 6 19:19:23 -03 2017


Olá Cesar e Elias,

Obrigada pela atenção. Vou dar uma olhada no pacote spatstat.

Cesar, respondo em linha:

As coordenadas do grid e vento múltiplas de 0,5 grau deveriam "se
corresponder" ou não?

Sim, mas não como os dados estão agora. Por exemplo, entre as latitudes de
vento de -10.875 e -10.625 a correspondência no grid seria -10.8 e -10.7.
Entre -10.625 e -10.375 as correspondências seriam -10.6, -10.5 e -10.4.
Não sei como automatizar estre processo, pois veja que para as latitudes de
vento que terminam com "75" eu tenho duas correspondências e para as que
terminam em "25" eu tenho três. Me fiz entender?

Aqui vai um dput() dos dados para você ter uma noção:


dput(vento[1:30, ])


structure(list(lat = c(-23.875, -23.625, -23.375, -23.125, -22.875,

-22.625, -22.375, -22.125, -21.875, -21.625, -21.375, -21.125,

-20.875, -20.625, -20.375, -20.125, -19.875, -19.625, -19.375,

-19.125, -18.875, -18.625, -18.375, -18.125, -17.875, -17.625,

-17.375, -17.125, -16.875, -16.625), lon = c(-42.875, -42.875,

-42.875, -42.875, -42.875, -42.875, -42.875, -42.875, -42.875,

-42.875, -42.875, -42.875, -42.875, -42.875, -42.875, -42.875,

-42.875, -42.875, -42.875, -42.875, -42.875, -42.875, -42.875,

-42.875, -42.875, -42.875, -42.875, -42.875, -42.875, -42.875

), media = c(6.16, 5.99714285714286, 5.91857142857143, 5.82,

NA, NA, NA, NA, NA, NA, NA, NA, NA, NA, NA, NA, NA, NA, NA, NA,

NA, NA, NA, NA, NA, NA, NA, NA, NA, NA)), .Names = c("lat", "lon",

"media"), row.names = c(NA, 30L), class = "data.frame")


dput(grid[1:30, ])


structure(list(lat = c(-10.4, -10.4, -10.5, -10.5, -10.6, -10.6,

-10.6, -10.5, -10.5, -10.6, -10.7, -10.7, -10.7, -10.7, -10.8,

-10.8, -10.8, -10.9, -10.9, -10.9, -10.8, -10.8, -10.9, -11,

-11, -11, -10.8, -10.9, -10.9, -11), lon = c(-36.4, -36.3, -36.5,

-36.3, -36.5, -36.4, -36.3, -36.6, -36.4, -36.6, -36.6, -36.5,

-36.4, -36.3, -36.6, -36.5, -36.4, -36.6, -36.5, -36.4, -37,

-36.9, -36.9, -37.1, -37, -36.9, -36.8, -37, -36.8, -36.8)), .Names =
c("lat",

"lon"), row.names = c(NA, 30L), class = "data.frame")


A questão de você interpolar os valores de vento tem menos a ver com o R em
si e mais com o domínio do problema que você trabalha: qual é a forma de
interpolar o valor do vento para uma coordenada intermediária entre pontos
que você tenha as medidas?

Talvez seja mais apropriado trabalhar com "a quase metade dos dados" do que
utilizar o dobro de pontos sendo que a outra metade será resultado de um
processo de cálculo e portanto não deveria modificar sua análise dos dados.

Também acho que a interpolação é o menos importante para fins de análises,
e posso manter NAs para isso. Porém, tenho que gerar um levelplot() desta e
de outras variáveis, por isso gostaria de usar a interpolação para este
fim. Pensei em usar thin plate splines ou qualquer outro interpolador
bivariado em termos de latitude e longitude.

Obrigada pela ajuda.

Saudações,
Heloise

2017-09-07 0:08 GMT+12:00 Cesar Rabak <cesar.rabak em gmail.com>:

> Heloise,
>
> Esta observação me deixa confuso:
>
> #Quando faço um merge() dos dois dataframes, obviamente meus valores de
>> #vento$media aparecem como NA pois não há nenhuma correspondência entre
>> as #coordenadas do grid e de vento.
>
>
> As coordenadas do grid e vento múltiplas de 0,5 grau deveriam "se
> corresponder" ou não?
>
> A questão de você interpolar os valores de vento tem menos a ver com o R
> em si e mais com o domínio do problema que você trabalha: qual é a forma de
> interpolar o valor do vento para uma coordenada intermediária entre pontos
> que você tenha as medidas?
>
> Talvez seja mais apropriado trabalhar com "a quase metade dos dados" do
> que utilizar o dobro de pontos sendo que a outra metade será resultado de
> um processo de cálculo e portanto não deveria modificar sua análise dos
> dados.
>
> HTH
> --
> Cesar Rabak
>
>
> 2017-09-06 4:47 GMT-03:00 Heloíse Pavanato via R-br <
> r-br em listas.c3sl.ufpr.br>:
>
>> Colegas do R-br,
>>
>>
>>
>> Tenho a seguinte questão:
>>
>>
>>
>> Estou trabalhando com um grid de 0.1 x 0.1 grau de latitude e longitude
>> onde quero inserir a variável vento. No entanto a resolução do vento é
>> de 0.25 x 0.25 graus.
>>
>> Os dados estão armazenados aqui:
>>
>>
>> http://www.datafilehost.com/d/693635d4
>>
>> http://www.datafilehost.com/d/ee24730c
>>
>>
>> vento <- read.csv('ascat.data.csv', header = TRUE)
>>
>> str(vento)
>>
>> grid <- read.csv('grid.data.csv', header = TRUE)
>>
>> str(grid)
>>
>>
>> #Quando faço um merge() dos dois dataframes, obviamente meus valores de
>> #vento$media aparecem como NA pois não há nenhuma correspondência entre
>> as #coordenadas do grid e de vento.
>>
>>
>> dmerge <- merge(grid, vento, by = c('lon', 'lat'), all.x = TRUE)
>>
>>
>> Porém, eu gostaria de obter valores de vento, por exemplo, entre latitudes
>> de -22.625 e -22.375 na mesma escala do grid: -22.6, -22.5, -22.4, etc.
>> E o mesmo para longitude.
>>
>>
>> Tentei utilizar a scales::rescale(), mas consegui mudar apenas os
>> mínimos e máximos das coordenadas:
>>
>>
>> #install.packages('scales', dependencies = TRUE)
>>
>> library(scales)
>>
>>
>> vento$lon.r <- rescale(vento$lon, to = range(grid$lon))
>> vento$lon.r
>>
>>
>> vento$lat.r <- rescale(vento$lat, to = range(grid$lat))
>> vento$lat.r
>>
>>
>> Então, creio que eu tenho dois problemas: o primeiro é obter as
>> coordenadas de vento na mesma escala que as do grid; segundo é interpolar
>> vento$media para substituir os NAs, que correspondem a quase metade do
>> total de valores.
>>
>>
>> Agradeço se algum colega tiver alguma dica.
>>
>>
>> Obrigada,
>>
>> Heloise.
>>
>> _______________________________________________
>> R-br mailing list
>> R-br em listas.c3sl.ufpr.br
>> https://listas.inf.ufpr.br/cgi-bin/mailman/listinfo/r-br
>> Leia o guia de postagem (http://www.leg.ufpr.br/r-br-guia) e forneça
>> código mínimo reproduzível.
>>
>
>
-------------- Próxima Parte ----------
Um anexo em HTML foi limpo...
URL: <http://listas.inf.ufpr.br/pipermail/r-br/attachments/20170907/1eb4babd/attachment.html>


Mais detalhes sobre a lista de discussão R-br