2017-06-06 3 views
2

J'ai des données d'échantillon pour lesquelles je voudrais calculer un intervalle de confiance, en supposant qu'une distribution n'est pas normale et est inconnue. Fondamentalement, il semble que la distribution est Pareto Distribution histogram mais je ne sais pas avec certitude.Calculer un intervalle de confiance à partir de données échantillon en supposant une distribution inconnue

Les réponses pour la distribution normale:

Compute a confidence interval from sample data

Correct way to obtain confidence interval with scipy

+0

il me semble que la distribution exponentielle –

Répondre

2

Si vous ne connaissez pas la distribution sous-jacente, alors ma première pensée serait d'utiliser bootstrapping: https://en.wikipedia.org/wiki/Bootstrapping_(statistics)

En pseudo-code, en supposant que x est un tableau numpy contenant vos données:

import numpy as np 
N = 10000 
mean_estimates = [] 
for _ in range(N): 
    re_sample_idx = np.randint(0, len(x), x.shape) 
    mean_estimates.append(mean(x[re_sample_idx])) 

mean_estimates est maintenant une liste de 10000 estimations de la moyenne de la distribution. Prenez le 2,5e et 97,5e percentile de ces 10000 valeurs, et vous avez un intervalle de confiance autour de la moyenne de vos données:

sorted_estimates = np.sort(np.array(mean_estimates)) 
conf_interval = [sorted_estimates[int(0.025 * N)], sorted_estimates[int(0.975 * N)]] 
+0

J'ai testé avec des données réelles .. n'aiment pas. J'ai obtenu Conf Int: [22.78, 69.93]. (np.array (x) <22,79) .sum()/len (x) - 0,91. 91% des données sont inférieures à la limite inférieure des conf. La moyenne arithmétique est de 40,78 - c'est un jeu de données réaliste. –

+1

Basé sur les liens dans votre message, j'ai présumé que vous vouliez un intervalle de confiance autour de votre estimation de la moyenne de vos données. Si vous voulez simplement des valeurs pour lesquelles 95% de vos données sont entre les deux valeurs, par ex. en calculant le 2.5e et le 97.5e centile de vos * données *, vous pouvez simplement utiliser les deux dernières lignes de ma réponse, mais utiliser 'x' au lieu de' np.array (mean_estimates) '. – acdr

0

De la discussion sur l'autre réponse, je suppose que vous voulez un intervalle de confiance pour la population signifie, oui? (Pour une distribution avec des moments finis, la distribution d'échantillonnage de la moyenne tend asymptotiquement vers une distribution normale avec une moyenne égale à la moyenne et à la variance de la population. égal à la variance de la population divisée par n. Donc, si vous avez beaucoup de données, $ \ mu \ pm \ Phi^{- 1} (p) \ sigma/\ sqrt {n} $ devrait être une bonne approximation de l'intervalle de confiance p de la moyenne de la population, même si la distribution n'est pas normale.

+0

Merci. La formule n'est pas affichée correctement. Un problème avec LaTex. Après quelques lectures et analyses, j'ai trouvé que je m'intéresse plus à la médiane qu'à la distribution parce que la distribution est faussée. J'ai donc besoin d'un intervalle de confiance pour une médiane. La distribution d'échantillonnage de la médiane tend-elle asymptotiquement à une distribution normale? J'ai utilisé le code @acdr pour estimer l'intervalle de confiance médian. Il est toujours beaucoup plus petit que les "valeurs pour lesquelles 95% de vos données sont entre les deux valeurs" calculées comme dans le commentaire acdr. –