mu = 20
dp = 5
f <- function(x){
(1/sqrt(2*pi*dp^2))*exp(-(mu-x)^2/(2*dp^2))
}
x = seq(0, 40, by=0.01)
plot(x, f(x), type='l', lwd=2, col=2)plot(x, dnorm(x, mu, dp), type='l', lwd=2, col=2)A distribuição normal modela uma infinidade de fenômenos contínuos, ou seja, que resultem em um número.
\[ X \sim N \left ( \mu, \; \sigma \right ), \]
sendo \(\mu\) o parâmetro de média e \(\sigma\) o parâmetro de desvio padrão.
A função de densidade é dada por
\[ f(x) = \frac{1}{\sqrt{2 \pi \sigma^2}} \exp \left ( - (\mu - x )^2 / 2 \sigma^2 \right ). \]
mu = 20
dp = 5
f <- function(x){
(1/sqrt(2*pi*dp^2))*exp(-(mu-x)^2/(2*dp^2))
}
x = seq(0, 40, by=0.01)
plot(x, f(x), type='l', lwd=2, col=2)plot(x, dnorm(x, mu, dp), type='l', lwd=2, col=2)Vamos calcular
(a) \(P(X > 30) = 1 - P(X \leq 30)\)
1-pnorm(30, mu, dp)[1] 0.02275013
(b) \(P(X > 38) = 1 - P(X \leq 38)\)
1-pnorm(38, mu, dp)[1] 0.0001591086
(c) Qual a taxa de abstenção de 50% das cidades?
qnorm(0.5, mu, dp)[1] 20
plot(x, dnorm(x, mu, dp), type='l', lwd=2, col=2)
abline(v = qnorm(0.5, mu, dp), lty=2)(c) E a taxa de abstenção de 95% das cidades?
qnorm(0.95, mu, dp)[1] 28.22427
plot(x, dnorm(x, mu, dp), type='l', lwd=2, col=2)
abline(v = qnorm(0.95, mu, dp), lty=2)dnorm(x, mu, dp), função de densidade da normal
pnorm(x, mu, dp), função de distribuição acumulada \(P(X \leq x)\)
qnorm(x, mu, dp), percentis da distribuição normal
rnorm(n, mu, dp), sorteia n valores da distribuição normal
Vamos brincar de gerar valores da distribuição normal. Vamos tomar \(n = 100\).
n = 100
amostra = rnorm(n, mu, dp)
amostra [1] 21.88661 16.12924 11.56442 14.46830 22.82428 17.88730 22.98698 21.63674
[9] 23.70173 26.02688 23.41527 28.57136 28.16890 15.82892 17.65672 21.41935
[17] 14.62068 20.36562 26.50576 25.11961 18.73045 14.19042 22.82333 24.59849
[25] 23.34013 18.12601 20.05019 22.39740 18.87472 22.16051 24.31109 19.83109
[33] 14.96162 21.50564 22.48173 16.30661 23.34456 19.40728 17.93754 17.67995
[41] 16.93183 23.51702 18.59956 20.25330 20.05265 22.33467 20.58829 25.29613
[49] 16.24477 17.57794 26.87554 25.01364 19.83938 20.03653 25.59373 26.97814
[57] 20.74070 29.05319 14.51926 28.56271 24.60288 22.84002 15.46568 13.25568
[65] 27.00518 15.49875 23.87154 29.91664 18.87484 10.63291 22.86894 16.36668
[73] 20.35628 18.50111 25.26929 11.54707 21.81387 15.27139 18.39724 10.26602
[81] 13.76173 20.61249 28.71006 20.26829 28.54709 18.39273 25.93299 31.57733
[89] 20.42824 24.25522 30.42004 19.70028 13.06402 23.65881 20.51399 12.98473
[97] 19.01697 17.74039 22.36895 22.40105
hist(amostra)\(T \sim tStudent_{\nu}\), possui o parâmetro \(\nu\) graus de liberdade.
nu = 10
x = seq(-4, 4, by=0.01)
plot(x, dt(x, nu), type='l', lwd=2, ylim=c(0,0.5))
par(new=T)
plot(x, dnorm(x, 0, 1), type='l', lwd=2, col=2, ylim=c(0,0.5))pt(-2, nu)[1] 0.03669402
pnorm(-2)[1] 0.02275013
Entramos no final da aula na onde de ver os retorno das ações da Petrobrás. E ficou lindo…
library(quantmod)Warning: pacote 'quantmod' foi compilado no R versão 4.4.3
Carregando pacotes exigidos: xts
Warning: pacote 'xts' foi compilado no R versão 4.4.3
Carregando pacotes exigidos: zoo
Warning: pacote 'zoo' foi compilado no R versão 4.4.3
Anexando pacote: 'zoo'
Os seguintes objetos são mascarados por 'package:base':
as.Date, as.Date.numeric
Carregando pacotes exigidos: TTR
Warning: pacote 'TTR' foi compilado no R versão 4.4.3
Registered S3 method overwritten by 'quantmod':
method from
as.zoo.data.frame zoo
ticker <- "PETR4.SA"
from_date <- "2023-01-01"
to_date <- Sys.Date()
# Usando getSymbols — os dados serão atribuídos automaticamente a um objeto chamado PETR4.SA
getSymbols(ticker,
src = "yahoo",
from = from_date,
to = to_date,
auto.assign = TRUE)[1] "PETR4.SA"
# Depois de executar, você pode checar:
head(PETR4.SA) PETR4.SA.Open PETR4.SA.High PETR4.SA.Low PETR4.SA.Close
2023-01-02 23.54 23.81 22.80 22.92
2023-01-03 22.94 23.10 22.13 22.34
2023-01-04 21.96 23.59 21.83 23.05
2023-01-05 23.34 24.04 23.15 23.88
2023-01-06 23.94 24.32 23.55 23.74
2023-01-09 23.50 24.00 23.25 23.87
PETR4.SA.Volume PETR4.SA.Adjusted
2023-01-02 78424700 13.38075
2023-01-03 96750300 13.04214
2023-01-04 129504000 13.45665
2023-01-05 73886000 13.94120
2023-01-06 51851500 13.85947
2023-01-09 46385200 13.93536
tail(PETR4.SA) PETR4.SA.Open PETR4.SA.High PETR4.SA.Low PETR4.SA.Close
2025-10-14 29.95 30.46 29.88 30.02
2025-10-15 30.05 30.17 29.67 29.75
2025-10-16 29.74 29.81 29.41 29.45
2025-10-17 29.50 29.95 29.31 29.73
2025-10-20 29.70 29.90 29.48 29.75
2025-10-21 29.96 29.99 29.47 29.51
PETR4.SA.Volume PETR4.SA.Adjusted
2025-10-14 28138200 30.02
2025-10-15 40261000 29.75
2025-10-16 28660900 29.45
2025-10-17 36238600 29.73
2025-10-20 31442800 29.75
2025-10-21 25509900 29.51
dados = as.numeric(PETR4.SA$PETR4.SA.Open)
boxplot(dados)plot(1:length(dados), dados)r = array(length(dados)-1)
for (i in 1:(length(dados)-1)){
r[i] = log(dados[i+1]/dados[i])
}
plot(1:(length(dados)-1), r)hist(r, nclass=20)mean(r)[1] 0.0003440257
sd(r)[1] 0.01927413