################################################# #MATH 5301 Nonparametric Statistics # #Chapter 6: Tests of the Kolmogorov-Smirnov Type ################################################################### #Example with the uniform distribution #Min and Max Parameters a=10 b=20 #Sample Size n=1000 #Generating Data x=runif(n,min=a,max=b) hist(x) sort(x) #Empirical Cumulative Distribution Function plot(ecdf(x),xlim=c(a-(b-a),b+(b-a))) #Theoretical CDF Function unif.cdf=function(x){ return(punif(x,min=a,max=b)) } unif.cdf(10) unif.cdf(20) unif.cdf(15) unif.cdf(17) #Plotting Theoretical Cumulative Distribution Function x.range=seq(from=a-(b-a), to=b+(b-a), length=1000) y.range=unif.cdf(x.range) lines(x.range,y.range,col="blue",lwd=3) #Kolmogorov-Smirnov Test ks.test(x,unif.cdf) #KS-Test Confidence Band library(sfsmisc) ecdf.ksCI(x) lines(x.range,y.range,col="blue",lwd=3) ################################################################# #Normally Distributed Data y=rnorm(n,mean=(a+b)/2,sd=(b-a)/sqrt(12)) hist(x) hist(y) #Empirical Cumulative Distribution Function plot(ecdf(y),xlim=c(a-(b-a),b+(b-a))) #Theoretical CDF Function norm.cdf=function(x){ return(pnorm(x,mean=(a+b)/2,sd=(b-a)/sqrt(12))) } #Plotting Theoretical Cumulative Distribution Function x.range=seq(from=a-(b-a), to=b+(b-a), length=1000) norm.y.range=norm.cdf(x.range) lines(x.range,norm.y.range,col="blue",lwd=3) #Kolmogorov-Smirnov Test ks.test(y,norm.cdf) #KS-Test Confidence Band library(sfsmisc) ecdf.ksCI(y) lines(x.range,norm.y.range,col="blue",lwd=3) ############################################################ #Comparing Uniform and Normal Data ks.test(x,y) wilcox.test(x,y) #Uniform Data with NormCDF ecdf.ksCI(x) lines(x.range,norm.y.range,col="blue",lwd=3) #Normal Data with UnifCDF ecdf.ksCI(y) lines(x.range,y.range,col="blue",lwd=3) #################################################################### #Testing Specifically for Normality (QQ-Plots and Shapiro-Wilk Test) x=rnorm(1000) qqnorm(x) shapiro.test(x) x=runif(1000) qqnorm(x) shapiro.test(x)