7.14 Exercícios

  1. Crie um vetor com os valores de \(e^{x}cos{x}\) para os valores de \(x = (3, 3.1, 3.2, ..., 6\)).

  1. Crie os seguintes vetores.
    1. \((0.1^{3}\times0.2^{1}, 0.1^{6}\times0.2^{4}, ..., 0.1^{36}\times0.2^{34})\)

    2. \((2, \frac{2^{2}}{2}, \frac{2^{3}}{3}, ..., \frac{2^{25}}{25})\)


  1. Reproduza a criação do vetor dias da semana (dds) mostrado abaixo.
domingo segunda   terca  quarta  quinta   sexta   sabado
      1       2       3       4       5       6        7

  1. Interprete o resultado da seguinte operação:
dds_nums <- c(
  5L, 2L, 5L, 2L, 7L, 7L, 2L,
  6L, 6L, 3L, 7L, 1L, 2L, 2L,
  5L, 7L, 3L, 2L, 6L, 4L, 1L
)
names(dds)[dds_nums]

    1. Escreva o código necessário para determinar o vetor lógico indicando quais números são pares na sequência de valores 85, 79, 70, 6, 32, 8, 17, 93, 81, 76. b. Calcule o total de números ímpares.

  1. Para um ano ser bissexto, ele deve ser:
  • divísivel por 4 (a divisão é exata com resto igual a zero)

  • não pode ser divisível por 100 (a divisão não é exata, ou seja, o resto é diferente de zero)

  • pode ser que seja divisível por 400: caso seja divisível por 400, a divisão deve ser exata, deixando o resto igual a zero.

Com os critérios definidos acima, construa o código para:

  1. Verificar se os anos 1894, 1947, 1901, 1992, 1925, 2014, 1993, 1996, 1984, 1897, 2100, 2300 são bissextos.

  2. Mostre quais anos são bissextos.

  3. Usando o código para verificar se o ano é bissexto, gere um vetor nomeado ndias com o número de dias do ano para os anos do item (a).

  4. Programe como obter o total de anos com 366 dias?


  1. Quais códigos para gerar os seguintes dados:
[1] -30   0   5  10  15  20  30
[1] 1.0 0.8 0.6 0.4 0.2 0.0
[1] -3.1415927 -2.4434610 -1.7453293 -1.0471976 -0.3490659  0.3490659
[7]  1.0471976  1.7453293  2.4434610  3.1415927
[1] -1 -1  0  0  0  1  1  1  1  2  2  2  2  2  3  3  3  3  3  3  4  4  4
[24]  4  4  4  4  5  5  5  5  5  5  5  5
[1] 5 5 5 5 5 4 4 4 4 3 3 3 2 2 1 2 2 3 3 3 4 4 4 4 5 5 5 5 5

  1. Usando o mesmo código para solução em todos os itens abaixo, obtenha as seguintes sequências usando os vetores fornecidos.
  1. v3 = (11, 0.25, 7, 2)
[1] 1 2 3 4
  1. v2 = (11, 0.25)
[1] 1 2
  1. v1 = (11)
[1] 1
  1. v0 = ()
integer(0)

  1. Considere os seguintes dados horários de temperatura do ar (\(T_{ar}\)) registrados em duas estações meteorológicas, entre as 0 e 23 horas de um dado dia.
tar_est1 <- c(
  14.92, 14.61, 14.32, 14.07, 13.84, 13.65, 13.56, 13.97, 15.08,
  16.5, 17.88, 19.08, 20.02, 20.66, 21.01, 21.05, 20.76, 20.05,
  18.77, 17.51, 16.67, 16.11, 15.66, 15.27
)
tar_est2 <- c(
  13.13, 13.01, 12.93, 12.87, 12.82, 12.81, 13.2, 14.22, 15.77,
  17.49, 19.2, 20.57, 21.49, 22.01, 22.03, 21.71, 20.84, 18.77,
  16.54, 15.13, 14.34, 13.81, 13.49, 13.28
)

