0

所以我在 minitab 的 C1 中有这组样本,我从这些数据中重新采样 200 次并将其存储在 C2-C201 中。现在我想计算这些列中的每一列的样本方差,然后将结果保存在单独的列中。我可以用它来计算每一列的样本方差,但我无法保存结果。这是我当前的宏:

GMACRO          #Starts the global macro
Resample        #Names the macro
DO K1=2:201
Sample 16 'Data' CK1;
Replace.        #Resampling
Name c202 "Variance"
Statistics CK1;     # Calculate S^2 
  Variance 'Variance'.
ENDDO
ENDMACRO        #Ends the macro

这可以完成工作,但它只是一遍又一遍地覆盖同一个单元格。最好的办法是每次迭代都像 c202(K1) 一样保存它,但我不知道如何实现它。

4

1 回答 1

0

嗯。有很多方法可以改变那个宏。

您所说的问题的原因是 Statistics 的 Variance 子命令将结果存储在整列中,覆盖了内容。如果您真的想将 200 个单独的子样本存储在单独的列中,那么应该这样做:

GMACRO          #Starts the global macro
Resample        #Names the macro
Name c202 "Variance" # no need to name this column 200 times!
DO K1=2:201
  Sample 16 'Data' CK1;
    Replace.        #Resampling
  Statistics CK1;     # Calculate S^2 
    Variance C203.  # into row 1 of temporary column C203
  Stack 'Variance' C203 'Variance' # append to end of Variance
ENDDO
erase K1 c203  # clean up
ENDMACRO        #Ends the macro

如果您想存储子样本但很乐意将它们存储在两列中,那么这更简洁:

GMACRO          #Starts the global macro
Resample        #Names the macro
Name C2 'Sample number' c3 'Sample data'
set 'Sample number' # populate Sample number
(1:200)16
end
DO K1=1:200 
  Sample 16 'Data' c4;
    Replace.        #Resampling
  Stack C4 'Sample data' 'Sample data' # append to Sample data
ENDDO
Name c4 "Variance"
Statistics 'Sample data';
  By 'Sample number';
  Variance 'Variance'.
ENDMACRO        #Ends the macro

当然,带替换的 200 x 16 样本与带替换的 3200 个样本相同,因此更整洁 - 更快 - 将是:

GMACRO          #Starts the global macro
Resample        #Names the macro
Name C2 'Sample number' c3 'Sample data'
set 'Sample number' # populate Sample number
(1:200)16
end
Sample 3200 'Data' 'Sample data';
replace.
Name c4 "Variance"
Statistics 'Sample data';
  By 'Sample number';
  Variance 'Variance'.
ENDMACRO        #Ends the macro
于 2016-01-20T14:13:05.430 回答