Dear all,
I am new to SAS. First of all, here is a sample of the data:
Pairs | Instrument type | Issuer name (same) | YTM | |
1 | A | X | 3,459742 | |
1 | B | X | 2.8651 | |
2 | A | Y | 3,464001 | |
2 | B | Y | 2,2493 | |
3 | A | Z | 2,6682 | |
3 | B | Z | 4,623 | |
4 | A | T | 2,752 | |
4 | B | T | 3,86234 |
The idea is to do a descriptive statistics to compare A and B. A and B must be from the same issuer. To do so, I formed pairs.
I couldn't find a command that would give the mean difference between the YTMs of A and B as follows : YTMb A (i)-YTM B (i) where i is the pair.
Logically, I would use the proc ttest but the difference in YTM must be only from the same pair.
In the result, the diff(A-B) should be only based on a two by two difference from the same pair.
I hope I am clear.
Thank you for your help.
Hello @Emna1 and welcome to the SAS Support Communities!
@Emna1 wrote:
Logically, I would use the proc ttest ...
This is a great idea. The PAIRED statement of the TTEST procedure requires the YTM values of A and B to be in separate variables so that each observation of the input dataset represents one pair. You can use PROC TRANSPOSE to reshape the data in this way -- assuming that you already have a SAS dataset (like dataset HAVE in the code below) containing the data shown in your table.
/* Create sample data for demonstration */
data have;
input pair instrument_type $ issuer_name $ YTM :numx.;
cards;
1 A X 3,459742
1 B X 2,8651
2 A Y 3,464001
2 B Y 2,2493
3 A Z 2,6682
3 B Z 4,623
4 A T 2,752
4 B T 3,86234
;
/* Reshape the data for PROC TTEST */
proc transpose data=have out=want;
by pair issuer_name; /* alternatively: by issuer_name notsorted; */
id instrument_type;
var YTM;
run;
/* Use PROC TTEST to compute descriptive statistics for A-B */
proc ttest data=want;
paired A*B;
run;
Hello @Emna1 and welcome to the SAS Support Communities!
@Emna1 wrote:
Logically, I would use the proc ttest ...
This is a great idea. The PAIRED statement of the TTEST procedure requires the YTM values of A and B to be in separate variables so that each observation of the input dataset represents one pair. You can use PROC TRANSPOSE to reshape the data in this way -- assuming that you already have a SAS dataset (like dataset HAVE in the code below) containing the data shown in your table.
/* Create sample data for demonstration */
data have;
input pair instrument_type $ issuer_name $ YTM :numx.;
cards;
1 A X 3,459742
1 B X 2,8651
2 A Y 3,464001
2 B Y 2,2493
3 A Z 2,6682
3 B Z 4,623
4 A T 2,752
4 B T 3,86234
;
/* Reshape the data for PROC TTEST */
proc transpose data=have out=want;
by pair issuer_name; /* alternatively: by issuer_name notsorted; */
id instrument_type;
var YTM;
run;
/* Use PROC TTEST to compute descriptive statistics for A-B */
proc ttest data=want;
paired A*B;
run;
This is exactly what I asked for. Thank you very much for your help !
Registration is now open for SAS Innovate 2025 , our biggest and most exciting global event of the year! Join us in Orlando, FL, May 6-9.
Sign up by Dec. 31 to get the 2024 rate of just $495.
Register now!
ANOVA, or Analysis Of Variance, is used to compare the averages or means of two or more populations to better understand how they differ. Watch this tutorial for more.
Find more tutorials on the SAS Users YouTube channel.