CHAID algorithm

Information for CHAID algoritm (tree algorithm) and its implementation in R

http://www.public.iastate.edu/~kkoehler/stat557/tree14p.pdf
https://justinmary.files.wordpress.com/2014/05/final-chaid-handout.pdf
http://r-forge.r-project.org/R/?group_id=343

This is an algorith for categorical variables both for response and explanatory variables. For more general types of variables use ctree:
https://cran.r-project.org/web/packages/partykit/vignettes/ctree.pdf

Software Testing: The Lincoln Index

There is an estimate for the number of bugs in a program that is called the Lincoln Index. It is really easy to calculate.

There is a great explanation on this here:

 

http://leankit.com/blog/2015/12/how-many-bugs-are-left-the-software-qa-puzzle/

Additionally:

http://serverdude.dk/?p=324

And something related:

https://en.wikipedia.org/wiki/German_tank_problem

 

 

Probabilidad de 1515 si’s en 3030 preguntas

Ultimamente se ha dado una votación relacionada con la política en España en la que de un total de 3030 consultados exactamente la mitad 1515 respondieron si y el resto no.

Una interesante pregunta es cual es la probabilidad de este evento.

Bueno, la respuesta es sencilla, si de un total de aproximadamente 3000 personas la mitad vota si y la otra mitad no, la probabilidad media de votar si es 0.5.

Sabiendo la probabilidad media de que alguien vote si, podemos aplicar la distribución binomial (por ejemplo con la instrucción de R: dbinom(1515,3030,0.5)) para obtener la probabilidad del evento.

Dicha probabilidad es:
1,45% = probabilidad de 1515 si’s de un total de 3030 consultas con probabilidad de un si en cada consulta de 0.5

Parece pequeña, pero, curiosamente, es el punto en que se dá el máximo de probabilidad:


# Código en R
# Obtención del máximo de la distribución binomial
s=dbinom(1:3030,3030,0.5)
which(s==max(s))
[1] 1515

# Gráfica de la distribución de probabilidad
plot(dbinom(1:3030,3030,0.5),type="l",xlab="n",ylab="probabilidad")
abline(v=which(s==max(s)),col="blue")

Captura


# Valores con una probabilidad mayor de 1%
s=dbinom(1:3030,3030,0.5)
v=which(s>0.01)
val_mas_probables=data.frame(n=v,prob=dbinom(v,3030,0.5))
write.csv(val_mas_probables,file="val_mas_probables.csv",row.names = F)

# Gráfico con los valores que exceden una probabilidad > 0.01
s=dbinom(1:3030,3030,0.5)
v=which(s>0.01)
plot(v,dbinom(v,3030,0.5),type="l",xlab="n",ylab="probabilidad")
abline(v=which(s==max(s)),col="blue")

Captura

El valor máximo de probabilida se dá para 1515 si’s

Viendo la tabla que resulta, se puede ver que cualquier valor alrededor de 1515 habría sido prácticamente igual de probable.

Curioso….

La distribución binomial cuando n es alto con p=0.5 se asemeja a una distribución delta con el pico en el valor que da una p=0.5, que en este caso es para el valor 1515.

Para finalizar, este es el resultado de simular 1 millón de veces una votación similar, al final tenemos la tabla del número de si’s que se han dado con más frecuencia (los 10 más frecuentes), la segunda columna da el numero de veces que la votación ha dado ese resultado:


# Código en R, Simulación Monte Carlo de 1 millón de votaciones
set.seed(1)
m=as.data.frame(table(replicate(1000000,sum(sample(0:1,3030,replace=T)))))
colnames(m)[1]= "Num"
head(m[order(m$Freq,decreasing = T),],10)

Num  Freq
1515    14632
1513    14620
1519    14597
1514    14583
1518    14513
1512    14457
1516    14444
1517    14370
1509    14346
1510     14342