140.SAS CLINICAL ANALYSIS USING DATA, PROC MEANS, PROC FREQ, PROC UNIVARIATE, PROC CORR, PROC REPORT, PROC SQL, PROC SGPLOT, AND PROC EXPORT
SAS CLINICAL ANALYSIS USING DATA, PROC MEANS, PROC FREQ, PROC UNIVARIATE, PROC CORR, PROC REPORT, PROC SQL, PROC SGPLOT, AND PROC EXPORT
/* Step 1: Creating the Clinical Trial Dataset */
DATA Clinical_Trials;
LENGTH Trial_ID $10 Patient_ID $10 Gender $6 Drug_Name $15 Side_Effects $20 Outcome $10;
FORMAT Age 8. Dosage_mg 8.2 Efficacy 8.2 BP_Change 8.2 Recovery_Time 8.2 Weight_Change 8.2 Heart_Rate 8.2 Cholesterol_Level 8.2;
DO Trial_Index = 1001 TO 1005;
Trial_ID = CATS("T", Trial_Index);
DO Patient_Index = 2001 TO 2005;
Patient_ID = CATS("P", Patient_Index);
Age = ROUND(18 + RANUNI(1234) * 62, 1); /* Age between 18 and 80 */
Gender_Val = INT(RANUNI(1234) * 2) + 1;
SELECT (Gender_Val);
WHEN (1) Gender = "Male";
WHEN (2) Gender = "Female";
OTHERWISE Gender = "Unknown";
END;
/* Assigning Drug Name */
Drug_Num = INT(RANUNI(1234) * 5) + 1;
SELECT (Drug_Num);
WHEN (1) Drug_Name = "DrugA";
WHEN (2) Drug_Name = "DrugB";
WHEN (3) Drug_Name = "DrugC";
WHEN (4) Drug_Name = "DrugD";
WHEN (5) Drug_Name = "DrugE";
OTHERWISE Drug_Name = "Unknown";
END;
Dosage_mg = ROUND(50 + RANUNI(1234) * 250, 1); /* Dosage between 50 and 300mg */
Efficacy = ROUND(RANUNI(1234) * 100, 1); /* Efficacy between 0-100% */
\
Side_Num = INT(RANUNI(1234) * 6) + 1;
SELECT (Side_Num);
WHEN (1) Side_Effects = "None";
WHEN (2) Side_Effects = "Nausea";
WHEN (3) Side_Effects = "Dizziness";
WHEN (4) Side_Effects = "Headache";
WHEN (5) Side_Effects = "Fatigue";
WHEN (6) Side_Effects = "Insomnia";
OTHERWISE Side_Effects = "Unknown";
END;
BP_Change = ROUND(-15 + RANUNI(1234) * 30, 1); /* BP change between -15 and 15 */
Recovery_Time = ROUND(5 + RANUNI(1234) * 30, 1); /* Recovery time between 5 and 35 days */
Weight_Change = ROUND(-10 + RANUNI(1234) * 20, 1); /* Weight change between -10 and 10 kg */
Heart_Rate = ROUND(60 + RANUNI(1234) * 40, 1); /* Heart rate between 60 and 100 bpm */
Cholesterol_Level = ROUND(150 + RANUNI(1234) * 100, 1); /* Cholesterol level between 150 and 250 */
IF Efficacy > 50 THEN Outcome = "Success";
ELSE Outcome = "Failure";
OUTPUT;
END;
END;
RUN;
PROC PRINT;RUN;
OUTPUT:
Obs | Trial_ID | Patient_ID | Gender | Drug_Name | Side_Effects | Outcome | Age | Dosage_mg | Efficacy | BP_Change | Recovery_Time | Weight_Change | Heart_Rate | Cholesterol_Level | Trial_Index | Patient_Index | Gender_Val | Drug_Num | Side_Num |
---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
1 | T1001 | P2001 | Male | DrugB | None | Failure | 33 | 74.00 | 26.00 | -14.00 | 8.00 | -1.00 | 66.00 | 154.00 | 1001 | 2001 | 1 | 2 | 1 |
2 | T1001 | P2002 | Male | DrugE | Dizziness | Success | 46 | 292.00 | 74.00 | -4.00 | 15.00 | 0.00 | 71.00 | 185.00 | 1001 | 2002 | 1 | 5 | 3 |
3 | T1001 | P2003 | Male | DrugA | Headache | Failure | 34 | 228.00 | 0.00 | 12.00 | 12.00 | 6.00 | 66.00 | 162.00 | 1001 | 2003 | 1 | 1 | 4 |
4 | T1001 | P2004 | Female | DrugD | Headache | Success | 51 | 187.00 | 98.00 | -2.00 | 20.00 | 9.00 | 88.00 | 185.00 | 1001 | 2004 | 2 | 4 | 4 |
5 | T1001 | P2005 | Female | DrugA | Headache | Success | 29 | 129.00 | 97.00 | -6.00 | 25.00 | 1.00 | 88.00 | 210.00 | 1001 | 2005 | 2 | 1 | 4 |
6 | T1002 | P2001 | Male | DrugB | Headache | Success | 33 | 232.00 | 92.00 | 6.00 | 6.00 | 4.00 | 74.00 | 186.00 | 1002 | 2001 | 1 | 2 | 4 |
7 | T1002 | P2002 | Female | DrugC | Fatigue | Success | 50 | 91.00 | 83.00 | -10.00 | 21.00 | -2.00 | 96.00 | 177.00 | 1002 | 2002 | 2 | 3 | 5 |
8 | T1002 | P2003 | Male | DrugB | Headache | Failure | 55 | 124.00 | 37.00 | 15.00 | 8.00 | 8.00 | 62.00 | 155.00 | 1002 | 2003 | 1 | 2 | 4 |
9 | T1002 | P2004 | Female | DrugE | Insomnia | Failure | 67 | 153.00 | 1.00 | 14.00 | 7.00 | 9.00 | 95.00 | 167.00 | 1002 | 2004 | 2 | 5 | 6 |
10 | T1002 | P2005 | Male | DrugE | Headache | Success | 69 | 77.00 | 75.00 | 14.00 | 27.00 | -7.00 | 82.00 | 242.00 | 1002 | 2005 | 1 | 5 | 4 |
11 | T1003 | P2001 | Male | DrugE | Fatigue | Success | 36 | 232.00 | 56.00 | 12.00 | 31.00 | -7.00 | 76.00 | 195.00 | 1003 | 2001 | 1 | 5 | 5 |
12 | T1003 | P2002 | Male | DrugA | None | Success | 33 | 240.00 | 61.00 | 1.00 | 10.00 | -5.00 | 92.00 | 220.00 | 1003 | 2002 | 1 | 1 | 1 |
13 | T1003 | P2003 | Female | DrugE | Insomnia | Failure | 78 | 162.00 | 48.00 | -10.00 | 29.00 | 1.00 | 63.00 | 216.00 | 1003 | 2003 | 2 | 5 | 6 |
14 | T1003 | P2004 | Male | DrugD | None | Failure | 64 | 266.00 | 6.00 | -9.00 | 28.00 | -8.00 | 79.00 | 158.00 | 1003 | 2004 | 1 | 4 | 1 |
15 | T1003 | P2005 | Female | DrugC | Dizziness | Failure | 77 | 163.00 | 8.00 | -8.00 | 20.00 | 5.00 | 90.00 | 239.00 | 1003 | 2005 | 2 | 3 | 3 |
16 | T1004 | P2001 | Female | DrugD | Dizziness | Success | 23 | 147.00 | 84.00 | 8.00 | 19.00 | 4.00 | 87.00 | 228.00 | 1004 | 2001 | 2 | 4 | 3 |
17 | T1004 | P2002 | Female | DrugE | Nausea | Success | 47 | 215.00 | 55.00 | -4.00 | 9.00 | 0.00 | 61.00 | 214.00 | 1004 | 2002 | 2 | 5 | 2 |
18 | T1004 | P2003 | Female | DrugC | Dizziness | Failure | 72 | 83.00 | 33.00 | 13.00 | 6.00 | -2.00 | 68.00 | 155.00 | 1004 | 2003 | 2 | 3 | 3 |
19 | T1004 | P2004 | Female | DrugD | Dizziness | Success | 56 | 175.00 | 53.00 | 4.00 | 32.00 | 5.00 | 72.00 | 203.00 | 1004 | 2004 | 2 | 4 | 3 |
20 | T1004 | P2005 | Male | DrugE | Headache | Failure | 33 | 226.00 | 33.00 | 2.00 | 31.00 | 0.00 | 86.00 | 232.00 | 1004 | 2005 | 1 | 5 | 4 |
21 | T1005 | P2001 | Male | DrugB | Insomnia | Success | 62 | 170.00 | 54.00 | -13.00 | 20.00 | -7.00 | 61.00 | 158.00 | 1005 | 2001 | 1 | 2 | 6 |
22 | T1005 | P2002 | Male | DrugA | None | Success | 50 | 201.00 | 94.00 | 9.00 | 13.00 | 6.00 | 72.00 | 163.00 | 1005 | 2002 | 1 | 1 | 1 |
23 | T1005 | P2003 | Male | DrugA | Nausea | Failure | 21 | 200.00 | 42.00 | -6.00 | 14.00 | 1.00 | 65.00 | 243.00 | 1005 | 2003 | 1 | 1 | 2 |
24 | T1005 | P2004 | Male | DrugA | Headache | Success | 25 | 244.00 | 96.00 | 11.00 | 22.00 | -5.00 | 92.00 | 216.00 | 1005 | 2004 | 1 | 1 | 4 |
25 | T1005 | P2005 | Male | DrugE | None | Failure | 68 | 274.00 | 22.00 | 1.00 | 8.00 | -4.00 | 88.00 | 222.00 | 1005 | 2005 | 1 | 5 | 1 |
/* Step 2: Descriptive Statistics */
PROC MEANS DATA=Clinical_Trials N MEAN STD MIN MAX;
VAR Age Dosage_mg Efficacy BP_Change Recovery_Time Weight_Change Heart_Rate Cholesterol_Level;
RUN;
OUTPUT:
Variable | N | Mean | Std Dev | Minimum | Maximum | ||||||||||||||||||||||||||||||||||||||||||||||||
---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
|
|
|
|
|
|
/* Step 3: Additional Summary Statistics */
PROC MEANS DATA=Clinical_Trials N MEDIAN Q1 Q3;
VAR Age Dosage_mg Efficacy BP_Change Recovery_Time;
RUN;
OUTPUT:
Variable | N | Median | Lower Quartile | Upper Quartile | |||||||||||||||||||||||||
---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
|
|
|
|
|
/* Step 4: Frequency Analysis */
PROC FREQ DATA=Clinical_Trials;
TABLES Gender Drug_Name Side_Effects Outcome / NOROW NOCOL NOPERCENT;
RUN;
OUTPUT:
Gender | Frequency | Cumulative Frequency |
---|---|---|
Female | 10 | 10 |
Male | 15 | 25 |
Drug_Name | Frequency | Cumulative Frequency |
---|---|---|
DrugA | 6 | 6 |
DrugB | 4 | 10 |
DrugC | 3 | 13 |
DrugD | 4 | 17 |
DrugE | 8 | 25 |
Side_Effects | Frequency | Cumulative Frequency |
---|---|---|
Dizziness | 5 | 5 |
Fatigue | 2 | 7 |
Headache | 8 | 15 |
Insomnia | 3 | 18 |
Nausea | 2 | 20 |
None | 5 | 25 |
Outcome | Frequency | Cumulative Frequency |
---|---|---|
Failure | 11 | 11 |
Success | 14 | 25 |
/* Step 5: Univariate Analysis with Outlier Detection */
PROC UNIVARIATE DATA=Clinical_Trials;
VAR Age Dosage_mg Efficacy BP_Change Recovery_Time Weight_Change Heart_Rate Cholesterol_Level;
HISTOGRAM / NORMAL;
QQPLOT;
RUN;
OUTPUT:
Moments | |||
---|---|---|---|
N | 25 | Sum Weights | 25 |
Mean | 48.48 | Sum Observations | 1212 |
Std Deviation | 17.7766701 | Variance | 316.01 |
Skewness | 0.11151479 | Kurtosis | -1.2704097 |
Uncorrected SS | 66342 | Corrected SS | 7584.24 |
Coeff Variation | 36.6680489 | Std Error Mean | 3.55533402 |
Basic Statistical Measures | |||
---|---|---|---|
Location | Variability | ||
Mean | 48.48000 | Std Deviation | 17.77667 |
Median | 50.00000 | Variance | 316.01000 |
Mode | 33.00000 | Range | 57.00000 |
Interquartile Range | 31.00000 |
NOTE: ONLY AGE VARIABLE OUTPUT PLACED HERE TRY TO SEE ALL VARIABLES IN SAS...
/* Step 6: Correlation Analysis */
PROC CORR DATA=Clinical_Trials;
VAR Age Dosage_mg Efficacy BP_Change Recovery_Time Heart_Rate Cholesterol_Level;
RUN;
OUTPUT:
Pearson Correlation
Coefficients, N = 25 Prob > |r| under H0: Rho=0 | |||||||||||||||||||||
---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
Age | Dosage_mg | Efficacy | BP_Change | Recovery_Time | Heart_Rate | Cholesterol_Level | |||||||||||||||
Age |
|
|
|
|
|
|
| ||||||||||||||
Dosage_mg |
|
|
|
|
|
|
| ||||||||||||||
Efficacy |
|
|
|
|
|
|
| ||||||||||||||
BP_Change |
|
|
|
|
|
|
| ||||||||||||||
Recovery_Time |
|
|
|
|
|
|
| ||||||||||||||
Heart_Rate |
|
|
|
|
|
|
| ||||||||||||||
Cholesterol_Level |
|
|
|
|
|
|
|
/* Step 7: Report Generation */
PROC REPORT DATA=Clinical_Trials NOWD;
COLUMN Trial_ID Patient_ID Gender Drug_Name Dosage_mg Efficacy Recovery_Time Outcome Heart_Rate Cholesterol_Level;
DEFINE Trial_ID / GROUP;
DEFINE Patient_ID / DISPLAY;
DEFINE Gender / GROUP;
DEFINE Drug_Name / GROUP;
DEFINE Dosage_mg / ANALYSIS MEAN;
DEFINE Efficacy / ANALYSIS MEAN;
DEFINE Recovery_Time / ANALYSIS MEAN;
DEFINE Outcome / GROUP;
DEFINE Heart_Rate / ANALYSIS MEAN;
DEFINE Cholesterol_Level / ANALYSIS MEAN;
RUN;
OUTPUT:
Trial_ID | Patient_ID | Gender | Drug_Name | Dosage_mg | Efficacy | Recovery_Time | Outcome | Heart_Rate | Cholesterol_Level |
---|---|---|---|---|---|---|---|---|---|
T1001 | P2005 | Female | DrugA | 129.00 | 97.00 | 25.00 | Success | 88.00 | 210.00 |
P2004 | DrugD | 187.00 | 98.00 | 20.00 | Success | 88.00 | 185.00 | ||
P2003 | Male | DrugA | 228.00 | 0.00 | 12.00 | Failure | 66.00 | 162.00 | |
P2001 | DrugB | 74.00 | 26.00 | 8.00 | Failure | 66.00 | 154.00 | ||
P2002 | DrugE | 292.00 | 74.00 | 15.00 | Success | 71.00 | 185.00 | ||
T1002 | P2002 | Female | DrugC | 91.00 | 83.00 | 21.00 | Success | 96.00 | 177.00 |
P2004 | DrugE | 153.00 | 1.00 | 7.00 | Failure | 95.00 | 167.00 | ||
P2003 | Male | DrugB | 124.00 | 37.00 | 8.00 | Failure | 62.00 | 155.00 | |
P2001 | 232.00 | 92.00 | 6.00 | Success | 74.00 | 186.00 | |||
P2005 | DrugE | 77.00 | 75.00 | 27.00 | Success | 82.00 | 242.00 | ||
T1003 | P2005 | Female | DrugC | 163.00 | 8.00 | 20.00 | Failure | 90.00 | 239.00 |
P2003 | DrugE | 162.00 | 48.00 | 29.00 | Failure | 63.00 | 216.00 | ||
P2002 | Male | DrugA | 240.00 | 61.00 | 10.00 | Success | 92.00 | 220.00 | |
P2004 | DrugD | 266.00 | 6.00 | 28.00 | Failure | 79.00 | 158.00 | ||
P2001 | DrugE | 232.00 | 56.00 | 31.00 | Success | 76.00 | 195.00 | ||
T1004 | P2003 | Female | DrugC | 83.00 | 33.00 | 6.00 | Failure | 68.00 | 155.00 |
P2001 | DrugD | 147.00 | 84.00 | 19.00 | Success | 87.00 | 228.00 | ||
P2004 | 175.00 | 53.00 | 32.00 | 72.00 | 203.00 | ||||
P2002 | DrugE | 215.00 | 55.00 | 9.00 | Success | 61.00 | 214.00 | ||
P2005 | Male | DrugE | 226.00 | 33.00 | 31.00 | Failure | 86.00 | 232.00 | |
T1005 | P2003 | Male | DrugA | 200.00 | 42.00 | 14.00 | Failure | 65.00 | 243.00 |
P2002 | 201.00 | 94.00 | 13.00 | Success | 72.00 | 163.00 | |||
P2004 | 244.00 | 96.00 | 22.00 | 92.00 | 216.00 | ||||
P2001 | DrugB | 170.00 | 54.00 | 20.00 | Success | 61.00 | 158.00 | ||
P2005 | DrugE | 274.00 | 22.00 | 8.00 | Failure | 88.00 | 222.00 |
/* Step 8: Advanced SQL Queries */
PROC SQL;
SELECT Drug_Name, AVG(Efficacy) AS Avg_Efficacy, COUNT(*) AS Total_Patients
FROM Clinical_Trials
GROUP BY Drug_Name
ORDER BY Avg_Efficacy DESC;
QUIT;
OUTPUT:
Drug_Name | Avg_Efficacy | Total_Patients |
---|---|---|
DrugA | 65 | 6 |
DrugD | 60.25 | 4 |
DrugB | 52.25 | 4 |
DrugE | 45.5 | 8 |
DrugC | 41.33333 | 3 |
PROC SQL;
SELECT Gender, AVG(Age) AS Avg_Age, COUNT(*) AS Total_Patients
FROM Clinical_Trials
GROUP BY Gender;
QUIT;
OUTPUT:
Gender | Avg_Age | Total_Patients |
---|---|---|
Female | 55 | 10 |
Male | 44.13333 | 15 |
PROC SQL;
SELECT Side_Effects, COUNT(*) AS Frequency
FROM Clinical_Trials
GROUP BY Side_Effects
ORDER BY Frequency DESC;
QUIT;
OUTPUT:
Side_Effects | Frequency |
---|---|
Headache | 8 |
None | 5 |
Dizziness | 5 |
Insomnia | 3 |
Fatigue | 2 |
Nausea | 2 |
PROC SQL;
SELECT AVG(Heart_Rate) AS Avg_Heart_Rate, AVG(Cholesterol_Level) AS Avg_Cholesterol
FROM Clinical_Trials;
QUIT;
OUTPUT:
Avg_Heart_Rate | Avg_Cholesterol |
---|---|
77.6 | 195.4 |
/* Step 9: Data Visualization */
PROC SGPLOT DATA=Clinical_Trials;
VBOX Efficacy / CATEGORY=Drug_Name;
TITLE "Drug Efficacy Comparison";
RUN;
PROC SGPLOT DATA=Clinical_Trials;
VBAR Side_Effects / RESPONSE=BP_Change GROUP=Drug_Name;
TITLE "Side Effects vs BP Change";
RUN;
PROC SGPLOT DATA=Clinical_Trials;
SCATTER X=Age Y=Efficacy / GROUP=Drug_Name;
TITLE "Age vs Efficacy by Drug";
RUN;
PROC SGPLOT DATA=Clinical_Trials;
HISTOGRAM Recovery_Time / NORMAL;
TITLE "Recovery Time Distribution";
RUN;
PROC SGPLOT DATA=Clinical_Trials;
SERIES X=Age Y=Heart_Rate / GROUP=Gender;
TITLE "Heart Rate vs Age";
RUN;
PROC SGPLOT DATA=Clinical_Trials;
VBOX Cholesterol_Level / CATEGORY=Gender;
TITLE "Cholesterol Levels by Gender";
RUN;
/* Step 10: Data Export */
PROC EXPORT DATA=Clinical_Trials
OUTFILE="clinical_trials_output.csv"
DBMS=CSV
REPLACE;
RUN;
Comments
Post a Comment