Aide Moyenne empirique

Postez ici vos questions, réponses, commentaires ou suggestions - Les sujets seront ultérieurement répartis dans les archives par les modérateurs

Modérateur : Groupe des modérateurs

thomas emsallem
Messages : 1
Enregistré le : 27 Avr 2007, 12:40

Aide Moyenne empirique

Messagepar thomas emsallem » 29 Avr 2007, 08:32

Bonjour,

J'ai ce projet à réaliser :

Loi de la moyenne empirique I (bootstrap).

On dispose de 1000 observations (urne initiale, à générer) d'une variable aléatoire suivant une loi normale de paramètres m et s. Tirer au hasard avec remise 1000 observations dans l'urne initiale.
Calculer les valeurs empiriques des paramètres m et s. Répéter cette procédure cinquante fois pour obtenir des estimateurs mi et si , i=1..50.
Comparer la précision des valeurs empiriques des estimateurs basées sur l'échantillon de départ à celle des nouveaux estimateurs moyens définis par m : moyenne des m, s : moyenne des si .
Que se passerait-il si on réalisait la même procédure 500 fois plutôt que 50 ?
On donnera dans la présentation des précisions sur la notion de bootstrap.



J'ai essayé d'y répondre en réalisant ce programme, mais je pense qu'on peut l'améliorer notamment la partie où il faut comparer la précision des estimateurs à l'aide d'un graphe.
D'autre part, si quelqu'un a des notions sur le bootstrap, pourrait-il me faire part de ses connaissances ?

Voici mon programme :

projet=function(m,s) {
M=0
S=0
#pour générer l'urne de 1000 observations d'une v.a suivant une loi normale de
#paramètres m et s
x=rnorm(1000,m,s)
for(i in 1:50) {
#pour tirer au hasard avec remise 1000 observations dans l'urne initiale :
y=sample(x,1000,replace=TRUE)
#pour calculer les valeurs empiriques de m et s
mi=mean(y)
si=sd(y)

if(M[1]!=0) M=cbind(M,mi)
if(M[1]==0) M=mean(mi)
if(S[1]!=0) S=cbind(S,si)
if(S[1]==0) S=mean(si)

}

D=data.frame(M,S)
T=matrix(D,nrow=50,ncol=2)
#pour afficher le vecteur des mi
print("Les 50 estimateurs mi et si sont :")
print(T)
#pour afficher la moyenne de tous les mi
print("La moyenne des estimateurs mi est :")
print(mean(M))
#pour afficher la moyenne de tous les si
print("La moyenne des estimateurs si est :")
print(mean(S))


par(mfrow=c(2,1))
hist(M,sub="Moyennes empiriques sur 50 échantillons et moyenne de l'échantillon observé",col="blue")
abline(v=mean(M),col="red")


hist(S,sub="Variances empiriques sur 50 échantillons et variance moyenne de l'échantillon observé",col="yellow")
abline(v=mean(S),col="red")

}


Je vous remercie par avance pour votre aide.
Cordialement.

Logez Maxime
Messages : 3138
Enregistré le : 26 Sep 2006, 11:35

Messagepar Logez Maxime » 30 Avr 2007, 09:23

Bonjour,

Qu'elle est ta question au juste ? Tu envoies un script qui à l'air de répondre a la question que tu te poses la seule chose qui semble te poser problème c'est le graphique. Personellement je ne vois pas ce qu'il y a d'embêtant dans ce graphique je crois au contraire qu'une comparaison de la valeur théorique avec la distribution observée est une bonne chose et dans le cas de simulations se justifie très bien. Après le code il est ce qu'il est tu pourrais l'améliorer ou le modifier pour avoir d'autres sortie que celle que tu as actuellment mais je ne vois pas trop ou est ta question ici. Tu pourrais penser à utiliser une liste pour stocker tes valeurs de paramètres simulés ça te permettrai de travailler dessus par la suite.

Pour le bootstrap je pense que sur le net tu vas pouvoir trouvé pas mal de choses.

Maxime

Logez Maxime
Messages : 3138
Enregistré le : 26 Sep 2006, 11:35

Messagepar Logez Maxime » 30 Avr 2007, 14:20

Re,

tu peux essayé ça :

Code : Tout sélectionner

projet <- function(m,s,N=50,le=1000){
  X <- rnorm(le,m,s)

  simu <- function(obs,les){
    y <- sample(obs,les,replace=TRUE)
    res <- c(mean(y),sd(y))
    return(res)
  }
  result <- sapply(1:N,function(w) simu(obs=X,les=le))
  rownames(result) <- c("moyenne","sd")
  colnames(result) <- paste("s.",1:N,sep="")
  return(result)
}

Avec m la moyenne, s le sd, N le nombre de simulation et le la taille de l'échantillon. Tu peux ainsi calculer por 50 simu et pour 500, en plus tu génère une matrice avec en premièer ligne les moyennes et la deuxième ligne les sd. Tu peux ainsi stocké les résultats de tes simulations qq part et faire les graphiques qui t'interresses par la suite.

Maxime


Retourner vers « Questions en cours »

Qui est en ligne

Utilisateurs parcourant ce forum : Aucun utilisateur enregistré et 1 invité