140.SAS CLINICAL ANALYSIS USING DATA, PROC MEANS, PROC FREQ, PROC UNIVARIATE, PROC CORR, PROC REPORT, PROC SQL, PROC SGPLOT, AND PROC EXPORT
- Get link
- X
- Other Apps
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;
- Get link
- X
- Other Apps
Comments
Post a Comment