Hi Ted,

On 2012-04-04 15:06, Ted Harding wrote:
Greetings!
I want to have the coefficients that R uses in shapiro.test()
for the Shapiro-Wilk test for a prticular sample size, i.e.
the a[i] in

   W = Sum(a[i]*x[i])/(Sum(x[i] - mean(x))^2)

(where the x[i] are sorted). Two questions:

Q1:
Is there a readymade R function from which I can extract these?

Q2:
I was wondering if I might be able to modify the code for the
function shapiro.test() so as to obtain these. When I enter

   shapiro.test

I get:

function (x)
{
     DNAME<- deparse(substitute(x))
     x<- sort(x[complete.cases(x)])
     stopifnot(is.numeric(x))
     n<- length(x)
     if (n<  3 || n>  5000)
         stop("sample size must be between 3 and 5000")
     rng<- x[n] - x[1L]
     if (rng == 0)
         stop("all 'x' values are identical")
     if (rng<  1e-10)
         x<- x/rng
     n2<- n%/%2L
     sw<- .C(R_swilk, init = FALSE, as.single(x), n, n1 = n,
         n2, a = single(n2), w = double(1), pw = double(1), ifault = 
integer(1L))
     if (sw$ifault&&  sw$ifault != 7)
         stop(gettextf("ifault=%d. This should not happen", sw$ifault),
             domain = NA)
     RVAL<- list(statistic = c(W = sw$w), p.value = sw$pw, method =
"Shapiro-Wilk normality test",
         data.name = DNAME)
     class(RVAL)<- "htest"
     return(RVAL)
}
<environment: namespace:stats>


So, on the off-chance that the variable 'sw' computed therein might
contain something useful, I changed "return(RVAL)" to "return(sw)",
just in case the coefficients might be lurking as a component of sw,
and used this to define a function SW_ted(). I then ran

   SW_ted(rnorm(30))
   # Error in SW_ted(rnorm(30)) : object 'R_swilk' not found

Since shapiro.test(rnorm(30)) works perfectly, and since the
"stats:" namespace is already present, I am wondering why
"object 'R_swilk' not found" when it clearly can be found by
shapiro.test().

So why is it that in the ".C" call:

   sw<- .C(R_swilk, ... )

my modifiction of shapiro.test() doesn't find it?

(No doubt there is some dumb oversight behind this, but I'd be
grateful to be told what it is)!

No dumb oversight that I can see, but:
Q1: I have no idea, but I doubt that there is an existing function.

Q2: I think that the environment of the newly created function
    SW_ted needs to be set appropriately; try this:

  environment(SW_ted) <- environment(shapiro.test)

More information should be available from the constants used in
swilk.c (in the R sources) which is a translation of the Fortran
code at http://lib.stat.cmu.edu/apstat/R94.

Peter Ehlers


With thanks,
Ted.

-------------------------------------------------
E-Mail: (Ted Harding)<ted.hard...@wlandres.net>
Date: 04-Apr-2012  Time: 23:06:32
This message was sent by XFMail

______________________________________________
R-help@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.

______________________________________________
R-help@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.

Reply via email to