Dica: Faça um gráfico para visualizar as temperaturas das duas estações. Isso facilitará a solução.

a. Determine a média diária da \(T_{ar}\) das duas estações arrendondando para uma casa decimal. Salve a média de cada estação nas variáveis tmed_est1 e tmed_est2.

b. Utilizando as variáveis do item anterior, verifique usando comparação lógica, em qual estação o ambiente é mais quente?

c. Obtenha a 3ª maior temperatura do dia em cada estação.

d. Calcule a amplitude térmica diária (\(ATD = T_{max}-T_{min}\), onde \(T_{max}\): temperatura máxima dária e \(T_{min}\): temperatura mínima dária) das estações 1 e 2, arrendondando para uma casa decimal. Salve os resultados nas variaveis atd_est1 e atd_est2.

e. Qual o horário de ocorrência das temperaturas máximas e mínimas em cada estação? Salve os resultados nas variáveis hmax_est{i} e hmin_est{i}, com \(i = 1, 2\).

f. Quando tar_est2 é maior que tar_est1 qual a maior diferença absoluta de temperatura entre as duas estações?

g. Qual a hora correspondende a ocorrência daquela maior diferença absoluta de temperatura obtida no item anterior?

h. O horário do pôr do sol pode ser estimado a partir da \(T_{ar}\). Para o período após o horário de ocorrência da \(T_{max}\) determina-se em qual hora ocorre a maior queda de \(T_{ar}\) em relação a hora anterior. Estime o horário do pôr do sol para as duas estações (hps_est{i}).

i. Em quais horas as temperaturas das duas estações estão mais próximas uma da outra, ou seja com menos de 0,5°C de diferença ?

j. Calcule a temperatura média diária usando os seguintes métodos para estação 2.

\(T_{med_{1}} = (T_{max} + T_{min})/2\), salvando em uma variável tar_met1.

\(T_{med_{2}} = (T_{max} + T_{min} + T_{9} + 2T_{21})/5\), salvando em uma variável tar_met2.

\(T_{med_{3}} = (T_{7} + T_{14} + 2T_{21})/4\), salvando em uma variável tar_met2.

k.Compare este resultados com aqueles obtidos no item a. Qual é melhor?


  1. Calcule a temperatura do ar horária usando o modelo de onda para representação do ciclo diário da temperatura do ar, descrito pelas seguintes equações:

\[\left\{\begin{matrix} h_{T_{min}}\leq h < h_{T_{max}}, & T_{calc} = \bar{T} - A \, cos\left ( arg \right )\\ demais\; horas, & T_{calc} = \bar{T} + A \, cos\left ( arg \right ) \end{matrix}\right.\]

onde:

\[\bar{T} = \left ( \frac{T_{max} + T_{min}}{2} \right )\]

e

\[A =\left ( \frac{T_{max}-T_{min}}{2} \right ) \]

O argumento do cosseno (\(arg\)) é definido por:

\[\left\{\begin{matrix} h < h_{T_{min}}, & arg = \pi \left ( \frac{h+10}{10+h_{Tmin}} \right )\\ h_{T_{min}}\leq h < h_{T_{max}}, & arg = \pi \left ( \frac{h-h_{T_{min}}}{14-h_{T_{min}}} \right )\\ h > h_{T_{max}}, & arg = \pi\left ( \frac{14-h}{10+h_{Tmin}} \right ) \end{matrix}\right. \]

a. Aplique o método acima para estação 1 e 2 substituindo os valores de \(T_{max}\), \(T_{min}\), \(h_{T_{max}}\), \(h_{T_{max}}\), adequadamente.

b. Calcule o RMSE nos dois casos. \(RMSE = \sqrt{\frac{1}{n}\sum_{i=1}^{n}\left (T_{calc}-T_{obs} \right )^{2}}\)

c. Calcule a correlação (\(r\)) nos dois casos. A barra representa a média aritmética. Confira seu resultado com a saída da função cor(tar_obs, tar_calc).

\[r = \frac{\sum_{i=1}^{n} (T_{obs}-\bar{T}_{obs})(T_{calc}-\bar{T}_{calc}))}{\sqrt{\sum_{i = 1}^{n} (T_{obs}-\bar{T}_{obs})^{2}(T_{calc}-\bar{T}_{calc})^{2})}}\]


  1. Os dados abaixo são de precipitação horária de um evento severo ocorrido em 03/12/2012 em Santa Maria-RS.
