[R] Problems with Shapiro Wilk's test of normality.
Fredrik Karlsson
dargosch at gmail.com
Thu Nov 10 10:56:34 CET 2005
Never mind,
I solved it myself. It was an NA problem.
/Fredrik
On 11/9/05, Fredrik Karlsson <dargosch at gmail.com> wrote:
> Hi,
>
> I am trying to create a table with information from Shapiro Wilk's
> test of normality.
> However, it fails due to lack of sample size, it says, but the way I
> see it, this is not a problem.
> (See the table of sample sizes (almost) at the bottom).
>
> Applying a different function using a similar ftable call is not a
> problem (See the bottom table).
>
> This is R 2.1.0 on Linux (Gentoo).
>
> /Fredrik
>
> > shapiro.p.value <- function(x){
> + if(length(! is.na(x)) > 3 & length(! is.na(x)) < 5000 ){
> + p <- shapiro.test(x)$p.value
> + return(p)
> + }else{
> + return(NA)
> + }
> + }
> >
> > distribution.table.fun <- function(x,na.rm=T,digits=1){
> +
> + if(length(! is.na(x)) > 3 & length(! is.na(x)) < 5000){
> + # shapTest <- shapiro.test(x)
> + # W <- shapTest$statistic
> + W <- "W"
> + }
> +
> +
> +
> + shap <- shapiro.p.value(x)
> + stars <- ''
> + premark <- ''
> + postmark <- ''
> + if(length(x) < 10){
> + premark <- '\\textit{'
> + postmark <- '}'
> + }
> +
> + #skapa stjärnor
> + if(! is.na(shap)){
> + if( shap <= 0.001 ){
> + stars <- '***'
> + }else{
> + if( shap <= 0.01 ){
> + stars <- '**'
> + }else{
> + if( shap <= 0.05 ){
> + stars <- '*'
> + }
> +
> + }
> +
> + }
> +
> + outstr <- paste(premark,'W=',W,',p=',shap,postmark,stars,sep="")
> + }
> + else{
> + outstr <- ""
> + }
> +
> +
> + return(outstr)
> +
> + }
> >
> > ftable(tapply(aspvotwork$ampratio,list(Place=aspvotwork$Place,Age=aspvotwork$agemF,voicetype=aspvotwork$Type),FUN="length" ))
> voicetype Voiced Voiceless unaspirated Voiceless aspirated
> Place Age
> Velar 18 - 24 44 41 34
> 24 - 30 70 81 71
> 30 - 36 59 66 64
> 36 - 42 25 27 22
> 42 - 48 22 23 23
> 48 - 54 12 9 7
> Dental 18 - 24 48 61 54
> 24 - 30 82 101 89
> 30 - 36 57 82 72
> 36 - 42 19 31 34
> 42 - 48 25 33 31
> 48 - 54 10 12 14
> Labial 18 - 24 74 141 84
> 24 - 30 142 264 162
> 30 - 36 124 213 148
> 36 - 42 50 91 50
> 42 - 48 49 82 64
> 48 - 54 17 26 16
> > ftable(tapply(aspvotwork$ampratio,list(Place=aspvotwork$Place,Age=aspvotwork$agemF,voicetype=aspvotwork$Type),FUN="distribution.table.fun",digits=4))
> Error in shapiro.test(x) : sample size must be between 3 and 5000
> >
> > ftable(tapply(aspvotwork$ampratio,list(Place=aspvotwork$Place,Age=aspvotwork$agemF,voicetype=aspvotwork$Type),FUN="mean",digits=4,na.rm=TRUE
> ))
> voicetype Voiced Voiceless unaspirated Voiceless aspirated
> Place Age
> Velar 18 - 24 0.4816810 0.4461307 0.4513994
> 24 - 30 0.5289028 0.4778686 0.4888445
> 30 - 36 0.5452949 0.5208633 0.4756369
> 36 - 42 0.5631310 0.4697789 0.4709779
> 42 - 48 0.4968318 0.4174068 0.4088855
> 48 - 54 0.3057712 0.4483639 0.4561953
> Dental 18 - 24 0.4058078 0.4596251 0.4091731
> 24 - 30 0.4609731 0.4502778 0.4483340
> 30 - 36 0.5095430 0.4726149 0.4315419
> 36 - 42 0.4935719 0.4687774 0.4528758
> 42 - 48 0.4344465 0.4220429 0.4362018
> 48 - 54 0.3697664 0.4338549 0.4897856
> Labial 18 - 24 0.4327926 0.4879985 0.4503917
> 24 - 30 0.5309634 0.4839031 0.5927699
> 30 - 36 0.4094516 0.4444757 0.3964693
> 36 - 42 0.5010130 0.4855550 0.4540598
> 42 - 48 0.4949510 0.4329442 0.3935921
> 48 - 54 0.5217893 0.5124186 0.5011346
> >
>
--
My Gentoo + PVR-350 + IVTV + MythTV blog is on
http://gentoomythtv.blogspot.com/
More information about the R-help
mailing list