Bonjour,
Pour un projet d'études je dois coder en SAS. Voici le programme que je tente de coder :
Cela m'affiche, entre autres, le message d'erreur suivant.
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86 %macro comp_pls(tabin,vardep,varexp,rgcomp); %local i j k nc nl; data XX; set &tabin(keep=&varexp); run; data YY; set &tabin(keep=&vardep); run; PROC IML; use XX ; read all into X; print X; use YY; read all into Y; print Y; nc=ncol(X); nl=nrow(X); zero=loc(X=.); Xfull=X; Xfull[zero]=0; print Xfull; Xmiss=(X^=.); print Xmiss; Xf=T(Xfull); Xm=T(Xmiss); Xweights=(Xf*Y)/(Xm*Y##2); print Xweights; DO j=1 TO nl BY 1; Xscores[j]=(SUM(Xweights*Xfull))/(SUM(Xweights##2*Xmiss)); END; print Xscores; DO k=1 TO nc BY 1; Xloadings[k]=(SUM(Xscores*Xfull))/(SUM(Xscores##2*Xmiss)); END; print Xloadings; Yloadings=(T(Y)*Xscores)/(T(Xscores)*Xscores); print Yloadings; Xres=(X-Xscores*T(Xloadings)); print Xres; Yres=(Y-Yloadings*T(Xscores)); print Yres; CREATE W_h FROM Xweights; APPEND from Xweights; close; print W_h; CREATE T_h FROM Xscores; APPEND from Xscores; close; print T_h; CREATE P_h FROM Xloadings; APPEND from Xloadings; close; print P_h; CREATE C_h FROM Yloading; APPEND from Yloading; close; print C_h; CREATE X_h FROM Xres; APPEND from Xres; close; print X_h; CREATE Y_h FROM Yres; APPEND from Yres; close; print Y_h; QUIT; %mend comp_pls;
ERROR: (execution) Invalid argument or operand; contains missing values.
operation : * at line 5110 column 236
operands : Xf, Y
Xf 4 rows 49 cols (numeric)
Y 49 rows 1 col (numeric)
Je ne comprends pas pourquoi je ne peux pas effectuer le produit Xf*Y alors que normalement cela est possible et géré par SAS. Comment faire pour débloquer ?
Merci d'avance.
Partager