On Sun, 12 Oct 2008, Peter Dalgaard wrote:
Prof Brian Ripley wrote:
Please do RTFM, for the help says
df: degrees of freedom (> 0, maybe non-integer). 'df = Inf' is
allowed. For 'qt' only values of at least one are currently
supported.
On Sun, 12 Oct 2008, Enrico Rossi wrote:
Sorry about the html-formatted message. Here it is again in plain text.
Hello,
The function qt returns NaN for degrees of freedom <1. For example:
qt(0.5,0.5)
[1] NaN
Warning message:
In qt(p, df, lower.tail, log.p) : NaNs produced
But qt(0.5,0.5) should be 0, since the distribution is symmetric.
pt(0,0.5)
[1] 0.5
It actually fails with any value, as long as df<1.
Is this a bug, or is there some fundamental reason why this cannot be
computed?
Neither ....
Well, presumably, it is using an algorithm that only works for df >=1.
However, qf() works fine with df1 < 1, so there's a fairly easy workaround.
Are you referring to
If X ~ t(df) then X^2 ~ F(1, df)
? That needs df2 < 1. So the workaround is
fake_qt <- function(p, df)
sign(p-0.5) * sqrt(qf(2*min(p, 1-p), 1, df, lower=FALSE))
Another workaround is qt(x, df, ncp=1e-10)
--
Brian D. Ripley, [EMAIL PROTECTED]
Professor of Applied Statistics, http://www.stats.ox.ac.uk/~ripley/
University of Oxford, Tel: +44 1865 272861 (self)
1 South Parks Road, +44 1865 272866 (PA)
Oxford OX1 3TG, UK Fax: +44 1865 272595
______________________________________________
[email protected] 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.