Exercícios do Capítulo 4
maximo = function(v){
if(!is.numeric(v)) stop("Vetor v precisa ser numérico!")
max = v[1]
n = length(v)
for(i in 2:n){
if(v[i] > max) {
max = v[i]
}
}
return(max)
}
maximo(c(1,2,4,3,12,1,2,12,4,56,1,2,3))
## [1] 56
# 1. Defina n como o tamanho do vetor v;
# 2. Faça pos_max = 1;
# 3. Inicie i = 2;
# 4. Se v[i] > v[pos_max] , pos_max = i ;
# 5. Incremente i: i = i + 1;
# 6. Se i <= n, volta para a linha 4;
# 7. Retorne max.
pos_maximo = function(v){
if(!is.numeric(v)) stop("Vetor v precisa ser numérico!")
pos_max = 1
n = length(v)
for(i in 2:n){
if(v[i] > v[pos_max]) {
pos_max = i
}
}
return(pos_max)
}
pos_maximo(c(1,2,4,3,12,1,2,12,4,56,1,2,3))
## [1] 10
# 1. Defina n como o tamanho do vetor v;
# 2. Faça min = v[1];
# 3. Inicie i = 2;
# 4. Se v[i] < min , min = v[i];
# 5. Incremente i: i = i + 1;
# 6. Se i <= n, volta para a linha 4;
# 7. Retorne min.
minimo = function(v){
if(!is.numeric(v)) stop("Vetor v precisa ser numérico!")
min = v[1]
n = length(v)
for(i in 2:n){
if(v[i] < min) {
min = v[i]
}
}
return(min)
}
minimo(c(0,4,2,1,21,-2,4,5,-1,1,2))
## [1] -2
# 1. Defina n como o tamanho do vetor v;
# 2. Faça pos_min = 1;
# 3. Inicie i = 2;
# 4. Se v[i] < v[pos_min] , pos_min = i ;
# 5. Incremente i: i = i + 1;
# 6. Se i <= n, volta para a linha 4;
# 7. Retorne pos_min.
pos_minimo = function(v){
if(!is.numeric(v)) stop("Vetor v precisa ser numérico!")
pos_min = 1
n = length(v)
for(i in 2:n){
if(v[i] < v[pos_min]) {
pos_min = i
}
}
return(pos_min)
}
pos_minimo(c(0,4,2,1,21,-2,4,5,-1,1,2))
## [1] 6
# 1. Defina o máximo do vetor v como max;
# 3. max = maximo(v);
# 4. Defina o mínimo do vetor v como min;
# 5. min = minimo(v);
# 6. Retorne max - min;
amplitude = function(v){
return(maximo(v) - minimo(v))
}
amplitude(c(1,2,4,2,1,5,6,7,2,1,3,4,5,10,2,3,2,1))
## [1] 9
media = function(v){
if(!is.numeric(v)) stop("Vetor v precisa ser numérico!")
n = length(v)
soma = 0
for(i in 1:n){
soma = soma + v[i]
}
media = soma/n
return(media)
}
media(1:10)
## [1] 5.5
mean(1:10)
## [1] 5.5
mediana = function(v){
if(!is.numeric(v)) stop("Vetor v precisa ser numérico!")
n = length(v)
v_o = sort(v)
if(n%%2 == 1){
mediana = v_o[(n+1)/2]
}else{
mediana = (v_o[n/2] + v_o[(n/2)+1])/2
}
return(mediana)
}
mediana(1:10)
## [1] 5.5
median(1:10)
## [1] 5.5
quartis_1 = function(v){
if(!is.numeric(v)) stop("Vetor v precisa ser numérico!")
n = length(v)
v_o = sort(v)
if(n%%2 == 0){
k = n/2
j = k+1
}else{
k = (n-1)/2
j = k + 2
}
v_1 = v_o[1:k]
v_2 = v_o[j:n]
q_1 = mediana(v_1)
q_2 = mediana(v)
q_3 = mediana(v_2)
return(c(q_1,q_2,q_3))
}
quartis_1(1:11)
## [1] 3 6 9
# 1. Defina n como o tamanho do vetor v;
# 2. Defina v_o como o vetor v ordenado;
# 3. Sendo n par, defina k = n/2 e j=k+1;
# 4. Sendo n ímpar, defina k = (n-1)/2 + 1 e j=k;
# 5. Defina v_1 como um vetor com os elementos de v_o das posições de 1 até k;
# 6. Defina v_2 como um vetor com os elementos de v_o das posições de j até n;
# 7. q_1 = mediana de v_1;
# 8. q_2 = mediana de v;
# 9. q_3 = mediana de v_2;
# 10. Retorna o vetor (q_1, q_2, q_3).
quartis_2 = function(v){
if(!is.numeric(v)) stop("Vetor v precisa ser numérico!")
n = length(v)
v_o = sort(v)
if(n%%2 == 0){
k = n/2
j = k+1
}else{
k = (n-1)/2 +1
j = k
}
v_1 = v_o[1:k]
v_2 = v_o[j:n]
q_1 = mediana(v_1)
q_2 = mediana(v)
q_3 = mediana(v_2)
return(c(q_1,q_2,q_3))
}
quartis_2(1:11)
## [1] 3.5 6.0 8.5
# 1. Defina os quartis de v por quart;
# 3. quart = quartis_1(v);
# 6. Retorne quart[3] - quart[1]
dist_quart = function(v){
quart = quartis_1(v)
return(quart[3] - quart[1])
}
dist_quart(1:11)
## [1] 6
variancia_amostra = function(v){
if(!is.numeric(v)) stop("Vetor v precisa ser numérico!")
n = length(v)
m = media(v)
soma = 0
for(i in 1:n){
soma = soma + (v[i] - m)^2
}
s2 = soma/(n-1)
return(s2)
}
variancia_amostra(1:20)
## [1] 35
sd(1:20)^2
## [1] 35
# 1. Defina n como o tamanho do vetor v;
# 2. Defina m como a média amostral do vetor v;
# 3. Inicie soma = 0;
# 4. Inicie i=1;
# 5. Incremente a variável soma: soma = soma + abs(v[i] - m);
# 6. Incremente i: i = i + 1;
# 7. Se i <= n, volta para a linha 5;
# 8. Faça dm = soma/n);
# 9. Retorne dm.
desvio_medio = function(v){
if(!is.numeric(v)) stop("Vetor v precisa ser numérico!")
n = length(v)
m = media(v)
soma = 0
for(i in 1:n){
soma = soma + abs(v[i] - m)
}
dm = soma/n
return(dm)
}
desvio_medio(1:20)
## [1] 5
cov_amostral = function(v,w){
if(!is.numeric(v)) stop("Vetor v precisa ser numérico!")
if(!is.numeric(w)) stop("Vetor w precisa ser numérico!")
n = length(v)
k = length(w)
if(n != k) stop("Vetores com dimensões diferentes")
m_v = media(v)
m_w = media(w)
soma = 0
for(i in 1:n){
soma = soma + (v[i]-m_v)*(w[i]-m_w)
}
cov = soma/(n-1)
return(cov)
}
cov_amostral(1:10,11:20)
## [1] 9.166667
cov(1:10,11:20)
## [1] 9.166667
cov_amostral2 = function(A){
n_cola = ncol(A)
n_rowa = nrow(A)
M = matrix(0, nrow = n_rowa, ncol = n_cola)
for(i in 1:n_rowa){
for(j in 1:n_cola){
M[i,j] = cov_amostral(A[,i],A[,j])
}
}
return(M)
}
M = matrix(c(1,4,3,5,7,3,2,6,6),nrow = 3)
cov_amostral2(M)
## [,1] [,2] [,3]
## [1,] 2.333333 1 3.333333
## [2,] 1.000000 4 0.000000
## [3,] 3.333333 0 5.333333
cov(M)
## [,1] [,2] [,3]
## [1,] 2.333333 1 3.333333
## [2,] 1.000000 4 0.000000
## [3,] 3.333333 0 5.333333
A1 = c(6,9,7,3,9,2,2,6); A2 = c(4,4,6,1,1,2,7,4) ; A3 = c(1,9,5,7,2,4,2,1,9,4)
amplitude(A1)
## [1] 7
media(A3)
## [1] 4.4
variancia_amostra(A2)
## [1] 4.839286
A4 = c(A1,A2)
media(A4)
## [1] 4.5625
mediana(A4)
## [1] 4
desvio_medio(A4)
## [1] 2.257812
quartis_1(A3)
## [1] 2 4 7
dist_quart(A3)
## [1] 5
cov_amostral(A1,A2)
## [1] -0.5
cov_amostral(A1,A3)
## Error in cov_amostral(A1, A3): Vetores com dimensões diferentes