hora prec
9 0.0
10 0.0
11 0.0
12 0.0
13 0.0
14 0.0
15 0.0
16 21.4
17 41.2
18 2.6
19 1.0
20 0.4
21 0.0
  1. Como seria o código para determinar a soma cumulativa da precipitação horária? Salve o resultado em um vetor chamado prec_acum. Interprete o resultado de c(NA, diff(prec_acum)).

  2. Mostre o código para encontrar o horário de ocorrência da precipitação máxima?

  3. Mostre o código para obter a hora de início e fim do evento de precipitação severa. Qual foi a duração do evento?

  4. Qual foi a precipitação total do evento? Quanto da precipitação total do evento, em %, ocorreu até às 17 h?


  1. Considere o vetor x definido pelos números descritos abaixo. Mostre como encontrar o primeiro número positivo localizado após o último número negativo. Por exemplo, seja o vetor z definido pelos valores (11, 10, 15, 2, 6, -15, -10, -22, -8, 5, 7, 2, 12, 8, 4, 1, 3, -3, -1, 30, 14). Os valores selecionados seriam 5 e 30.

  1. Considerando o vetor prec com valores de precipitação diária indicado abaixo. Escreva o código para resolver as seguintes tarefas.
prec <- c(
  0, 0, 0, 0.8, 0, 0.01, 0.75, 0,
  0, 0, 0, 0.35, 0.08, 0, 0, 0, 0, 0.31, 0, 3.57, 12.17, 0, 0,
  0, 0.04, 3.16, 0, 0.95, 0.79, 0, 0, 0, 0, 0, 3.51, 0, 0, 0.16,
  0, 0, 8.16, 0.54, 4.39, 1.24, 0, 0, 0, 0, 0, 2.43, 0, 0, 0, 0,
  0, 7.18, 0, 0, 0.26, 0, 0, 0.28, 0, 0, 0.09, 0.38, 0, 0, 0, 0,
  0, 0, 0.51, 0, 0, 0, 0, 0, 0, 0.67, 0, 0, 0, 0, 0.15, 0, 0.82,
  0, 0, 0, 0, 0, 0, 0, 0, 0.37, 0, 0.58, 4.95, 0, 0, 0, 0, 0, 7.68,
  0, 0, 0.37, 0, 1.56, 0, 0, 0, 0.34, 0.48, 0, 4.21, 2.28, 4.3,
  0, 3.38, 0, 0, 0, 0, 7.28, 0, 4.89, 3.91, 0, 0, 0, 0, 0, 0, 2.93,
  0, 2.49, 0.77, 0, 2.9, 3.53, 0.83, 0, 0, 0, 0.94, 0.59, 0, 0,
  0, 0, 0.04, 0, 0.65, 0, 0, 0, 6.23, 0.09, 0, 0.66, 0, 0, 0, 4.42,
  0, 0, 0, 0.84, 0, 0, 0, 0, 0, 0.09, 0, 0, 0.08, 0, 0.66, 0, 0,
  0, 0.06, 0, 0, 0, 3.28, 0, 0.8, 5.69, 0.8, 0
)
  1. Quantos dias ocorreram no intervalo 0 < prec < 0.25?

  2. Substitua os valores de chuva registrados no intervalo 0 < prec < 0.25 por 0.

  3. Crie um vetor denominado prec01 indicando o estado da precipitação (chuvoso = 1, seco = 0) baseado no limiar de 0.25 mm para detecção de chuva pelo pluviômetro.

  4. Qual a probabilidade de chuva dessa série de precipitação diária?

  5. Qual a probabilidade de chover dois dias consecutivos (p11)? Calcule a probabilidade de chover em qualquer um de dois dias consecutivos (p01 + p10)?

  6. Determine a duração de cada evento chuvoso (número de dias consecutivos).

