Search
Solution Partie 2

Question

Créer une matrice A au format 2X4 avec les valeurs suivantes: 1 2 3 4 5 6 7 8

1:8
  1. 1
  2. 2
  3. 3
  4. 4
  5. 5
  6. 6
  7. 7
  8. 8
A<- matrix(c(1:8), nrow = 2, ncol = 4)
A
1357
2468

Recréez cette matrice, mais cette fois les valeurs sont incrémentées par lignes

B<- matrix(c(1:8), nrow = 2, ncol = 4, byrow = T)
B
1234
5678

Question

Créez une matrice carrée avec les valeurs du vecteur vec3 créée auparavant:

matrix(vec3, nrow = 5)
212223242
414243444
616263646
818283848
1020304050

Question

Créer une matrice identité 7X7

mat<-diag(7)
mat
1000000
0100000
0010000
0001000
0000100
0000010
0000001

Afin des fins de calcul de réserves actuarielles, vous devez renverser (reverse) la diagonale de sorte où les 1 sont dans les cases (7,1), (6,2),...,(1,7)

apply(diag(7), 2, rev)
0000001
0000010
0000100
0001000
0010000
0100000
1000000

autre façon de faire

mat <- mat[ nrow(mat):1, ]
mat
0000001
0000010
0000100
0001000
0010000
0100000
1000000

Question

À partir des données suivantes, créez une matrice où vous avez la population des villes (Montréal, Québec, Laval, Gatineau) par ligne et les années 2013 à 2016 par colonnes

pop<-matrix(c(1718241,1735096,1746940,1767753,
              530474,533857,536013,538918,
              417325,421959,425481,429413,
              274180,276290,278050,281392), ncol=4, byrow = T)
pop
1718241173509617469401767753
530474 533857 536013 538918
417325 421959 425481 429413
274180 276290 278050 281392
rownames(pop)<-c("Montréal", "Québec", "Laval", "Gatineau")
colnames(pop)<-2013:2016
pop
2013201420152016
Montréal1718241173509617469401767753
Québec 530474 533857 536013 538918
Laval 417325 421959 425481 429413
Gatineau 274180 276290 278050 281392

On vous dit que l’arrondissement Hochelaga-Maisonneuve (situé à Montréal) est devenu un quartier très aisé et veut maintenant avoir son indépendance. Aujourd'hui ce prestigieux quartier appelé HOMA, l'évolution de la population de ce quartier de 2013 à 2016 a été la suivante: 20000, 20500, 23000, 23800

Quelle aurait été la population de Montréal sans compter les habitants du pays très prospère pays HOMA

vec_HOMA<-c(20000, 20500, 23000, 23800)
HOMA<-matrix(vec_HOMA, ncol=4, )
rownames(HOMA)<-c("HOMA")
colnames(HOMA)<-2013:2016
HOMA
2013201420152016
HOMA20000205002300023800
pop[1,]-vec_HOMA
2013
1698241
2014
1714596
2015
1723940
2016
1743953

Reconstruisez la nouvelle matrice avec les nouvelles données de Montréal.

pop[1,]<-pop[1,]-vec_HOMA
pop
2013201420152016
Montréal1698241171459617239401743953
Québec 530474 533857 536013 538918
Laval 417325 421959 425481 429413
Gatineau 274180 276290 278050 281392

Ajouter les données de HOMA à la matrice modifiée|

rbind(pop,HOMA)
2013201420152016
Montréal1698241171459617239401743953
Québec 530474 533857 536013 538918
Laval 417325 421959 425481 429413
Gatineau 274180 276290 278050 281392
HOMA 20000 20500 23000 23800

Question

Créer  deux  vecteurs  aléatoires  nommés  « x1 » et  « x2 »,  contenant  chacun  100  valeurs aléatoires compatibles

  1. avec une distribution de loi normale centrée réduite et
  2. avec une distribution de loi uniforme définie sur l’intervalle [0 ; 10].
x1<-rnorm(100)
x2<-runif(100, 0,10)

Créez une matrice 10X10 contient les valeur du vecteur x1 crée auparavant:

matNorm<-matrix(x1,nrow=10)

Calculez la moyenne de cette dernière et la variance de cette dernière

mean(matNorm)
0.0178254903830712
(sd(matNorm))**2
0.823977976790721

