1414_zh-TW
分配箱首先,我向社會各界人士致以問候。
這是我第一次使用這種社群工具。
在發行版中:
1)在哪裡可以看到垃圾箱的價值?
2) JMP 使用哪個公式來計算第一次視覺化的 bin?
謝謝。
西蒙娜回覆:分配箱您可能有興趣探索中描述的幾個直方圖選項
統計和圖形指南的單變量分析部分中的連續變數選項。
Shadowgram 和 Set Bin Width 允許對直方圖進行一些控制選項。
在紅色小三角下方,“直方圖選項”還具有“顯示計數”和“顯示百分比”選項。
顯示箱邊緣或切點的選項會很有趣。
我忘記了在哪裡找到以下腳本,但它產生了一個用於定義切點的漂亮的互動式工具。
// ian.cox@jmp.com: 2009 年 8 月 27 日
// 目前表
if(IsEmpty(目前資料表()), dt = Open(), dt = 當前資料表());
dtn = dt << 取得名稱;
nr = NRow(dt);
nc = NColl(dt);
// 雜項
磅寬度=130;
notImplemented = Expr(Dialog("功能尚未實作",Button("確定")));
helpScript = Expr(Dialog("透過眼睛將連續變數量化為序數變數",Button("OK")));
// ************************************************ ** **********************************
// 在視窗中建立自訂對話框
// ************************************************ ** **********************************
自訂Dlg =
NewWindow("使用 "||dtn 的切點,
邊框框(左(3),上(2),
V列錶框(
列錶框(
PanelBox("選取列",
colListData=ColListBox(全部,寬度(lbWidth),nLines(min(nc,10)))
),
PanelBox("將選取的欄位轉換為角色",
LineUpBox(NColl(2), 間距(3),
ButtonBox("切點",colListOR << Append(colListData<colListOR = ColListBox(寬度(lbWidth),nLines(1),數值)
)
),
面板框(“操作”,
陣容框(NColl(1),
按鈕框(“確定”,OKScript),
ButtonBox("取消", customDlg<文字方塊(” ”),
ButtonBox("刪除", colListOR << 刪除選取的),
ButtonBox("召回", 未實現),
ButtonBox("幫助", helpScript))
)
) // HListBox 結束
) // VListBox 結束
) // BorderBox 結束
); // 新視窗結束
// ************************************************ ** **********************************
// 當使用者點選「確定」時。 。 。
// ************************************************ ** **********************************
OKScript = 表達式(
customDlg << 關閉視窗;
// 從對話框中取得值
colOR = colListOR << GetItems;
// 使用者的選擇是否可行?
if (NItems(colOR) != 1, Dialog("錯誤:您必須選擇切點列", Button("確定")); Throw());
// 列名
顏色ORn = 顏色[1];
// 列引用
colOR = 列(dt, colORn);
// 取得分佈
// 注意:我們使用「SubstituteInto」設計模式,因為我們需要更新 Dispatch 訊息
d = 表達式(
dist = dt << 分佈(
連續分佈(
列(顏色),
分位數(0),
時刻(0),
垂直(0),
離群值箱型圖(0)
),
發送至報告(
派遣(
{“colTBD”},
“分佈直方圖”,
框架盒,
幀大小(500, 300)
)
)
)
);
SubstituteInto(d, "colTBD", colORn);
d;
// 取得報告
distRep = 報告(dist);
// 新增更多說明以及定義切割點時的「確定」按鈕
pb = PanelBox("定義切點");
tb1 = TextBox("在圖形中按一下以定義新的切割點。 ”);
tb2 = TextBox("定義完所有切點後選擇「確定」。\!N ");
bb = ButtonBox("確定", OKScript2);
pb << 追加(tb1) << 追加(tb2) << 追加(bb);
distRep[OutlineBox(2)] << 追加(pb);
// 在圖形框中滑鼠鬆開時呼叫的表達式 - 在所選 x 值處新增一條紅色垂直線
加入VLine = Expr(
vl = Expr( distRep[FrameBox(1)] << AddGraphicsScript(PenColor("紅色"); VLine(xTBD)) );
SubstituteInto(vl, Expr(xTBD), EvalExpr(x));
維
);
// 用於捕捉滑鼠鬆開時的連續 x 值
xVals = {};
// 將滑鼠陷阱腳本新增到圖形框
distRep[FrameBox(1)] << AddGraphicsScript(
捕鼠器(
{},
Print("滑鼠放開時 x 為 "||Char(Round(x,2)));
InsertInto(xVals, x);
添加V線;
);
);
// ************************************************ ** **********************************
// OKScript2:當定義了所有切點並且使用者點擊「確定」時執行
// ************************************************ ** **********************************
OKScript2 = 表達式(
distRep << 關閉視窗;
// 將切點值列表轉換為排序向量
xVals2 = J(NItems(xVals), 1, .);
對於 (i=1, i<=NItems(xVals), i++, xVals2 = x 值);
cutPoints = SortAscending(xVals2);
// 取得要剪切的數據
資料 = 顏色 << 取得值;
// 透過循環遍歷切點將切點套用至資料。 。 。
// 注意:我們透過用“.”初始化來處理“data”中的任何缺失值稍後將其視為特殊情況
編碼資料 = J(nr, 1, .);
// txt 將是描述每個 bin 的文字值列表
txt = {};
// 第一個切點
r = Loc(資料 <= cutPoints[1]);
編碼資料= 1;
InsertInto(txt, "<= "||Char(cutPoints[1]));
// 最後一個切點以外的剩餘切點
對於 (cp = 2, cp <=NRow(cutPoints), cp++,
r = Loc((資料 > cutPoints[cp-1]) & (資料 <= cutPoints[cp]));
編碼資料= cp;
InsertInto(txt, Char(cutPoints[cp-1])||" - "||Char(cutpoints[cp]))
);
//最後一個切點
r = Loc(資料 > cutPoints[NRow(cutPoints)]);
編碼資料= NRow(割點) + 1;
InsertInto(txt, "> "||Char(cutPoints[NRow(cutPoints)]));
// 使用 txt 在新清單中製作編碼資料的文字版本。
// 循環數據並記住處理任何 issing 值
txt資料 = {};
對於 (n = 1, n <= NRow(資料), n++,
if (!IsMissing(數據),
InsertInto(txtData, txt[編碼數據]),
插入(txtData,“”)
);
);
// 將剪切資料加入 dt 中
binnedCol = dt << NewColumn(colORn||" Binned", 字元, 序數, 值(txtData));
// 將值順序屬性套用到新列。
binnedCol << 設定屬性( "值排序", EvalList(txt));
// 顯示新舊列的分佈
dt << 分佈(
連續分佈(
列(顏色),
分位數(0),
時刻(0),
離群值箱型圖(0)
),
名義分佈(
列(binnedCol),
頻率(0)
)
);
); // OKScript2 結束
); // OK 腳本結束
此致,
-馬特