在相關性和相關矩陣上創建我自己的顏色圖重發一下,原來的貼文肯定是我不小心刪掉了:
我正在編寫一個教學和演示腳本,它將:
- 建立指定大小的隨機協方差矩陣,並計算對應的相關矩陣(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>這是一個範例輸出:

回覆:在相關性和相關矩陣上創建我自己的顏色圖您可以使用形狀圖在圖形產生器中執行相同的操作。 您可以建立 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 Sample Data 資料夾中的資料表。 我選擇了分析>多元方法>多變數。 我進入了氧氣透過最大脈衝在裡面是角色。 結果如下:


您想用相關矩陣製作這張地圖。
- 右鍵單擊該表並選擇製作成數據表。 (請注意,您首先要將矩陣儲存為資料表,新增對應的行列,並適當地命名資料列。)
- 選擇表格>堆疊。
- 選擇年齡透過最大脈衝然後單擊堆疊。
- 進入相關性為資料列名稱。
- 進入柱子作為標籤列名稱。
- 點選好的。
- 選擇圖形>圖形產生器。
- 拖排到X 。
- 拖柱子到是。
- 拖相關性到顏色。
- 點選熱圖元素在頂部。
結果如下:

所以我認為您可以使用一些高級 JMP 物件來獲得您想要的熱圖。
鑑於多元平台中的結構,我認為不可能從頭開始編寫熱圖腳本,但其他人可能知道一種方法。 以下是上面顯示的相關性圖的顯示樹部分:

回覆:在相關性和相關矩陣上創建我自己的顏色圖為什麼不在多元報告中使用相關性的顏色圖?
我們通常建議盡可能使用內建物件(整個平台或報表中的特定顯示框),而不是從頭開始建立此類物件。
將此類物件包含在自訂視窗中很容易。 只需包括資料表參考 << Multivariate( ... )如果您希望物件處於「活動」狀態,即以通常的互動性進行回應或單獨建立平台,請複製所需的對象,關閉平台,並在不需要互動的情況下包含或附加複製的物件。 (請注意,如果您想根據您的目的簡化報告,您可以從平台中刪除不需要的物件。)