Question

Créer un vecteur xx1 contenant un échantillon équiprobable de 4 variables à partir du vecteur x1 de la question précédente

xx1<-sample(x1, 4)
xx1
  1. -0.163930968642975
  2. 0.300279118120242
  3. 0.596425059015276
  4. -0.488922835294287

À partir du vecteur xx1, créez un autre vecteur xx2 qui possède 1000 variables de l'échantillon xx1. La dernière variable possède une probabilité de 70% qu'elle soit tirée alors que les trois premières ont chacune 10% de chance qu'elle soit tirée.

xx2<-sample(xx1, 1000, replace = T, prob=c(.1,.1,.1,.7))

Donnez la fréquence de chacune des variables simulée

table(xx2)
xx2
-0.488922835294287 -0.163930968642975  0.300279118120242  0.596425059015276 
               705                 82                111                102 

Question

On vous dit que les temps pour finir un demi-triathlon suivent une loi normale avec une moyenne (et les écarts types [ET]) pour les hommes et les femmes sont les suivantes:

  • Pour les hommes nager 1.9 km en 40 minutes (ET=3), pédaler 90 km en 2:45 (ET=8), et courir 21.1 km en 2:05 (ET=10).
  • Pour les Femmes nager 1.9 km en 50 minutes (ET=5), pédaler 90 km en 3:00 (ET=5), et courir 21.1 km en 2:15 (ET=12).

