We conducted analysis to determine if Luxuriant has an above and beyond effect than the placebo for hair growth. We plotted densities and calculated means which suggest that it does. We went on to compare Luxuriant to BaldBeGone and HairyGoodness, which are two existing treatments. We produced kernel density plots and calculated means which suggest that Luxuriant is the least effective. We then conducted analysis using linear models to determine if age had an impact. The parameter estimate for age suggests that age has a negative effect for the Placebo, Luxuriant and BaldBeGone, but the estimate is positive for HairyGoodness. Both the Luxuriant and HairyGoodness age estimates are close to zero, and we see an almost starlight line when plotting against age. This suggests that the effects of age aren’t strong for these treatments.
We are conducting a clinical trial on Luxuriant where initial efficacy against a placebo and effectiveness compared to existing commercial rivals are considered. We considered two existing anti-baldness treatments: BaldBeGone and HairyGoodness. Our analysis aims to answer 3 key questions:
Is there an effect of Luxuriant above and beyond the placebo?
Is Luxuriant more effective than the existing treatments on the market?
Is age relevant to any effect?
It’s important to begin with question 1, to determine effectiveness before comparing with other drugs. We’ve combined phase II and phase III of clinical trials.
Our data was given in inches but we want our discussions in mm. We created 4 new columns in the data set and converted to mm by multiplying by 25.4
/* converting to mm by multiplying by 25.4 */
DATA ASSIGN.IMPORT;
SET ASSIGN.IMPORT;
Luxuriantmm=Luxuriant*25.4;
Placebomm=Placebo*25.4;
BaldBeGonemm=BaldBeGone*25.4;
HairyGoodnessmm=HairyGoodness*25.4;
RUN;
To conclude whether Luxuriant has an effect above and beyond the Placebo, we began by simply finding the mean hair growth. We then plotted a histogram for both the Luxuriant and Placebo data which allows us to see what hair growth values were exhibited and how they are distributed. We also plotted kernel density lines which give us a non-parametric method to estimate the probability density. This again allows us to see how data is spread out and conclude if there is an increased effect. Finally, we also conducted a hypothesis test to test if the increased mean hair growth is statistically significant.
To answer the second question, we conducted very similar analysis to the first but replaced the Placebo with the existing treatments. We started again with means and plotted kernel densities.
To determine if age had an effect, we began by simply plotting Luxuriant growth against age. We then ran linear models for Luxuriant with age. We assumed a linear relationship between age and Luxuriant, and that the observations were independent. Both of these appear to be okay assumptions. We then conducted the same analysis for existing treatments.
proc means data=ASSIGN.IMPORT mean;
var Luxuriantmm Placebomm;
output out=ASSIGN.MEANS
mean=L P;
run;
We can see that the mean hair growth for Luxuriant is significantly higher.
PROC SGPLOT DATA=ASSIGN.IMPORT;
TITLE "Histograms showing the density of Luxuriant and the Placebo";
histogram Luxuriantmm;
histogram Placebomm;
density Luxuriantmm / type=kernel;
density Placebomm / type=kernel;
RUN;
TITLE;
This plot shows us that for the Placebo, the majority of the density is located close to zero, around 2.5. It is also very peaked at this point, showing that there isn’t a wide variation. The Luxuriant density is centered around 10 and has a higher variation. The Luxuriant is clearly further to the right than the Placebo showing that it is more effective.
We also ran a hypothesis test, with the null hypothesis that the mean growth for Luxuriant was no different than the mean for the Placebo, and found that there’s evidence to suggest that they are different.
proc means data=ASSIGN.IMPORT mean;
var Luxuriantmm Placebomm HairyGoodnessmm BaldBeGonemm;
output out=ASSIGN.MEANS
mean=L P H B;
run;
We see that Luxuriant has the lowest mean growth, excluding the Placebo. The BaldBeGone in mm is almost 3 times greater.
PROC SGPLOT DATA=ASSIGN.IMPORT;
TITLE "Kernel Density of Luxuriant, BaldBeGone and HairyGoodness";
density Luxuriantmm /legendlabel = "Luxuriant (mm)" type=kernel ;
density BaldBeGonemm /legendlabel = "BaldBeGone (mm)" type=kernel ;
density HairyGoodnessmm /legendlabel = "HairyGoodness (mm)" type=kernel ;
RUN;
TITLE;
From the column means and the densities, we see that Luxuriant has the lowest effectiveness and that BaldBeGone has the highest. BaldBeGone also has the highest variation since it has a lower peak and is broader.
We implemented a linear model for Luxuriant and age.
PROC GLM DATA = ASSIGN.IMPORT;
MODEL Luxuriantmm = AgeLuxuriant;
RUN;
The plot above shows Luxuriant growth against age, with 95% CI and prediction limits. The line looks pretty flat, suggesting that age doesn’t have a large effect.
Above is the the output of the linear model. We can see that the parameter estimate for age is -0.01058876. This shows that age decreases hair growth when using Luxuriant. This makes sense since age can have these effects, but our 95% confidence limits in the plot above show that a positive increase could be statistically possible.
We now conducted the same analysis for the Placebo.
PROC GLM DATA = ASSIGN.IMPORT;
MODEL Placebomm = AgePlacebo;
RUN;
The plot above shows Placebo growth against age, with 95% CI and prediction intervals. The line has a negative gradient suggesting that the higher the age, the lower the growth. The parameter estimate for age is -0.044, compared to only -0.011 for Luxuriant. This could suggest that using Luxuriant reduces the impact of age.
Now we conduct the same analysis for the 2 other commercial treatments.
PROC GLM DATA = ASSIGN.IMPORT;
MODEL BaldBeGonemm = AgeBaldBeGone;
RUN;
PROC GLM DATA = ASSIGN.IMPORT;
MODEL HairyGoodnessmm = AgeHairyGoodness;
RUN;
The parameter estimate for BaldBeGone is -0.30 which is largest in magnitude, showing that age has the biggest effect when using BaldBeGone. HairyGoodness is the only one to show the opposite trend, and has an age estimate of 0.029, meaning that the higher the age, the higher the growth. Again, the CI is still quite wide but we could still conclude that HairyGoodness has a more positive response to age than other options.
We found that Luxuriant has an increased effect above and beyond the Placebo, but that it has lower effectiveness than the 2 other treatments analysed. The parameter estimate for age suggests that age has a negative effect for the Placebo, Luxuriant and BaldBeGone but the estimate is positive for HairyGoodness. Both the Luxuriant and HairyGoodness age estimates are close to zero, suggesting that the effects of age aren’t strong for these treatments.
It would be better to have analysed the Placebo in a separate study from the commercial options. Opportunities for further study include comparing Luxuriant with more commercial options and testing if variables other than age also have an impact. There’s also the possibility of conducting more hypothesis tests to determine statistically significant findings.
/* Generated Code (IMPORT) */
/* Source File: Baldy (1).csv */
/* Source Path: /home/u62711426/sasuser.v94/Assignment */
/* Code generated on: 11/18/22, 10:11 AM */
%web_drop_table(ASSIGN.IMPORT);
FILENAME REFFILE '/home/u62711426/sasuser.v94/Assignment/Baldy (1).csv';
PROC IMPORT DATAFILE=REFFILE
DBMS=CSV
OUT=ASSIGN.IMPORT;
GETNAMES=YES;
RUN;
PROC CONTENTS DATA=ASSIGN.IMPORT; RUN;
%web_open_table(ASSIGN.IMPORT);
PROC CONTENTS DATA = ASSIGN.import;
RUN;
/* creating 4 new columns and converting to mm by multiplying by 25.4 */
DATA ASSIGN.IMPORT;
SET ASSIGN.IMPORT;
Luxuriantmm=Luxuriant*25.4;
Placebomm=Placebo*25.4;
BaldBeGonemm=BaldBeGone*25.4;
HairyGoodnessmm=HairyGoodness*25.4;
RUN;
/*1) Is there an effect of Luxuriant above and beyond the placebo */
/*Finding column means and saving */
proc means data=ASSIGN.IMPORT mean;
var Luxuriantmm Placebomm;
output out=ASSIGN.MEANS
mean=L P;
run;
/*Plotting histograms and kernel densities */
PROC SGPLOT DATA=ASSIGN.IMPORT;
TITLE "Histograms showing the density of Luxuriant and the Placebo";
histogram Luxuriantmm;
histogram Placebomm;
/*specifying type of kernel*/
density Luxuriantmm / type=kernel;
density Placebomm / type=kernel;
RUN;
TITLE;
/* Comparing to existing treatments */
/*getting the means and saving the table*/
proc means data=ASSIGN.IMPORT mean;
var Luxuriantmm Placebomm HairyGoodnessmm BaldBeGonemm;
output out=ASSIGN.MEANS
mean=L P H B;
run;
/* plotting kernel density for each drug */
PROC SGPLOT DATA=ASSIGN.IMPORT;
TITLE "Kernel Density of Luxuriant, BaldBeGone and HairyGoodness";
/* labelling each line in legend */
/*specifying type of kernel*/
density Luxuriantmm /legendlabel = "Luxuriant (mm)" type=kernel ;
density BaldBeGonemm /legendlabel = "BaldBeGone (mm)" type=kernel ;
density HairyGoodnessmm /legendlabel = "HairyGoodness (mm)" type=kernel ;
RUN;
TITLE;
/* is age relevant*/
/*Begin with plotting age against growth with each drug*/
/* doing a scatter plot and including CLM and CLI*/
PROC SGPLOT DATA=ASSIGN.IMPORT;
TITLE "age relevant";
REG x=AgeLuxuriant y=Luxuriantmm/ CLM CLI;
SCATTER x=AgeLuxuriant y=Luxuriantmm/transparency=0.5 markerattrs=(symbol = circlefilled);
RUN;
TITLE;
PROC SGPLOT DATA=ASSIGN.IMPORT;
TITLE "age relevant";
REG x=AgePlacebo y=Placebomm/ CLM CLI;
SCATTER x=AgePlacebo y=Placebomm/transparency=0.5 markerattrs=(symbol = circlefilled);
RUN;
TITLE;
PROC SGPLOT DATA=ASSIGN.IMPORT;
TITLE "age relevant";
REG x=AgeBaldBeGone y=BaldBeGonemm/ CLM CLI;
SCATTER x=AgeBaldBeGone y=BaldBeGonemm/transparency=0.5 markerattrs=(symbol = circlefilled);
RUN;
TITLE;
PROC SGPLOT DATA=ASSIGN.IMPORT;
TITLE "age relevant";
REG x=AgeHairyGoodness y=HairyGoodnessmm/ CLM CLI;
SCATTER x=AgeHairyGoodness y=HairyGoodnessmm/transparency=0.5 markerattrs=(symbol = circlefilled);
RUN;
TITLE;
/*Running a linear model for each drug*/
PROC GLM DATA = ASSIGN.IMPORT;
MODEL BaldBeGonemm = AgeBaldBeGone;
RUN;
PROC GLM DATA = ASSIGN.IMPORT;
MODEL Luxuriantmm = AgeLuxuriant;
RUN;
PROC GLM DATA = ASSIGN.IMPORT;
MODEL HairyGoodnessmm = AgeHairyGoodness;
RUN;
PROC GLM DATA = ASSIGN.IMPORT;
MODEL Placebomm = AgePlacebo;
RUN;