simulation de resapling monte carlo pour mean et std dev jmp 14J'ai du mal à déboguer la partie sur le rééchantillonnage. Une aide serait appréciée.
dt=tableau de données actuel();
n=N Ligne(dt);
nSim=1000 ;
dtMC=Nouveau tableau ("MC", Nouvelle colonne ("Sim", Numérique, "Continu"), Nouvelle colonne ("Moyenne", Numérique, "Continu"), Nouvelle colonne ("Std Dev", Numérique, "Continu" );
Pour(i=1, i<=nSim, i++,
dtResample=dt< dtMC< dtMC:Sim[i]=i;
dtMC:Moyenne[i]=Moyenne(dtRééchantillonnage:X)
dtMC:Std Dev[i]= Std Dev(dtResample:X);
);
dtMC< Taille (400, 300),
Variables (X(:Sim), Y(:Moyenne)),
Éléments(Points(X,Y))
);
Modélisation statistique avancéeRe: simulation de resapling monte carlo pour dev moyen et std jmp 14Il m'est difficile de diagnostiquer l'erreur dans votre script. Peut-être qu'un autre membre peut aider à résoudre ce problème. Je vais en profiter pour vous montrer une autre voie. Si vous rééchantillonniez de manière interactive à l'aide des commandes de la table de données, votre méthode est parfaitement logique. Vous pouvez à la place utiliser des opérations matricielles dans un script.
Names Default To Here( 1 );
// example
dt = Open( "$SAMPLE_DATA/Big Class.jmp" );
// dt=Current Data Table();
// original data as a vector
data = dt:weight << Get As Matrix;
n = N Row( data );
nSim = 1000;
// matrix of simulation results
sim = J( nSim, 3, . );
// resample statistics
For( i = 1, i <= nSim, i++,
X = data[J( n, 1, Random Integer( 1, n ) )];
sim[i, 1] = i;
sim[i, 2] = Mean( X );
sim[i, 3] = Std Dev( X );
);
// make data tabel from matrix
dtMC = As Table( sim, <<COLUMN names=""></COLUMN>
Re: simulation de resapling monte carlo pour dev moyen et std jmp 14cela a certainement aidé. une question. Comment le « hasard entier " la fonction fonctionne ? Existe-t-il différentes techniques de rééchantillonnage ? Peut-être plus de contrôle sur la façon dont le rééchantillonnage est effectué ? Merci encore 
Re: simulation de resapling monte carlo pour dev moyen et std jmp 14La fonction Random Integer() renvoie un entier sur une plage de valeurs avec une probabilité égale (fonction de distribution uniforme).

C'est le troisième argument de l'appel à la fonction J(). Il est évalué ligne par ligne lors de la création de la matrice qui est, à son tour, fournie en indice à la matrice de données d'origine. Cette utilisation équivaut à l'échantillonnage avec remplacement, ce que vous voulez pour les statistiques d'échantillon rééchantillonnées.
Re: simulation de resapling monte carlo pour dev moyen et std jmp 14On dirait que cela remplacera une ligne dans chaque simulation. Est-il possible de générer des valeurs entières aléatoires sur plusieurs lignes ?
Re: simulation de resapling monte carlo pour dev moyen et std jmp 14Je ne comprends pas votre hypothèse (" On dirait que cela remplacera une ligne dans chaque simulation. ") ou votre question (" Est-il possible de générer des valeurs entières aléatoires sur plusieurs lignes ? "). Le script est correct pour les statistiques de rééchantillonnage. J'utilise une solution vectorisée qui ne vous est peut-être pas familière. Une version modifiée du script inclut la distribution des estimations rééchantillonnées de la moyenne et de l'estimation d'origine à l'aide de la plateforme Distribution.
Names Default To Here( 1 );
// example
dt = Open( "$SAMPLE_DATA/Big Class.jmp" );
// dt=Current Data Table();
// original data as a vector
data = dt:weight << Get As Matrix;
sampleMean = Col Mean( dt:weight );
n = N Row( data );
nSim = 1000;
// matrix of simulation results
sim = J( nSim, 3, . );
// resample statistics
For( i = 1, i <= nSim, i++,
X = data[J( n, 1, Random Integer( 1, n ) )];
sim[i, 1] = i;
sim[i, 2] = Mean( X );
sim[i, 3] = Std Dev( X );
);
// make data tabel from matrix
dtMC = As Table( sim, <<COLUMN names=""></COLUMN>
Tentez-vous autre chose ? Veuillez expliquer votre dernière réponse plus en détail.
Re: simulation de resapling monte carlo pour dev moyen et std jmp 14Toutes mes excuses pour la confusion. Dans le 1er script, comment extraire X de chaque itération dans une table pour avoir toutes les valeurs simulées en 1000 itérations ? Merci encore pour votre aide
Names Default To Here( 1 );
// example
dt = Open( "$SAMPLE_DATA/Big Class.jmp" );
// dt=Current Data Table();
// original data as a vector
data = dt:weight << Get As Matrix;
n = N Row( data );
nSim = 1000;
// matrix of simulation results
sim = J( nSim, 3, . );
// resample statistics
For( i = 1, i <= nSim, i++,
X = data[J( n, 1, Random Integer( 1, n ) )];
sim[i, 1] = i;
sim[i, 2] = Mean( X );
sim[i, 3] = Std Dev( X );
);
// make data tabel from matrix
dtMC = As Table( sim, <<COLUMN names=""></COLUMN>
Re: simulation de resapling monte carlo pour dev moyen et std jmp 14Ce script produit deux tables de données : une table avec les données rééchantillonnées et une autre avec les statistiques rééchantillonnées.
Names Default To Here( 1 );
// example
dt = Open( "$SAMPLE_DATA/Big Class.jmp" );
// dt=Current Data Table();
// original data as a vector
data = dt:weight << Get As Matrix;
sampleMean = Col Mean( dt:weight );
sampleSD = Col Std Dev( dt:weight );
n = N Row( data );
nSim = 1000;
// matrix of simulation data
simData = [];
// resample data
For( i = 1, i <= nSim, i++,
X = data[J( n, 1, Random Integer( 1, n ) )];
simData ||= X;
);
// make table of resampled data
colNames = List();
For( i = 1, i <= nSim, i++, Insert Into( colNames, Eval( "Sample " || Char( i ) ) ) );
dtSimData = As Table( simData, << Column Names( colNames ) );
// matrix of simulation results
simStat = J( nSim, 3, . );
// resample statistics
For( i = 1, i <= nSim, i++,
simStat[i, 1] = i;
simStat[i, 2] = Mean( simData[0,i] );
simStat[i, 3] = Std Dev( simData[0,i] );
);
// make data table from matrix
dtMC = As Table( simStat, << Column Names( {"Simulation", "Mean", "Std Dev"} ) );
// plot resampled statistics
dtMC << Graph Builder(
Size( 534, 456 ),
Show Control Panel( 0 ),
Show Legend( 0 ),
Variables( X( :Simulation ), Y( :Mean ), Y( :Std Dev ) ),
Elements( Position( 1, 1 ), Points( X, Y, Legend( 3 ) ) ),
Elements( Position( 1, 2 ), Points( X, Y, Legend( 4 ) ) )
);
obj = dtMC << Distribution( Y( :Mean, :Std Dev ) );
rpt = obj << Report;
rpt[AxisBox(1)] << Add Ref Line( sampleMean, "Solid", "Red", "Sample Mean", 1, 0 );
rpt[AxisBox(2)] << Add Ref Line( sampleSD, "Solid", "Red", "Sample Std Dev", 1, 0 );Re: simulation de resapling monte carlo pour dev moyen et std jmp 14Merci. Une question. Si j'ai un ensemble de données [1 2 3 5 8 9 7] et que je veux suivre la logique ci-dessus et faire 2 itérations, créera-t-il
2 ensembles en sélectionnant au hasard des nombres dans l'ensemble de données en remplaçant chaque emplacement ? Par exemple:
[3 2 1 5 8 7 7]
[9 1 3 5 2 8 6]
Si cela est vraiment aléatoire, cela ne signifie-t-il pas qu'à chaque exécution, nous obtiendrons des ensembles de données différents ?