Créer les vecteurs {swimH, bikeH, runH, swimF, bikeF, runF} contenant le temps pour chacun des sports pour 1002 hommes et 1300 femmes, tirés aléatoirement selon les lois ci-dessus (on suppose que les trois sports sont indépendants même si en réalité ce n'est jamais vrai, car si on se blesse en vélo, on performe beaucoup moins en course).

set.seed(123)
n<-1002
swimH<-round(rnorm(n, mean = 40, sd = 3),2)
bikeH<-round(rnorm(n, mean = 165, sd = 8),2)
runH<-round(rnorm(n, mean = 125, sd = 8),2)

m<-1300
swimF<-round(rnorm(m, mean = 50, sd = 5),2)
bikeF<-round(rnorm(m, mean = 180, sd = 5),2)
runF<-round(rnorm(m, mean = 135, sd = 12),2)

Avec les vecteurs crée précedemment, construisez une matrice pour les hommes et une autre pour les femmes

resultatH<-matrix(c(swimH, bikeH, runH), ncol = 3)
colnames(resultatH)<-c("Swim", "Bike", "Run")
rownames(resultatH)<-paste("H",1:n,sep='')
head(resultatH)
SwimBikeRun
H138.32 164.86126.39
H239.31 163.94120.08
H344.68 144.61110.54
H440.21 173.32119.85
H540.39 167.00141.37
H645.15 184.33120.51
tail(resultatH)
SwimBikeRun
H99743.21 169.29123.80
H99835.95 161.32122.38
H99938.43 160.91113.41
H100039.25 166.90119.42
H100137.01 160.67145.79
H100236.88 174.75124.70
resultatF<-matrix(c(swimF, bikeF, runF), ncol = 3)
colnames(resultatF)<-c("Swim", "Bike", "Run")
rownames(resultatF)<-paste("F",n+1:m,sep='')
head(resultatF)
SwimBikeRun
F100354.57 180.26117.59
F100449.08 184.04130.86
F100553.05 175.30115.72
F100649.74 180.20149.05
F100756.82 170.01131.69
F100847.48 180.69132.66
tail(resultatF)
SwimBikeRun
F229757.17 172.19114.79
F229854.56 174.28132.75
F229951.91 176.39132.54
F230052.76 182.63126.28
F230150.72 168.28124.29
F230258.54 179.21134.37

Créez une matrice qui contient les résultats des femmes ensuite et le résultat des hommes

résultat<-rbind(resultatH, resultatF)
head(résultat)
SwimBikeRun
H140.54 171.39135.25
H241.78 157.40130.89
H346.27 168.04131.96
H439.01 157.34133.89
H536.20 160.56118.65
H642.51 163.69123.67
tail(résultat)
SwimBikeRun
F229757.86 176.24173.19
F229848.88 177.83111.61
F229943.47 175.25137.77
F230046.19 180.49156.81
F230151.36 183.77129.70
F230259.24 182.38134.04

Quel est le numéro du dossard du participant/es qui a le meilleur temps en nage, et en combien de temps à accomplie cette discipline

min(résultat[, 1])
31.34
which(résultat[, 1]==min(résultat[, 1]))
H19: 19

Quel est le numéro du dossard du participant/es qui a le meilleur temps en vélo, et en combien de temps à accomplie cette discipline

which(résultat[, 2]==min(résultat[, 2]))
H759: 759
min(résultat[, 2])
142.31

Quel est le numéro du dossard du participant/es qui a le meilleur temps en course, et en combien de temps à accomplie cette discipline

which(résultat[, 3]==min(résultat[, 3]))
F1719: 1719
min(résultat[, 3])
102.02

Quel a été le meilleur temps chez les femmes?

tempsF<-resultatF[, 1]+resultatF[, 2]+resultatF[, 3]
bestF<-min(tempsF)
bestF
322.77

Quel numéro de dossard?

which(tempsF==min(tempsF))
F1871: 869

Qui a gagné la course et en combien de temps?

temps<-résultat[, 1]+résultat[, 2]+résultat[, 3]
gagnant<-min(temps)
gagnant
which(temps==min(temps))
292.15
H249: 249

Question

Créez un vecteur appelé ann de qui représente les années de développement dans calcul d'annuité de 5 ans, qui donne le résultat suivant $\left\{1, \dots, 5\right\}$

ann<-1:5
ann
  1. 1
  2. 2
  3. 3
  4. 4
  5. 5

Créer un vecteur contenant les fameux facteurs d'actualisation $v^n$ qui servent à calculer la valeur présente d'une série de paiements $n=5$ avec un taux d'intérêt de 2.5% \begin{equation}\label{eq:v_n} v^n=\frac{1}{1+i} \end{equation}

i<-.025
v_n<-(1+i)**(-ann)
v_n
  1. 0.975609756097561
  2. 0.951814396192743
  3. 0.928599410919749
  4. 0.905950644799755
  5. 0.883854287609517

Calculer la valeur présente d'une annuité 5 ans avec qui 153.25$ par année

\begin{equation}\label{eq:a_n} \begin{split} PV &=a_n\\ &= v+v^2+ ,\dots, v^n\\ &=\sum_{j=1}^{n} v^{\text{ } j} \end{split} \end{equation}
pmt<-153.25
sum(pmt*v_n)
711.973216953662

Reproduiser votre calcul avec la fonction suivante: \begin{equation}\label{eq:a_nn} \begin{split} PV &=a_n\\ &= v+v^2+ ,\dots, v^n\\ &=\sum_{j=1}^{n} v^{\text{ } j} \\ &=\frac{1-v^n}{i} \end{split} \end{equation} Lorsque le taux d'intérêt est constant d'une année à l'autre

n<-5
i<-.025
vn<-(1+i)**-n
vn
0.883854287609517
PV<-(1-vn)/i
PV
4.64582849561931
pmt*PV
711.973216953659

Question

on se rappelle du taux Effective rate of discount

\begin{equation}\label{eq:d} d_t=\frac{a(t)-a(t-1)}{a(t-1)} \end{equation}

Le taux discount se calcule avec la fonction suivante:

\begin{equation}\label{eq:d_i} d=\frac{i}{1+i}=iv \end{equation}

Soit un taux d'intérêt de 5%, quel sera alors de taux de discount avec seulement 6 décimales

i<-.05
d<-i/(1+i)
round(d,6)
0.047619

Question

Écrivez un code R pour créer la liste suivante :

(x <- list(ssd = c(256, 128, 512), machine = "Macbook Pro", best = TRUE))
$ssd
  1. 256
  2. 128
  3. 512
$machine
'Macbook Pro'
$best
TRUE

Ecrivez un code qui extrait les différente tailles du ssd seulement

x[[1]]
  1. 256
  2. 128
  3. 512
x$ssd
  1. 256
  2. 128
  3. 512

Extraire les étiquettes de la liste;

names(x)
  1. 'ssd'
  2. 'machine'
  3. 'best'

Extraire le 3e élément du premier élément de liste:

x[[1]][3]
512

Remplacer le dernier élément par le vecteur T,F,T

x[[3]]<-c(T,F,T)
x
$ssd
  1. 256
  2. 128
  3. 512
$machine
'Macbook Pro'
$best
  1. TRUE
  2. FALSE
  3. TRUE

Question

Soit le vecteur suivant:

x<-c(71,18,86,5,58,19,14,9,74,75,59,24,7,51,50,63,35,53,72,61)
x
  1. 71
  2. 18
  3. 86
  4. 5
  5. 58
  6. 19
  7. 14
  8. 9
  9. 74
  10. 75
  11. 59
  12. 24
  13. 7
  14. 51
  15. 50
  16. 63
  17. 35
  18. 53
  19. 72
  20. 61

Extraire le 10e élément du vecteur

x[10]
75

Extraire une partie du vecteur allant composé du 1er, 3e, ...., 19e élément

x[seq(from = 1, to = 19, by = 2)]
  1. 71
  2. 86
  3. 58
  4. 14
  5. 74
  6. 59
  7. 7
  8. 50
  9. 35
  10. 72

Extraire les éléments divisibles par deux (even numbers)

x[x%%2==0]
  1. 18
  2. 86
  3. 58
  4. 14
  5. 74
  6. 24
  7. 50
  8. 72

Extraire les éléments non divisibles par deux (odd numbers)

x[x%%2!=0]
  1. 71
  2. 5
  3. 19
  4. 9
  5. 75
  6. 59
  7. 7
  8. 51
  9. 63
  10. 35
  11. 53
  12. 61

Tous les éléments sauf 3e, 5e et 17e éléments

x[-c(3, 5, 17)]
  1. 71
  2. 18
  3. 5
  4. 19
  5. 14
  6. 9
  7. 74
  8. 75
  9. 59
  10. 24
  11. 7
  12. 51
  13. 50
  14. 63
  15. 53
  16. 72
  17. 61

Dans le vecteur x, combien d'éléments sont pairs et combien sont impairs

length(x[x%%2==0])
8
length(x[x%%2!=0])
12

Question

Soit une matrice 12X7,

x <- matrix(sample(1:100, 12*7), 12, 7)
x
97 5561 20 86 87 35
69 5275 9 72 57 43
36 2330 14 10 78 59
83 10085 24 53 40 1
84 4 6 33 66 91 71
79 6392 21 62 70 60
38 25 3 8 74 81 5
26 4664 49 39 17 65
58 6811 47 54 45 50
95 8296 29 16 88 37
89 9334 15 90 32 41
2 9427 7 76 51 12

extraire l'élément de la 5e ligne et 6e colonne

x[5,6]
45

Extraire tout le contenu de la 3e ligne et la 9 ligne

x[c(3,9),]
9687177786 169
72 39719271056

Extraire tout le contenu des colonnes impaires

x[,c(seq(from = 1, to = 7, by = 2))]
40 95 10016
47 89 6243
96 17 8669
81 23 5525
63 68 88 2
59 51 4658
31 80 8339
78 26 3237
72 97 2756
98 60 9064
30 41 7349
76 48 1413

Questions mathématiques financière

\begin{equation}\label{eq:relationship} 1+i =\Bigg(1+ \frac{i^{(m)}}{m} \Bigg)^m =(1-d)^{-1}=\Bigg(1- \frac{d^{(m)}}{m} \Bigg)^{-m} = e^{\delta} \end{equation}

Q1

En tenant compte de l'équation (\ref{eq:relationship}) Quelle est la valeur présente (arrondi à deux décimales) de 1000$ que vous aller recevoir dans 6 et 1/4 avec un taux effective rate of discount de 9.27% par année

PV<-round(1000*(1-.0927)^6.25,2)
PV
544.43

Q2

En tenant compte de l'équation (\ref{eq:relationship}) Quelle est la valeur accumulée (arrondi à deux décimales) de 1300$ que vous aller recevoir dans 10 et 1/2 avec un taux effective rate of discount de 5.3286% par année

PV<-round(1300*(1-.053286)^-10.5,2)
PV
2310.18

Q3

En tenant compte de l'équation (\ref{eq:relationship}) Quelle est la valeur accumulée (arrondi à deux décimales) de 50232$ que vous aller recevoir dans 17 ans avec un taux nominal rate of interest de 13% par année convertible trimestriellement

FV=round(50232*(1+.13/4)^(17*4),2)
FV
442083.77

Q4

En tenant compte de l'équation (\ref{eq:relationship}) Calculer la valeur présente de 82309$ à payer dans 8 ans avec un taux nominal rate of discount de 6% par année composée mensuellement

FV<-round(82309*(1-(.06/12))^(12*8),2)
FV
50870.16

Q4

Calculer la valeur présente d'une annuity-immediate avec des paiements de 50$ chaque 6 mois pour 10 ans au taux d'intérêt nominal de 4% composé semi-annuellement:

pmts<-rep(50, 20)
pmts
  1. 50
  2. 50
  3. 50
  4. 50
  5. 50
  6. 50
  7. 50
  8. 50
  9. 50
  10. 50
  11. 50
  12. 50
  13. 50
  14. 50
  15. 50
  16. 50
  17. 50
  18. 50
  19. 50
  20. 50
actu<-1:20
actu
  1. 1
  2. 2
  3. 3
  4. 4
  5. 5
  6. 6
  7. 7
  8. 8
  9. 9
  10. 10
  11. 11
  12. 12
  13. 13
  14. 14
  15. 15
  16. 16
  17. 17
  18. 18
  19. 19
  20. 20
sum(pmts*(1.02)^-actu)
817.571667229856

Question probabilité

Q1

Simuler une des valeurs tirées d'une distribution normale. Imaginez une population dont la taille moyenne est de 1.70m et un écart-type de 0.1m. En utilisant rnorm simulez 100 valeurs et sauvegardez cer dernières dans un objet de type vecteur appelé taille.

Note Fixez votre seed à une valeur 123

set.seed(123)
taille <- rnorm(n = 100, mean = 1.70, sd = .1)

Donnez un sommaire des statistiques descriptives du vecteur taille

summary(taille)
   Min. 1st Qu.  Median    Mean 3rd Qu.    Max. 
  1.469   1.651   1.706   1.709   1.769   1.919 

Q2

Quelle est la probabilité qu'une personne soir plus petit que 1.90m ? Votre réponse arrondie à deux décimales

round(pnorm(1.90, mean = 1.70, sd = .1),2)
0.98

Note

Si on veut les formats en pourcentage, on peut utiliser la fonction percent du package formattable

install.packages("formattable")
Updating HTML index of packages in '.Library'
Making 'packages.html' ... done
library(formattable)
percent(pnorm(1.90, mean = 1.70, sd = .1))
97.72%

Quelle est la probabilité que la taille d'une personne soit plus grande que 1.60 m

percent(1-pnorm(1.60, mean = 1.70, sd = .1))
84.13%

Q3

Le temps d'attente (en minute) dans une clinique suit une loi exponentielle avec un taux de 1/50. Utiliser la fonction rexp afin de simuler les tempes d'attente pour 30 personnes dans cette clinique.

set.seed(123)
(patients <- rexp(rate = 1/50, n =30))
  1. 42.1728630529201
  2. 28.8305135443807
  3. 66.4527433903372
  4. 1.5788679554156
  5. 2.81054880470037
  6. 15.8250608188855
  7. 15.7113646107649
  8. 7.26334019564092
  9. 136.311823216485
  10. 1.45767235412863
  11. 50.2415028845376
  12. 24.0107363829887
  13. 14.0506813768297
  14. 18.8558915533567
  15. 9.41420204471797
  16. 42.4893064869052
  17. 78.1601769807649
  18. 23.9380208168278
  19. 29.5467417687178
  20. 202.050585568625
  21. 42.1574865566887
  22. 48.2935605549669
  23. 74.2637897009036
  24. 67.4022242871529
  25. 58.4264492129392
  26. 80.2926171529007
  27. 74.8371434355986
  28. 78.5326273447613
  29. 1.5883871980738
  30. 29.8924845643342

Quelle est la probabilité qu'une personne attende moins que 10 minutes?

percent(pexp(q = 10,rate = 1/50))
18.13%

Supposons que la patience des gens atteint sa limite au bout de 60 minutes. Ça veut dire que s'ils attendent plus que 60 minutes, ils quittent la salle.

S'il y'a 100 personnes dans la salle, combien vont-ils quitter la salle?

percent(1 - pexp(q=60, rate =1/50))
30.12%