均值和标准差 jmp 14 的蒙特卡洛重树模拟我在调试重采样部分时遇到问题。 帮助将不胜感激。
dt=当前数据表();
n=N行(dt);
nSim=1000;
dtMC=新表(“MC”,新列(“模拟”,数字,“连续”),新列(“平均值”,数字,“连续”),新列(“标准差”,数字,“连续” );
对于(i=1, i<=nSim, i++,
dtResample=dt< dtMC<<添加行(1);
dtMC:Sim[i]=i;
dtMC:Mean[i]=Mean(dtResample:X)
dtMC:Std Dev[i]= Std Dev(dtResample:X);
);
dtMC<<图形生成器(
尺寸(400, 300),
变量 (X(:Sim), Y(:Mean)),
元素(点(X,Y))
);
高级统计建模回复:均值和标准差 jmp 14 的蒙特卡洛重树模拟我很难诊断出您脚本中的错误。 也许另一位成员可以帮助解决这个问题。 我将以此为契机向您展示另一种方法。 如果您使用数据表命令以交互方式重新采样,那么您的方式非常有意义。 您可以改为在脚本中使用矩阵运算。
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>
回复:均值和标准差 jmp 14 的蒙特卡洛重树模拟这绝对有帮助。一个问题。 “随机”如何整数”函数有效吗? 是否有不同的重采样技术? 也许更多地控制重采样的完成方式?再次感谢 :)
回复:均值和标准差 jmp 14 的蒙特卡洛重树模拟Random Integer() 函数以等概率(均匀分布函数)返回值范围内的整数。

它是 J() 函数调用中的第三个参数。 它在矩阵的制作过程中逐行求值,矩阵又作为原始数据矩阵的下标提供。 这种用法相当于放回抽样,这就是你想要的重抽样样本统计。
回复:均值和标准差 jmp 14 的蒙特卡洛重树模拟似乎它将在每次模拟中替换一行。 是否可以在多行中生成随机整数值?
回复:均值和标准差 jmp 14 的蒙特卡洛重树模拟我不明白你的假设(“似乎它将在每次模拟中替换一行。 ") 或您的问题 ("是否可以在多行中生成随机整数值? ”)。 该脚本对于重采样统计信息是正确的。 我正在使用您可能不熟悉的矢量化解决方案。 脚本的修改版本包括使用“分布”平台重新采样的均值估计值和原始估计值的分布。
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>
你在尝试别的东西吗? 请更详细地解释您上次的回复。
回复:均值和标准差 jmp 14 的蒙特卡洛重树模拟为混乱道歉。 在第一个脚本中,如何将每次迭代中的 X 提取到一个表中,以便在 1000 次迭代中模拟所有值? 再次感谢你的帮助
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>
回复:均值和标准差 jmp 14 的蒙特卡洛重树模拟此脚本生成两个数据表:一个表包含重新采样的数据,另一个表包含重新采样的统计信息。
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 );回复:均值和标准差 jmp 14 的蒙特卡洛重树模拟谢谢。 一个问题。 如果我有一个数据集 [1 2 3 5 8 9 7] 并且我想按照上面的逻辑进行 2 次迭代,它会创建
2 组通过替换每个位置从数据集中随机选择数字?例如:
[3 2 1 5 8 7 7]
[9 1 3 5 2 8 6]
如果这真的是随机的,那是不是意味着每次运行我们都会得到不同的数据集?