parallel_line_st<-function(AT,sdose,tdose,ns,nt,ys,yt,ratio,method=c("random","block"),select=c("2.2","3.3","4.4","3.2","4.3")){
#verifaction
if(sum(ns)!=length(ys)|sum(nt)!=length(yt)|length(sdose)!=length(ns)|length(tdose)!=length(nt))
return("error input");
if(min(ns)!=max(ns))
{local_interim<-c(which((rep(max(ns),length(ns))-ns)>0));
miss_interim<-max(ns)-ns[local_interim];
m_interim<-max(ns);
for(i in 1:length(local_interim))
{
if(i==length(local_interim))
{y_interim<-c(ys[1:((local_interim[i]-1)*m_interim+ns[local_interim[i]])],rep(NA,miss_interim[i]));
ys<-y_interim;}
if(i!=length(local_interim))
{y_interim<-c(ys[1:((local_interim[i]-1)*m_interim+ns[local_interim[i]])],rep(NA,miss_interim[i]),ys[((local_interim[i]-1)*m_interim+ns[local_interim[i]]+1):length(ys)]);
ys<-y_interim;}
i<-i+1;
}
ns<-rep(max(ns),length(ns));
}
if(min(nt)!=max(nt))
{local_interim<-c(which((rep(max(nt),length(nt))-nt)>0));
miss_interim<-max(nt)-nt[local_interim];
m_interim<-max(nt);
for(i in 1:length(local_interim))
{
if(i==length(local_interim))
{y_interim<-c(yt[1:((local_interim[i]-1)*m_interim+nt[local_interim[i]])],rep(NA,miss_interim[i]));
yt<-y_interim;}
if(i!=length(local_interim))
{y_interim<-c(yt[1:((local_interim[i]-1)*m_interim+nt[local_interim[i]])],rep(NA,miss_interim[i]),yt[((local_interim[i]-1)*m_interim+nt[local_interim[i]]+1):length(yt)]);
yt<-y_interim;}
i<-i+1;
}
nt<-rep(max(nt),length(nt));
}
if(mean(ns)<mean(nt))
{local_interim<-c(which((rep(max(nt),length(ns))-ns)>0));
miss_interim<-max(nt)-ns[local_interim];
m_interim<-max(nt);
for(i in 1:length(local_interim))
{
if(i==length(local_interim))
{y_interim<-c(ys[1:((local_interim[i]-1)*m_interim+ns[local_interim[i]])],rep(NA,miss_interim[i]));
ys<-y_interim;}
if(i!=length(local_interim))
{y_interim<-c(ys[1:((local_interim[i]-1)*m_interim+ns[local_interim[i]])],rep(NA,miss_interim[i]),ys[((local_interim[i]-1)*m_interim+ns[local_interim[i]]+1):length(ys)]);
ys<-y_interim;}
i<-i+1;
}
ns<-rep(max(nt),length(ns));
}
if(mean(nt)<mean(ns))
{local_interim<-c(which((rep(max(ns),length(nt))-nt)>0));
miss_interim<-max(ns)-nt[local_interim];
m_interim<-max(ns);
for(i in 1:length(local_interim))
{
if(i==length(local_interim))
{y_interim<-c(yt[1:((local_interim[i]-1)*m_interim+nt[local_interim[i]])],rep(NA,miss_interim[i]));
yt<-y_interim;}
if(i!=length(local_interim))
{y_interim<-c(yt[1:((local_interim[i]-1)*m_interim+nt[local_interim[i]])],rep(NA,miss_interim[i]),yt[((local_interim[i]-1)*m_interim+nt[local_interim[i]]+1):length(yt)]);
yt<-y_interim;}
i<-i+1;
}
nt<-rep(max(ns),length(nt));
}
#summary as matrix
data_matrix<-matrix(c(ys,yt),nrow=mean(ns));
sname<-c("S1","S2","S3","S4");
tname<-c("T1","T2","T3","T4");
colnames(data_matrix)<-c(sname[1:length(ns)],tname[1:length(nt)]);
rownames(data_matrix)<-c(1:mean(ns));
#outlier Dixon Grubbs
m<-length(data_matrix[,1]);
k<-length(sdose)+length(tdose);
Jstandrd<-c(0,0,0.988,0.889,0.780,0.698,0.637,0.683,0.635,0.597,0.679,0.642,0.615);
if(m>=3&m<=7){
for(i in 1:length(data_matrix[1,])){
y_interim<-sort(data_matrix[,i]);
Jmin1<-(y_interim[2]-y_interim[1])/(y_interim[m]-y_interim[1]);
Jmax1<-(y_interim[m]-y_interim[m-1])/(y_interim[m]-y_interim[1]);
if(Jmin1>Jstandrd[m]){data_matrix[which.min(data_matrix[,i]),i]<-NA}
if(Jmax1>Jstandrd[m]){data_matrix[which.max(data_matrix[,i]),i]<-NA}
i<-i+1;
}
}
if(m>=8&m<=10){
for(i in 1:length(data_matrix[1,])){
y_interim<-sort(data_matrix[,i]);
Jmin2<-(y_interim[2]-y_interim[1])/(y_interim[m-1]-y_interim[1]);
Jmax2<-(y_interim[m]-y_interim[m-1])/(y_interim[m]-y_interim[2]);
if(Jmin2>Jstandrd[m]){data_matrix[which.min(data_matrix[,i]),i]<-NA}
if(Jmax2>Jstandrd[m]){data_matrix[which.max(data_matrix[,i]),i]<-NA}
i<-i+1;
}
}
if(m>=11&m<=13){
for(i in 1:length(data_matrix[1,])){
y_interim<-sort(data_matrix[,i]);
Jmin3<-(y_interim[3]-y_interim[1])/(y_interim[m-1]-y_interim[1]);
Jmax3<-(y_interim[m]-y_interim[m-3])/(y_interim[m]-y_interim[2]);
if(Jmin3>Jstandrd[m]){data_matrix[which.min(data_matrix[,i]),i]<-NA}
if(Jmax3>Jstandrd[m]){data_matrix[which.max(data_matrix[,i]),i]<-NA}
i<-i+1;
}
}
if(m>13){
p<-1-0.01/(2*m);
G<-(m-1)*qt(p,m-2)/(m*(m-2+qt(p,m-2)^2))^0.5;
for(i in 1:length(data_matrix[1,])){
y_interim<-data_matrix[,i];
data_matrix[((y_interim-mean(y_interim))/sd(y_interim)>G),i]<-NA;
i<-i+1;
}
}
#missing fill
f_correct<-sum(is.na(data_matrix[is.na(data_matrix)]));
if(method=="random"&f_correct>0){
for(i in 1:length(data_matrix[1,])){
y_interim<-data_matrix[,i][!is.na(data_matrix[,i])];
data_matrix[is.na(data_matrix[,i]),i]<-mean(y_interim);
i<i+1;
}
}
if(method=="block"&f_correct>0){
if(f_correct==1){
if(which(is.na(data_matrix))%%m==0){nrow<-m; ncol<-which(is.na(data_matrix))%/%m;}
if(which(is.na(data_matrix))%%m!=0){nrow<-which(is.na(data_matrix))%%m;ncol<-which(is.na(data_matrix))%/%m+1;}
c<-sum(data_matrix[-nrow,ncol]);
r<-sum(data_matrix[nrow,-ncol]);
k<-length(sdose)+length(tdose);
g<-sum(data_matrix[!is.na(data_matrix)]);
data_matrix[is.na(data_matrix)]<-(k*c+m*r-g)/((k-1)*(m-1));
}
if(f_correct>1){
n_interim<-which(is.na(data_matrix));
data_matrix[n_interim]<-100;
for(ii in 1:100){
i<-1;
for(i in 1:length(n_interim)){
if(n_interim[i] %% m==0){nrow<-m;ncol<-n_interim[i]%/%m;}
if(n_interim[i] %% m!=0){nrow<-n_interim[i]%%m;ncol<-n_interim[i]%/%m+1;}
c<-sum(data_matrix[-nrow,ncol]);
r<-sum(data_matrix[nrow,-ncol]);
k<-length(sdose)+length(tdose);
g<-sum(data_matrix)-data_matrix[nrow,ncol];
data_matrix[n_interim[i]]<-(k*c+m*r-g)/((k-1)*(m-1));
i<-i+1;
}
ii<-ii+1;
}
}
}
#ANOVA
if(method=="random"){
ss_total<-sum(data_matrix^2)-sum(data_matrix)^2/(m*k);f_total<-m*k-1;ms_total<-ss_total/f_total;
ss_dose<-sum(colSums(data_matrix)^2)/m-sum(data_matrix)^2/(m*k);f_dose<-k-1;ms_dose<-ss_dose/f_dose;
ss_error<-ss_total-ss_dose;f_error<-(m-1)*k-f_correct;ms_error<-ss_error/f_error;
ss1<-c(ss_dose,ss_error,ss_total);
df1<-c(f_dose,f_error,f_total);
ms1<-c(ms_dose,ms_error,ms_total);
F1<-c(ms_dose/ms_error,NA,NA);
p1<-c(1-pf(F1[1],f_dose,f_error),NA,NA);
ANOVA_data1<-data.frame(Variation=c("Dose","Error","Total"),SS=ss1,Df=df1,MS=ms1,F=F1,P=p1);
}
if(method=="block"){
ss_total<-sum(data_matrix^2)-sum(data_matrix)^2/(m*k);f_total<-m*k-1;ms_total<-ss_total/f_total;
ss_dose<-sum(colSums(data_matrix)^2)/m-sum(data_matrix)^2/(m*k);f_dose<-k-1;ms_dose<-ss_dose/f_dose;
ss_block<-sum(rowSums(data_matrix)^2)/k-sum(data_matrix)^2/(m*k);f_block<-m-1;ms_block<-ss_block/f_block;
ss_error<-ss_total-ss_dose-ss_block;f_error<-(k-1)*(m-1)-f_correct;ms_error<-ss_error/f_error;
ss1<-c(ss_dose,ss_block,ss_error,ss_total);
df1<-c(f_dose,f_block,f_error,f_total);
ms1<-c(ms_dose,ms_block,ms_error,ms_total);
F1<-c(ms_dose/ms_error,ms_block/ms_error,NA,NA);
p1<-c(1-pf(F1[1],f_dose,f_error),1-pf(F1[2],f_block,f_error),NA,NA);
ANOVA_data1<-data.frame(Variation=c("Dose","Block","Error","Total"),SS=ss1,Df=df1,MS=ms1,F=F1,P=p1);
}
#Reliability
c_correct2.2<-matrix(c(-1,-1,1,1,-1,1,-1,1,1,-1,-1,1),nrow=3,byrow=T);
c_correct3.3<-matrix(c(-1,-1,-1,1,1,1,-1,0,1,-1,0,1,1,0,-1,-1,0,1,1,-2,1,1,-2,1,-1,2,-1,1,-2,1),nrow=5,byrow=T);
c_correct4.4<-matrix(c(rep(-1,4),rep(1,4),-3,-1,1,3,-3,-1,1,3,3,1,-1,-3,-3,-1,1,3,1,-1,-1,1,1,-1,-1,1,-1,1,1,-1,1,-1,-1,1),nrow=5,byrow=T);
c_correct3.2<-matrix(c(-2,-2,-2,3,3,-2,0,2,-1,1,1,0,-1,-2,2,1,-2,1,0,0),nrow=4,byrow=T);
c_correct4.3<-matrix(c(rep(-3,4),rep(4,3),-3,-1,1,3,-2,0,2,3,1,-1,-3,-5,0,5,3,-3,-3,3,2,-4,2,-1,1,1,-1,1,-2,1),nrow=5,byrow=T);
if(select=="2.2"){
ms_preparation<-sum(colSums(data_matrix)*c_correct2.2[1,])^2/(m*sum(c_correct2.2[1,]^2));
ms_regression<-sum(colSums(data_matrix)*c_correct2.2[2,])^2/(m*sum(c_correct2.2[2,]^2));
ms_line<-sum(colSums(data_matrix)*c_correct2.2[3,])^2/(m*sum(c_correct2.2[3,]^2));
F_preparation<-ms_preparation/ms_error;
F_regression<-ms_regression/ms_error;
F_line<-ms_line/ms_error;
p_preparation<-1-pf(F_preparation,1,f_error);
p_regression<-1-pf(F_regression,1,f_error);
p_line<-1-pf(F_line,1,f_error);
ss2<-c(ms_preparation,ms_regression,ms_line);
df2<-c(1,1,1);
ms2<-ss2;
F2<-c(ms_preparation/ms_error,ms_regression/ms_error,ms_line/ms_error);
p2<-c(1-pf(F2[1],1,f_error),1-pf(F2[2],1,f_error),1-pf(F2[3],1,f_error));
ANOVA_data2<-data.frame(Variation=c("Preparation","Regression","Line"),SS=ss2,Df=df2,MS=ms2,F=F2,P=p2);
}
if(select=="3.3"){
ms_preparation<-sum(colSums(data_matrix)*c_correct3.3[1,])^2/(m*sum(c_correct3.3[1,]^2));
ms_regression<-sum(colSums(data_matrix)*c_correct3.3[2,])^2/(m*sum(c_correct3.3[2,]^2));
ms_line<-sum(colSums(data_matrix)*c_correct3.3[3,])^2/(m*sum(c_correct3.3[3,]^2));
ms_conic<-sum(colSums(data_matrix)*c_correct3.3[4,])^2/(m*sum(c_correct3.3[4,]^2));
ms_inverseconic<-sum(colSums(data_matrix)*c_correct3.3[5,])^2/(m*sum(c_correct3.3[5,]^2));
F_preparation<-ms_preparation/ms_error;
F_regression<-ms_regression/ms_error;
F_line<-ms_line/ms_error;
F_conic<-ms_conic/ms_error;
F_inverseconic<-ms_inverseconic/ms_error;
p_preparation<-1-pf(F_preparation,1,f_error);
p_regression<-1-pf(F_regression,1,f_error);
p_line<-1-pf(F_line,1,f_error);
p_conic<-1-pf(F_conic,1,f_error);
p_inverseconic<-1-pf(F_inverseconic,1,f_error);
ss2<-c(ms_preparation,ms_regression,ms_line,ms_conic,ms_inverseconic);
df2<-c(1,1,1,1,1);
ms2<-ss2;
F2<-c(ms_preparation/ms_error,ms_regression/ms_error,ms_line/ms_error,ms_conic/ms_error,ms_inverseconic/ms_error);
p2<-c(1-pf(F2[1],1,f_error),1-pf(F2[2],1,f_error),1-pf(F2[3],1,f_error),1-pf(F2[4],1,f_error),1-pf(F2[5],1,f_error));
ANOVA_data2<-data.frame(Variation=c("Preparation","Regression","Line","Conic","InverseConic"),SS=ss2,Df=df2,MS=ms2,F=F2,P=p2);
}
if(select=="4.4"){
ms_preparation<-sum(colSums(data_matrix)*c_correct4.4[1,])^2/(m*sum(c_correct4.4[1,]^2));
ms_regression<-sum(colSums(data_matrix)*c_correct4.4[2,])^2/(m*sum(c_correct4.4[2,]^2));
ms_line<-sum(colSums(data_matrix)*c_correct4.4[3,])^2/(m*sum(c_correct4.4[3,]^2));
ms_conic<-sum(colSums(data_matrix)*c_correct4.4[4,])^2/(m*sum(c_correct4.4[4,]^2));
ms_inverseconic<-sum(colSums(data_matrix)*c_correct4.4[5,])^2/(m*sum(c_correct4.4[5,]^2));
F_preparation<-ms_preparation/ms_error;
F_regression<-ms_regression/ms_error;
F_line<-ms_line/ms_error;
F_conic<-ms_conic/ms_error;
F_inverseconic<-ms_inverseconic/ms_error;
p_preparation<-1-pf(F_preparation,1,f_error);
p_regression<-1-pf(F_regression,1,f_error);
p_line<-1-pf(F_line,1,f_error);
p_conic<-1-pf(F_conic,1,f_error);
p_inverseconic<-1-pf(F_inverseconic,1,f_error);
ss2<-c(ms_preparation,ms_regression,ms_line,ms_conic,ms_inverseconic);
df2<-c(1,1,1,1,1);
ms2<-ss2;
F2<-c(ms_preparation/ms_error,ms_regression/ms_error,ms_line/ms_error,ms_conic/ms_error,ms_inverseconic/ms_error);
p2<-c(1-pf(F2[1],1,f_error),1-pf(F2[2],1,f_error),1-pf(F2[3],1,f_error),1-pf(F2[4],1,f_error),1-pf(F2[5],1,f_error));
ANOVA_data2<-data.frame(Variation=c("Preparation","Regression","Line","Conic","InverseConic"),SS=ss2,Df=df2,MS=ms2,F=F2,P=p2);
}
if(select=="3.2"){
ms_preparation<-sum(colSums(data_matrix)*c_correct3.2[1,])^2/(m*sum(c_correct3.2[1,]^2));
ms_regression<-sum(colSums(data_matrix)*c_correct3.2[2,])^2/(m*sum(c_correct3.2[2,]^2));
ms_line<-sum(colSums(data_matrix)*c_correct3.2[3,])^2/(m*sum(c_correct3.2[3,]^2));
ms_conic<-sum(colSums(data_matrix)*c_correct3.2[4,])^2/(m*sum(c_correct3.2[4,]^2));
F_preparation<-ms_preparation/ms_error;
F_regression<-ms_regression/ms_error;
F_line<-ms_line/ms_error;
F_conic<-ms_conic/ms_error;
p_preparation<-1-pf(F_preparation,1,f_error);
p_regression<-1-pf(F_regression,1,f_error);
p_line<-1-pf(F_line,1,f_error);
p_conic<-1-pf(F_conic,1,f_error);
ss2<-c(ms_preparation,ms_regression,ms_line,ms_conic);
df2<-c(1,1,1,1);
ms2<-ss2;
F2<-c(ms_preparation/ms_error,ms_regression/ms_error,ms_line/ms_error,ms_conic/ms_error);
p2<-c(1-pf(F2[1],1,f_error),1-pf(F2[2],1,f_error),1-pf(F2[3],1,f_error),1-pf(F2[4],1,f_error));
ANOVA_data2<-data.frame(Variation=c("Preparation","Regression","Line","Conic"),SS=ss2,Df=df2,MS=ms2,F=F2,P=p2);
}
if(select=="4.3"){
ms_preparation<-sum(colSums(data_matrix)*c_correct4.3[1,])^2/(m*sum(c_correct4.3[1,]^2));
ms_regression<-sum(colSums(data_matrix)*c_correct4.3[2,])^2/(m*sum(c_correct4.3[2,]^2));
ms_line<-sum(colSums(data_matrix)*c_correct4.3[3,])^2/(m*sum(c_correct4.3[3,]^2));
ms_conic<-sum(colSums(data_matrix)*c_correct4.3[4,])^2/(m*sum(c_correct4.3[4,]^2));
ms_inverseconic<-sum(colSums(data_matrix)*c_correct4.3[5,])^2/(m*sum(c_correct4.3[5,]^2));
F_preparation<-ms_preparation/ms_error;
F_regression<-ms_regression/ms_error;
F_line<-ms_line/ms_error;
F_conic<-ms_conic/ms_error;
F_inverseconic<-ms_inverseconic/ms_error;
p_preparation<-1-pf(F_preparation,1,f_error);
p_regression<-1-pf(F_regression,1,f_error);
p_line<-1-pf(F_line,1,f_error);
p_conic<-1-pf(F_conic,1,f_error);
p_inverseconic<-1-pf(F_inverseconic,1,f_error);
ss2<-c(ms_preparation,ms_regression,ms_line,ms_conic,ms_inverseconic);
df2<-c(1,1,1,1,1);
ms2<-ss2;
F2<-c(ms_preparation/ms_error,ms_regression/ms_error,ms_line/ms_error,ms_conic/ms_error,ms_inverseconic/ms_error);
p2<-c(1-pf(F2[1],1,f_error),1-pf(F2[2],1,f_error),1-pf(F2[3],1,f_error),1-pf(F2[4],1,f_error),1-pf(F2[5],1,f_error));
ANOVA_data2<-data.frame(Variation=c("Preparation","Regression","Line","Conic","InverseConic"),SS=ss2,Df=df2,MS=ms2,F=F2,P=p2);
}
#potency
v_correct2.2<-c(rep(-1/2,2),rep(1/2,2));
v_correct3.3<-c(rep(-1/3,3),rep(1/3,3));
v_correct4.4<-c(rep(-1/4,4),rep(1/4,4));
v_correct3.2<-c(rep(-1/3,3),rep(1/2,2));
v_correct4.3<-c(rep(-1/4,4),rep(1/3,3));
sum_data<-colSums(data_matrix);
names(sum_data)<-NULL;
if(select=="2.2"){
v<-sum(sum_data*v_correct2.2);
w<-1/2*(sum_data[4]-sum_data[3]+sum_data[2]-sum_data[1]);
D<-sdose[2]/tdose[2];
A<-1;B<-1;g<-(qt(0.975,f_error)^2)*ms_error*m/w^2;
I<-log10(ratio);
sm<-I/(w^2*(1-g))*(m*ms_error*((1-g)*A*w^2+B*v^2))^0.5;
potency<-AT*D*10^(I*v/w);
potency_low<-AT*10^(log10(D*10^(I*v/w))/(1-g)-qt(0.975,f_error)*sm);
potency_up<-AT*10^(log10(D*10^(I*v/w))/(1-g)+qt(0.975,f_error)*sm);
}
if(select=="3.3"){
v<-sum(sum_data*v_correct3.3);
w<-1/4*(sum_data[6]-sum_data[4]+sum_data[3]-sum_data[1]);
D<-sdose[3]/tdose[3];
A<-2/3;B<-1/4;g<-(qt(0.975,f_error)^2)*ms_error*m/(4*w^2);
I<-log10(ratio);
sm<-I/(w^2*(1-g))*(m*ms_error*((1-g)*A*w^2+B*v^2))^0.5;
potency<-AT*D*10^(I*v/w);
potency_low<-AT*10^(log10(D*10^(I*v/w))/(1-g)-qt(0.975,f_error)*sm);
potency_up<-AT*10^(log10(D*10^(I*v/w))/(1-g)+qt(0.975,f_error)*sm);
}
if(select=="4.4"){
v<-sum(sum_data*v_correct4.4);
w<-1/20*((sum_data[7]-sum_data[6]+sum_data[3]-sum_data[2])+3*(sum_data[8]-sum_data[5]+sum_data[4]-sum_data[1]));
D<-sdose[4]/tdose[4];
A<-1/2;B<-1/10;g<-(qt(0.975,f_error)^2)*ms_error*m/(10*w^2);
I<-log10(ratio);
sm<-I/(w^2*(1-g))*(m*ms_error*((1-g)*A*w^2+B*v^2))^0.5;
potency<-AT*D*10^(I*v/w);
potency_low<-AT*10^(log10(D*10^(I*v/w))/(1-g)-qt(0.975,f_error)*sm);
potency_up<-AT*10^(log10(D*10^(I*v/w))/(1-g)+qt(0.975,f_error)*sm);
}
if(select=="3.2"){
v<-sum(sum_data*v_correct3.2);
w<-1/5*((sum_data[5]-sum_data[4])+2*(sum_data[3]-sum_data[1]));
D<-sdose[3]/tdose[2]*(1/ratio^0.5);
A<-5/6;B<-2/5;g<-2*(qt(0.975,f_error)^2)*ms_error*m/(5*w^2);
I<-log10(ratio);
sm<-I/(w^2*(1-g))*(m*ms_error*((1-g)*A*w^2+B*v^2))^0.5;
potency<-AT*D*10^(I*v/w);
potency_low<-AT*10^(log10(D*10^(I*v/w))/(1-g)-qt(0.975,f_error)*sm);
potency_up<-AT*10^(log10(D*10^(I*v/w))/(1-g)+qt(0.975,f_error)*sm);
}
if(select=="4.3"){
v<-sum(sum_data*v_correct4.3);
w<-1/14*(2*(sum_data[7]-sum_data[5])+(sum_data[3]-sum_data[2])+3*(sum_data[4]-sum_data[1]));
D<-sdose[4]/tdose[3]*(1/ratio^0.5);
A<-7/12;B<-1/7;g<-(qt(0.975,f_error)^2)*ms_error*m/(7*w^2);
I<-log10(ratio);
sm<-I/(w^2*(1-g))*(m*ms_error*((1-g)*A*w^2+B*v^2))^0.5;
potency<-AT*D*10^(I*v/w);
potency_low<-AT*10^(log10(D*10^(I*v/w))/(1-g)-qt(0.975,f_error)*sm);
potency_up<-AT*10^(log10(D*10^(I*v/w))/(1-g)+qt(0.975,f_error)*sm);
}
#return outcome
outcome<-list(Data=data_matrix,ANOVA=ANOVA_data1,Reliability=ANOVA_data2,Potency=potency,Potency_95low=potency_low,Potency_95up=potency_up);
return(outcome);
}
Add the following code to your website.
For more information on customizing the embed code, read Embedding Snippets.