在相关和相关矩阵上创建我自己的颜色图重发,一定是我不小心删了原帖:
我正在编写一个教学和演示脚本,它将:
- 创建指定大小的随机协方差矩阵,并计算对应的相关矩阵(C)
- 基于协方差矩阵创建具有指定行数和均值向量的随机多元正态数据
- 将模拟数据输出到数据表并对该数据运行多变量平台分析
我还想在脚本的输出中包括在报告窗口中的是我创建的起始相关矩阵 (C) 的显示,以及相应的颜色图,类似于多变量平台中显示的内容估计的相关矩阵。 我不知道如何为相关 (C) 矩阵创建轴框,也不知道如何在 C 矩阵的相关性上创建颜色图。
这是我的脚本:
Names Default To Here( 1 );
//simulate multivariate normal data with random correlation
//number of rows of data
n = 10;
// number of variables
k = 20;
//create list of variable names
varlist = {};
For( ii = 1, ii <= k, ii++,
Insert Into( varlist, "X" || Char( ii ) )
);
//create mean vector
meanvec = J( k, 1, 0 );
//create random M matrix
M = Diag( J( k, 1, 10 + Random Normal() ) );
//make empty E matrix
E = [];
//fill the E matrix
For( ii = 1, ii <= k, ii++,
// create random eigenvector
vec = J( k, 1, Random Uniform() - (0.5) );
// normalize it
vec = vec / Sqrt( vec` * vec );
//append to E matrix
E = E || vec;
);
// create covariance matrix from eigenvector (E) matrix and eigenvalue (M) matrix
covariance = E * M * E`;
// create correlation matrix by scaling covariance by the diagonal elements
correlation = J( k, k, . );
For( ii = 1, ii <= k, ii++,
For( jj = 1, jj <= k, jj++,
correlation[ii, jj] = covariance[ii, jj] / (Sqrt( covariance[ii, ii] * covariance[jj, jj] ))
)
);
// simulate multivariate normal data
data = J( n, k, Random Normal() );
data = data * Sqrt( Diag( M ) ) * E`;
// make into data table
_dt_out = As Table( data, <<COLUMN names=""></COLUMN>这是一个示例输出:

回复:在相关性和相关矩阵上创建我自己的颜色图您可以在 Graph Builder 中使用 Shape Map 做同样的事情。 您可以创建一个 50x50 或更大的形状图,然后将其与不超过该尺寸的任何相关矩阵一起使用。 该地图将只显示其具有数据的元素,因此您只会看到实际的 XxX 矩阵
回复:在相关性和相关矩阵上创建我自己的颜色图马克,谢谢你的建议。 我知道如果我将矩阵制作成堆叠表并使用图形生成器或单元格图,我就可以做到。 我只是希望我可以使用 Cell Plot Box() 显示对象,但我认为该显示元素仅可用于内部 JMP 函数,而不是通过 JSL。 至少可以通过 JSL 使用 Matrix Box() 显示元素。
我确实想出了一个变通办法,只使用一个图形框,至少可以得到颜色图(没有轴标签)。 见下文。
// start matrix color map script
names default to here(1);
corr_mat = [1 0 -1,
0 1 .5,
-1 .5 1];
_nw = New Window("Color Map",
_gb=graph box(
SuppressAxes,
xscale(0,1),
yscale(0,1),
frame size(300,300),
nr=nrows(corr_mat);
nc=ncols(corr_mat);
xinc=1/nc; yinc=1/nr;
for(ii=1, ii<=nr, ii++,
for(jj=1, jj<=nc, jj++,
fill color(heat color((corr_mat[ii,jj]+1)/2, <<"Blue to Gray to Red"));
Rect((jj-1)*xinc,
1-(ii-1)*yinc,
jj*xinc,
1-(ii*yinc),
1
)
)
);
)
);这给出了 3x3 矩阵的结果

回复:在相关性和相关矩阵上创建我自己的颜色图我现在明白你在矩阵中有相关性,而不是在平台中。 以下方法可能有效。 如果是这样,那么它可以添加到您的脚本中。
我用了健康JMP 样本数据文件夹中的数据表。 我选择了分析>多元方法>多变量. 我进入了氧气通过最大脉冲在里面是角色。 这是结果:


你想用你的相关矩阵制作这张地图。
- 右键单击此表并选择制作成数据表. (请注意,您首先要将矩阵保存为数据表,添加相应的行列,并适当地命名数据列。)
- 选择表>堆.
- 选择年龄通过最大脉冲然后点击堆.
- 进入相关性为数据列名称。
- 进入柱子用于标签列名称。
- 点击好的.
- 选择图形>图形生成器.
- 拖排到X .
- 拖柱子到是.
- 拖相关性到颜色.
- 点击热图元素在顶部。
这是结果:

所以我认为您可以使用一些高级 JMP 对象来获取您想要的热图。
鉴于其在多变量平台中的结构,我认为不可能从头开始编写热图脚本,但其他人可能知道一种方法。 这是上面显示的相关图的显示树的一部分:

回复:在相关性和相关矩阵上创建我自己的颜色图为什么不在多变量报告中使用相关性的颜色图?
我们通常建议尽可能使用内置对象(整个平台或报表中的特定显示框),而不是从头开始创建此类对象。
在您的自定义窗口中包含此类对象很容易。 只需包括数据表参考 << Multivariate( ... )如果您希望对象“实时”,即以通常的交互性响应或单独创建平台,则克隆所需的对象,关闭平台,如果不需要交互性,则包括或附加克隆的对象。 (请注意,如果您希望出于您的目的简化报告,您可以从平台中删除不需要的对象。)