Hello: If anyone could guide me with this I would greatly appreciate it. Thanking you in advance for your assistance. Using a 3-level input factor alternative so that a function(below) can compute both a two-sided and one-sided p-values. Making the two-sided test the default. And produce output information about which alternative was tested. Where would I place the ifelse statement? function(yvec,trtvec,alpha=0.05,header="") { ################################################# # A function to compute a two-sample t-test and confidence # interval (equal-variance, independent samples). yvec is # a numeric vector containing both samples' data. trtvec # is a vector, same length as yvec, of treatment # identifiers for the data in yvec. A boxplot comparing # the treatments' data is constructed. Output is a one-row # data frame reporting the results of the test and # confidence interval ################################################## trtvec=as.factor(trtvec) boxplot(split(yvec,trtvec)) title(header) ybar=tapply(yvec,trtvec,mean) varvec=tapply(yvec,trtvec,var) nvec=table(trtvec) error.df=nvec[1]+nvec[2]-2 pooled.var=((nvec[1]-1)*varvec[1]+(nvec[2]-1)*varvec[2])/error.df diff12estimate=ybar[1]-ybar[2] stderr=sqrt(pooled.var*((1/nvec[1])+(1/nvec[2]))) tratio=diff12estimate/stderr twosidedP=2*(1-pt(abs(tratio),error.df)) tcrit=qt(1-alpha/2,error.df) lower=diff12estimate-tcrit*stderr upper=diff12estimate+tcrit*stderr calpha=1-alpha out=data.frame(diff12estimate,stderr,tratio,twosidedP,lower,upper,alpha) names(out)=c("Estimator","SE","T","P-value","Lower CI","Upper CI","Confidence") out }
Hi> Hello: > > If anyone could guide me with this I would greatly appreciate it.Thanking you> in advance for your assistance. > > Using a 3-level input factor alternative so that a function(below) cancompute> both a two-sided and one-sided p-values. Making the two-sided test the > default. And produce output information about which alternative wastested.> Where would I place the ifelse statement?Without going too deep into your function if you want to have a selection criteria which test to perform and some information in the result you can use a logical value in function definition function(yvec, trtvec, alpha=0.05, header="", two=T) { than put if (two) { result <- make two sided calculation} else { result <- make one sided calculation) and than out=data.frame(diff12estimate,stderr,tratio,twosidedP,lower,upper,alpha) names(out)=c("Estimator","SE","T","P-value","Lower CI","Upper CI","Confidence") out <- list(out, hypot=if(two) "two sided" else "one sided") out } <end of function> Regards Petr> > function(yvec,trtvec,alpha=0.05,header="") { > ################################################# > # A function to compute a two-sample t-test and confidence > # interval (equal-variance, independent samples). yvec is > # a numeric vector containing both samples' data. trtvec > # is a vector, same length as yvec, of treatment > # identifiers for the data in yvec. A boxplot comparing > # the treatments' data is constructed. Output is a one-row > # data frame reporting the results of the test and > # confidence interval > ################################################## > trtvec=as.factor(trtvec) > boxplot(split(yvec,trtvec)) > title(header) > ybar=tapply(yvec,trtvec,mean) > varvec=tapply(yvec,trtvec,var) > nvec=table(trtvec) > error.df=nvec[1]+nvec[2]-2 > pooled.var=((nvec[1]-1)*varvec[1]+(nvec[2]-1)*varvec[2])/error.df > diff12estimate=ybar[1]-ybar[2] > stderr=sqrt(pooled.var*((1/nvec[1])+(1/nvec[2]))) > tratio=diff12estimate/stderr > twosidedP=2*(1-pt(abs(tratio),error.df)) > tcrit=qt(1-alpha/2,error.df) > lower=diff12estimate-tcrit*stderr > upper=diff12estimate+tcrit*stderr > calpha=1-alpha > out=data.frame(diff12estimate,stderr,tratio,twosidedP,lower,upper,alpha) > names(out)=c("Estimator","SE","T","P-value","Lower CI","UpperCI","Confidence")> out > } > > ______________________________________________ > R-help at r-project.org mailing list > https://stat.ethz.ch/mailman/listinfo/r-help > PLEASE do read the posting guidehttp://www.R-project.org/posting-guide.html> and provide commented, minimal, self-contained, reproducible code.
Why dont you use the t.test within R? See help(t.test). It looks to have everything you need: here are the examples with different alternative hypothesese: with(sleep, t.test(extra[group == 1], extra[group == 2],alternative = "greater")) with(sleep, t.test(extra[group == 1], extra[group == 2],alternative = "two.sided")) with(sleep, t.test(extra[group == 1], extra[group == 2],alternative = "less")) If you are still really keen to use your own function I would use help(switch) to select between different alternative hypths. Regards Wayne -----Original Message----- From: r-help-bounces at r-project.org [mailto:r-help-bounces at r-project.org]On Behalf Of Letticia Ramlal Sent: 25 September 2007 14:20 To: r-help at stat.math.ethz.ch Subject: [R] Need help with function writing Hello: If anyone could guide me with this I would greatly appreciate it. Thanking you in advance for your assistance. Using a 3-level input factor alternative so that a function(below) can compute both a two-sided and one-sided p-values. Making the two-sided test the default. And produce output information about which alternative was tested. Where would I place the ifelse statement? function(yvec,trtvec,alpha=0.05,header="") { ################################################# # A function to compute a two-sample t-test and confidence # interval (equal-variance, independent samples). yvec is # a numeric vector containing both samples' data. trtvec # is a vector, same length as yvec, of treatment # identifiers for the data in yvec. A boxplot comparing # the treatments' data is constructed. Output is a one-row # data frame reporting the results of the test and # confidence interval ################################################## trtvec=as.factor(trtvec) boxplot(split(yvec,trtvec)) title(header) ybar=tapply(yvec,trtvec,mean) varvec=tapply(yvec,trtvec,var) nvec=table(trtvec) error.df=nvec[1]+nvec[2]-2 pooled.var=((nvec[1]-1)*varvec[1]+(nvec[2]-1)*varvec[2])/error.df diff12estimate=ybar[1]-ybar[2] stderr=sqrt(pooled.var*((1/nvec[1])+(1/nvec[2]))) tratio=diff12estimate/stderr twosidedP=2*(1-pt(abs(tratio),error.df)) tcrit=qt(1-alpha/2,error.df) lower=diff12estimate-tcrit*stderr upper=diff12estimate+tcrit*stderr calpha=1-alpha out=data.frame(diff12estimate,stderr,tratio,twosidedP,lower,upper,alpha) names(out)=c("Estimator","SE","T","P-value","Lower CI","Upper CI","Confidence") out } ______________________________________________ R-help at r-project.org mailing list https://stat.ethz.ch/mailman/listinfo/r-help PLEASE do read the posting guide http://www.R-project.org/posting-guide.html and provide commented, minimal, self-contained, reproducible code.