A finales del siglo XIX el físico norteamericano Newbold descubrió que la proporción de datos que empiezan por una cifra \(d\), \(p(d)\), en listas de datos correspondientes a muchos fenómenos naturales y demográficos es aproximadamente: \[
p(d) = \log_{10}\left(\frac{d+1}{d}\right), \ \ d=1,2,\ldots,9.
\] Por ejemplo, \(p(1)=\log_{10} 2 \approx 0.301030\) es la frecuencia relativa de datos que empiezan por 1. A raíz de un artículo publicado en 1938 por Benford, la fórmula anterior se conoce como ley de Benford. Con el siguente código R
dibujamos la función de masa de esta distribución:
d = 1:9 # Numeros del 1 al 9
PBenford = log10((d+1)/d) # Fn de masa Ley de Benford
plot(d,PBenford,pch=19,cex=2,
ylab="Función de masa Ley de Benford",
cex.axis=1.5,cex.lab=1.5, xaxt="n")
axis(1,at=d,labels=d,cex.axis=1.5)
El fichero poblacion.RData
incluye un fichero llamado poblaciones
con la población total de los municipios españoles, así como su población de hombres y de mujeres.
a) Contrasta a nivel \(\alpha=0.05\) la hipótesis nula de que la población total se ajusta a la ley de Benford.
b) Repite el ejercicio pero considerando sólo los municipios de más de 1000 habitantes.
c) Considera las poblaciones totales (de los municipios con 10 o más habitantes) y contrasta a nivel \(\alpha=0.05\) la hipótesis nula de que el primer dígito es independiente del segundo.
(Indicación: Puedes utilizar, si te sirven de ayuda, las funciones del fichero benford.R
).
Solución:
a) Sea \(D\) el primer dígito de la población total en un municipio español. Planteamos el contraste de bondad de ajuste:
\(H_{0}:\) \(D\) satisface la ley de Benford
source("benford.R")
load("poblacion.RData")
# Población total en los municipios españoles:
PobT = poblaciones$pobtotal
# Frecuencias observadas de primeros dígitos:
OT = benford(PobT)
OT
## [1] 2554 1441 1023 741 637 531 462 379 344
Podemos hacer los cálculos “a mano”:
# Tamaño muestral:
nT = sum(OT)
nT
## [1] 8112
# Frecuencias esperadas bajo la ley de Benford ($H_{0}$):
eT = nT*PBenford
eT
## [1] 2441.9553 1428.4523 1013.5030 786.1340 642.3183 543.0724 470.4307
## [8] 414.9493 371.1848
# Estadístico del contraste ji-cuadrado:
TestEst = sum((OT-eT)^2/eT)
TestEst
## [1] 13.50036
Como \(\chi^2_{8;0.05}=15.51\), no rechazamos \(H_{0}\) a nivel \(\alpha=0.05\).
También podemos hacer el contraste de bondad de ajuste con R
:
chisq.test(OT,p=PBenford)
##
## Chi-squared test for given probabilities
##
## data: OT
## X-squared = 13.5, df = 8, p-value = 0.09575
barplot(OT/nT,names.arg=d,main="Poblaciones totales",space=0)
lines(d-1/2,PBenford,type="b")
b)
PobT1000 = PobT[PobT>1000]
OT1000 = benford(PobT1000)
chisq.test(OT1000,p=PBenford)
##
## Chi-squared test for given probabilities
##
## data: OT1000
## X-squared = 298.91, df = 8, p-value < 2.2e-16
c)
# Poblaciones de más de 10 habitantes:
Masde10 = PobT>=10
PobT10 = PobT[Masde10]
# Frecuencias observadas de primer y segundo dígito
OT10 = benford3(PobT10) # Tabla de contingencia
OT10
## 0 1 2 3 4 5 6 7 8 9
## 1 377 355 283 254 266 207 216 206 201 189
## 2 172 211 159 157 136 144 107 144 116 95
## 3 126 138 113 75 113 95 96 85 96 86
## 4 88 82 81 84 66 61 67 75 73 64
## 5 78 69 71 70 67 51 61 52 61 57
## 6 65 53 61 53 73 45 54 43 43 40
## 7 59 48 45 49 44 49 56 42 38 32
## 8 42 48 39 40 30 38 40 39 31 31
## 9 29 39 35 26 28 24 30 48 45 39
chisq.test(OT10)
##
## Pearson's Chi-squared test
##
## data: OT10
## X-squared = 120.52, df = 72, p-value = 0.0002974