O resultado esperado é um vetor que identifique o evento e sua duração.

duracao <- c(evento1 = 1, evento2 = 1, evento3 = 1, evento4 = 1, evento5 = 2, 
evento6 = 1, evento7 = 2, evento8 = 1, evento9 = 4, evento10 = 1, 
evento11 = 1, evento12 = 1, evento13 = 1, evento14 = 1, evento15 = 1, 
evento16 = 1, evento17 = 1, evento18 = 1, evento19 = 2, evento20 = 1, 
evento21 = 1, evento22 = 1, evento23 = 2, evento24 = 3, evento25 = 1, 
evento26 = 1, evento27 = 2, evento28 = 1, evento29 = 2, evento30 = 3, 
evento31 = 2, evento32 = 1, evento33 = 1, evento34 = 1, evento35 = 1, 
evento36 = 1, evento37 = 1, evento38 = 1, evento39 = 3)
duracao
#>  evento1  evento2  evento3  evento4  evento5  evento6  evento7  evento8 
#>        1        1        1        1        2        1        2        1 
#>  evento9 evento10 evento11 evento12 evento13 evento14 evento15 evento16 
#>        4        1        1        1        1        1        1        1 
#> evento17 evento18 evento19 evento20 evento21 evento22 evento23 evento24 
#>        1        1        2        1        1        1        2        3 
#> evento25 evento26 evento27 evento28 evento29 evento30 evento31 evento32 
#>        1        1        2        1        2        3        2        1 
#> evento33 evento34 evento35 evento36 evento37 evento38 evento39 
#>        1        1        1        1        1        1        3

  1. Dado o vetor dados mostrado abaixo.
dados <- c(
  NA, NA, 27L, 7L, 4L, 0L, 26L, 15L, 25L, NA, NA, NA, NA, 6L,
  29L, 18L, 17L, 23L, 20L, 1L, 30L, 13L, NA, NA, NA, NA, NA, NA,
  NA, 19L
)
  1. Como você pode codificar a obtenção de um vetor com zeros nos valores válidos e com números sequenciais dentro das falhas?

  2. Como a partir do vetor resultante do item anterior você pode obter um vetor cujo os valores dentro das falhas indique a ordem de ocorrência da falha.

  3. Qual o código para determinar o tamanho de cada falha?

  4. Como determinar o tamanho da maior falha?


  1. Para os valores de velocidade (\(V_h\)) e a direção do vento (\(\theta\)) (na convenção meteorológica):

\(V_h\) = (10, 10, 10, 10, 14.142, 14.142, 14.142, 14.142, 0)

\(\theta\) = (270, 180, 360, 90, 225, 315, 135, 45, 0)

  1. Determine as componentes zonal e meridional do vento.

\[u = -V_{h} \cdot sin(\theta_{rad})\] \[v = -V_{h} \cdot cos(\theta_{rad})\]

  1. Faça os cálculos necessários para reconstruir \(V_h\) e \(\theta\), a partir de \(u\) e \(v\) determinados no item a. Por convenção, a direção do vento \(\theta\) em condições calmas (\(V_h\) < 0.5 m s-1) é assumida como 0°.

