El tamaño de mi muestra es inferior a 7. La distribución discreta tiene 5 valores, sesgados, en forma de campana. ¿Cómo probar que la muestra es de esta distribución?
Respuesta
¿Demasiados anuncios?En mi trabajo he enlazado anteriormente he proporcionado un enlace a SPSS código para lograr esto, pero me tomó un poco de tiempo para escribir algunas de las funciones en R para realizar la misma tarea para la ilustración. (La única biblioteca externa necesita es partitions
.)
Así que aquí están algunas funciones para calcular las permutaciones (que son de la OMI , la parte más difícil), a continuación, calcular la probabilidad exacta de cada permutación, y luego calcular la nula distribución de la $\chi^2$ estadística.
#functions used in ExactProb
#Minimalist chi square, default equal probability for each bin
chiStat <- function(v,p=rep(1/length(v),length(v))){sum(((v - sum(v)*p)^2)/(sum(v)*p))}
#multinomial prob based on set of probabilities, defaults to equal probabilities
exactMult <- function(v,p=rep(1/length(v),length(v))){
n <- factorial(sum(v))
d <- prod(factorial(v))
p <- prod(p^v)
return( (n/d)*p )
}
#This generates all the permutations given n number of balls in m bins and
#then calculates the exact probability according to the multinomial
#distribution and the CDF of the chi-square statistic
exactProb <- function(n,m,p=rep(1/m,m)){
library(partitions)
AllDat <- t(compositions(n,m))
ExactProb <- apply(AllDat,1,exactMult,p=p)
chiStat <- function(v,p){sum(((v - sum(v)*p)^2)/(sum(v)*p))}
Chi <- apply(AllDat,1,chiStat,p=p)
#order according to chi-stat
MyData <- data.frame(as.matrix(AllDat),ExactProb, Chi)[order(Chi),]
MyData$cumprob <- cumsum(MyData$ExactProb)
return(MyData)
}
#My wrapping all up in a global function to return items in list
#given the initial data
SmallSampChi <- function(d,p=rep(1/length(d),length(d))){
n <- sum(d)
m <- length(d)
cdf <- exactProb(n=n,m=m,p=p) #generate exact probability
chiSamp <- chiStat(d,p) #Chi stat for sample
#p-value to the right of the test statistic
pvalue <- sum(cdf[cdf[,'Chi'] >= chiSamp,'ExactProb'])
#return object
t <- list(cdf,p,d,chiSamp,pvalue)
names(t) <- c("CDF","probabilities","data","Chi-Square Statistic","p-value")
return(t)
}
Así que, dado que los datos en N bolas en M contenedores de formato, podemos utilizar el SmallSampChi
función para devolver las permutaciones y el valor de p para su particular conjunto de datos y las nulas probabilidades de la lista.
#now with an example dataset, three events all on the third day
d <- c(0,0,3,0,0) #format N observations in M bins, 3 in third bin
p <- c(0.03,0.12,0.6,0.2,0.05) #arbitrary PMF in comments
t <- SmallSampChi(d=d,p=p)
Aquí la exacta probabilidad de obtener tres valores para el tercer bin es, simplemente, 0.6^3 = 0.216
- no especialmente raro, pero para una prueba general este procedimiento calcula el derecho de cola valor de p para la $\chi^2$ estadística. (Básicamente no existe el poder para los pequeños tamaños de muestra para ver si la cola izquierda es demasiado cercano a lo que sería de esperar.)
En realidad hay muy pocas combinaciones que permiten rechazar la nula a un nivel alfa de .05
, como puede verse por el trazado de la CDF de la distribución exacta nulo.
plot(t$CDF$Chi,t$CDF$cumprob,type='s',xlab='Chi-Square value',ylab='Exact CDF')
abline(v=t$'Chi-Square Statistic',col='#FF000099')
Podemos, posteriormente, evaluar el potencial de permutaciones en las que uno podría rechazar la nula dado su arbitraria PMF. (Ignore los números a la izquierda, que son sólo la inicial de los nombres de fila de las permutaciones antes de la clasificación.)
a <- .05
t$CDF[t$CDF[,'cumprob'] > (1-a),1:5]
# X1 X2 X3 X4 X5
#6 1 1 1 0 0
#20 0 0 0 3 0
#12 1 1 0 1 0
#17 1 0 0 2 0
#23 0 2 0 0 1
#24 1 0 1 0 1
#27 1 0 0 1 1
#22 1 1 0 0 1
#3 1 2 0 0 0
#4 0 3 0 0 0
#33 0 0 1 0 2
#34 0 0 0 1 2
#32 0 1 0 0 2
#31 1 0 0 0 2
#5 2 0 1 0 0
#11 2 0 0 1 0
#2 2 1 0 0 0
#21 2 0 0 0 1
#35 0 0 0 0 3
#1 3 0 0 0 0
Mina y Glen_b comentarios no están en contradicción - el poder de esta prueba dependerá de lo equivocado de su arbitraria PMF es. Usted tendrá más poder sobre todo si las papeleras en la que se asigna una probabilidad pequeña, bandejas 1, 2 y 5, al final tienen una gran probabilidad o si bin 3 en realidad tiene una mucho menor probabilidad.
Para calcular la potencia, simplemente calcular la probabilidad exacta para su proceso alternativo y, a continuación, vea agregar la probabilidad de sacar aquellas muestras en las nulo el proceso que se rechaza la nula. Aquí está un ejemplo si las tolvas en realidad tienen la misma probabilidad para el ejemplo:
p_alt <- rep(1/5,5)
t$CDF$AltProb <- apply(as.matrix(t$CDF[,1:length(p_alt)]),1,exactMult,p=p_alt)
sum(t$CDF[t$CDF[,'cumprob'] > (1-a),'AltProb']) #power of alt
#[1] 0.536
Yo no considerar 0.536
demasiado mal con sólo tres observaciones. Tardará algo más en la experimentación aunque para ver si la combinación de las papeleras es un mejor enfoque.