W_H=function(Tbrut,Poids,Ordre_vertical,Ordre_horizontal,alpha,beta) { #Déclaration de la taille des variables# q=ncol(Tbrut) p=nrow(Tbrut) U=matrix(0,q*p) v=matrix(0,Ordre_vertical+1) h=matrix(0,Ordre_horizontal+1) Kv=matrix(0,(p-Ordre_vertical)*q,q*p) Kh=matrix(0,p*(q-Ordre_horizontal),q*p) M=matrix(0,q*p,q*p) W=matrix(0,q*p,q*p) qlisse=matrix(0,p,q) Tlisse=matrix(0,p,q) #Transformation de la matrice de taux bruts en vecteur et construction de la matrice des poids# for (j in 1:q){ for (i in 1:p){ U[(i-1)*q+j,1]=Tbrut[i,j] W[q*(i-1)+j,q*(i-1)+j]=Poids[i,j] } } #Construction matrice kv# for (k in 0:Ordre_vertical) { v[(k+1),1]=(-1)^(Ordre_vertical-k)*factorial(Ordre_vertical)/(factorial(k)*factorial(Ordre_vertical-k)) } for (j in 1:q) { for (z in 1:(p-Ordre_vertical)) { for (i in 1:(Ordre_vertical+1)) { Kv[z+(j-1)*(p-Ordre_vertical),j+(q)*(i-1)+(z-1)*(q)]=v[i,1] } } } #Construction matrice Kh# for (k in 0:Ordre_horizontal) { h[(k+1),1]=(-1)^(Ordre_horizontal-k)*factorial(Ordre_horizontal)/(factorial(Ordre_horizontal-k)*factorial(k)) } for (i in 1:p) { for (j in 1:(q-Ordre_horizontal)) { for (z in 1:(Ordre_horizontal+1)) { Kh[j+(i-1)*(q-Ordre_horizontal),z+(j-1)+(i-1)*(q)]=h[z,1] } } } #Calcul des taux lissés# M=W+alpha*t(Kv)%*%Kv+beta*t(Kh)%*%Kh qlisse=solve(M)%*%W%*%U for (j in 1:q) { for (i in 1:p) { Tlisse[i,j]=qlisse[(i-1)*q+j,1] } } #Stockage et exportation des résultats Tlisse }