\[V_{h} = \sqrt{(u^2 + v^2)}\] \[\theta_{mat} = {\rm atan2}(-u, -v)\cdot\frac{180}{\pi}\] \[ \theta = \left\{\begin{matrix} \theta_{mat} + 360 & se & \theta_{mat} < 0 \\ 0 & se & u = 0,\: v = 0 \: \: ou \: \: V_{h} < 0.5\\ \end{matrix}\right. \]

A tabela abaixo apresenta o resultado esperado para as variáveis derivadas.

u v ws wd wd_uv dir
10 0 10.000 270 270 Oeste
0 10 10.000 180 180 Sul
0 -10 10.000 360 360 Norte
-10 0 10.000 90 90 Leste
10 10 14.142 225 225 Sudoeste
10 -10 14.142 315 315 Noroeste
-10 10 14.142 135 135 Sudeste
-10 -10 14.142 45 45 Nordeste
0 0 0.000 0 0 Calmo

Dica: ver figura abaixo.


  1. Para as séries de prec_obs e prec_sim calcule:

    1. A proporção corretamente prevista \(PC = \frac{wc+dc}{n}\)

    2. O índice de sucesso crítico \(CSI=\frac{wc}{wc+wi+di}\).

Onde \(wc\) e \(dc\) são as previsões corretas de dias úmidos (\(prec > 0.25\) mm dia-1) e secos respectivamente, \(wi\) e \(di\) são as previsões incorretas de dias úmidos e secos respectivamente. \(n\) é o n° total de previsões.

prec_obs <- c(
  0, 0, 0, 0.5, 1, 6, 9, 0.2, 1, 0, 0, 0.25,
  10, 15, 8, 3, 0, 0, 0, 0, 0, 0, 0.25, 0,
  0, 0, 1, 5, 0, 20, 0, 0, 0, 0, 1, 1,
  0, 2, 12, 1, 0, 0, 0, 0, 0, 0, 5, 5
)
prec_sim <- c(
  0, 0.2, 0.1, 0, 0, 3, 1, 1, 1, 1, 0, 3,
  0, 10, 4, 1, 0.3, 0.5, 0.5, 0.5, 0.5, 0, 0.25, 0.25,
  0.25, 0, 0.5, 3, 0, 5, 0, 0, 0, 0, 0.5, 0,
  0.25, 0.2, 0, 0.2, 0, 0, 0, 0, 1, 2, 1, 0
)

  1. Escreva o código para calcular as estatísticas abaixo, entre os vetores de valores observados (obs) e previstos (prev) por um dado modelo atmosférico, em um dado local.
  1. O Viés relativo (%)27.

\[PBIAS = 100\frac{\sum_{i=1}^{n}(Prev_{i}-Obs_{i})}{\sum_{i=1}^{n}(Obs_{i})}\].

  1. Coeficente de eficiência de Nash-Sutcliffe (NSE)28.

\[NSE = 1 - \frac{\sum_{i=1}^{n} (Obs_{i}-Sim_{i})^{2}}{\sum_{i = 1}^{n} (Obs_{i}-\bar{Obs}_{i})^{2}}\]

v_obs <- c(
  -0.49, 0.27, -0.48, 0.8, -1, 0.1, -1.16,
  0.58, -1.6, -0.31, 0.45, -0.98, 0.19, 0.73,
  -0.49, -0.04, -0.11, 0.46, 2.02, -1.05
)
v_prev <- c(
  NA, -0.49, 0.27, -0.48, 0.8, -1, 0.1, -1.16,
  0.58, -1.6, -0.31, 0.45, -0.98, 0.19, 0.73,
  -0.49, -0.04, -0.11, 0.46, 2.02
)

  1. Mede a tendência média dos valores previstos (ou simulados) em serem maiores (superestimativa) ou menores (subestiva) que os observados. O valor ótimo é 0, menores valores indicam melhor desempenho. Valores positivos indicam tendência de superestimativa e negativos de subestimativa.

  2. NSE é uma estatística normalizada que que determina a magnitude relativa da variância residual (ruído) comparada a variância dos dados medidos (informação). NSE varia de -Inf a 1. Essencialmente, quanto mais próximo a 1, melhor o modelo.