I can perform a 1 sample t-test in R with the t.test command. This requires actual sets of data. I can't use summary statistics (sample size, sample mean, standard deviation). I can work around this utilizing the BSDA package. But are there any other ways to accomplish this 1-sample-T in R without the BSDA pacakage?
-
2Yeah. You could just do it 'by hand' using statistical theory. – Dason Jul 14 '17 at 23:04
-
2Use something like this `2*pt(-(abs(mean-mu))*sqrt(n)/sd, df=n-1)` where `mean`, `mu`, `n` and `sd` are the sample mean, null hypothesis, sample size, and sample standard deviation, respectively. – ekstroem Jul 15 '17 at 00:17
1 Answers
Many ways. I'll list a few:
directly calculate the p-value by computing the statistic and calling
pt
with that and the df as arguments, as commenters suggest above (it can be done with a single short line in R - ekstroem shows the two-tailed test case; for the one tailed case you wouldn't double it)alternatively, if it's something you need a lot, you could convert that into a nice robust function, even adding in tests against non-zero mu and confidence intervals if you like. Presumably if you go this route you'' want to take advantage of the functionality built around the
htest
class(code and even a reasonably complete function can be found in the answers to this stats.SE question.)
If samples are not huge (smaller than a few million, say), you can simulate data with the exact same mean and standard deviation and call the ordinary t.test function. If
m
ands
andn
are the mean, sd and sample size,t.test(scale(rnorm(n))*s+m)
should do (it doesn't matter what distribution you use, sorunif
would suffice). Note the importance of callingscale
there. This makes it easy to change your alternative or get a CI without writing more code, but it wouldn't be suitable if you had millions of observations and needed to do it more than a couple of times.call a function in a different package that will calculate it -- there's at least one or two other such packages (you don't make it clear whether using BSDA was a problem or whether you wanted to avoid packages altogether)