<meta http-equiv="Content-Type" content="text/html; charset=UTF-8" />こんにちは、
3つの管理図(IR、EWMA、CUSUM)をプロットしようとしていますが、奇妙な理由でチャートウィンドウに空白が表示されています。JMPインターフェースを使用してみたとき、それはチャートを完璧にプロットしています。
興味深い事実の1つは、最初に実行して限度を生成する場合は、後述の3番目のステップを実行するときに同じグラフが入力されるが、現在適用されている限度が同じ表から計算される場合でも実際に限度が必要なときは同じグラフが表示されます。
これが私のコードフローのしくみです。
- >入力ファイルを入手する
- >それらを結合してメインテーブルを作成する
- >限界を計算し、すべてのプロセスパラメータについて別のテーブルに保存します。 (初回実行時の制限は、前の手順で作成したメインテーブルから計算されます)
- >プロット関数でパラメータをループしてそれらの制限を得て表示関数を呼び出す
- >適切な制限値を適用しながら、メインテーブルの値を使用してチャートをプロットします。
これが最後の2ステップのコードです。
表示 = 関数 ({ プロセス 、ラベル 、によって 、 Src_Type 、 lmt1 、 lmt2 、 lmt3 } 、
R1 = 新しい窓 ( 「傾向分析レポート」 || ロングデート ( 今日 ()) 、
Hリストボックス (
パネルボックス ( 「個人&移動範囲」 、現在のデータ表 ( dt ) ; // dtはステップ2のメインテーブルです。
cc = 管理図 (
サンプルラベル ( 名前として ( ラベル )) 、
グループサイズ ( 1 ) 、 Kシグマ ( 3 ) 、
列として ( プロセス ) 、個別測定 ( LCL ( lmt1 [ 6 ]) 、 AVG ( lmt1 [ 5 ]) 、 UCL ( lmt1 [ 7 ]))
) 、
どこで ( 列として ( によって ) == Src_Type )
) ;
) 、 //スペースを短くするために他のチャートタイプを除外しました。
) ;
) ;
) ;
プロット = 関数 ({ lmts 、 pmt_path } 、
param_dt = 開いた ( pmt_path 、 「見えない」 ) ;
param_summ = param_dt << 概要 ( 見えない 、
グループ ( : グループ化 、: プロセス 、: サンプルラベル 、: によって )) << ウィンドウを表示 ( 0 ) ;
にとって ( q = 12年 、 q <= 今 ( param_summ ) 、 q ++、現在のデータ表 ( param_summ ) ;
col2 =: プロセス [ q ] ; col3 =: サンプルラベル [ q ] ; col4 =: によって [ q ] ;
現在のデータ表 ( lmts ) ;
clms = lmts << 列名を取得する ( ひも ) ;
から削除 ( clms 、 1 、 3 ) ;
にとって ( トン = 1 、トン <= N個のアイテム ( clms ) 、トン ++、現在のデータ表 ( lmts ) ;
indv_lmts = 列として ( clms [ トン ])[ lmts << 行を取得する ( : パラメータ == col2 & : グラフの種類 == "個々" )] ;
cusum_lmts = 列として ( clms [ トン ])[ lmts << 行を取得する ( : パラメータ == col2 & : グラフの種類 == 「CUSUM」 )] ;
ewma_lmts = 列として ( clms [ トン ])[ lmts << 行を取得する ( : パラメータ == col2 & : グラフの種類 == 「EWMA」 )] ;
//現在のデータテーブル(dt);
// dt1 = dt <<行を取得します(column(dt、col4)== clmsとして);
// if(nrows(dt1)> 0、dt <<ここで(column(dt、col4)!= clmsを選択))<<除外<<除外選択をクリア;);
表示 ( col2 、 col3 、 col4 、 clms [ トン ] 、 indv_lmts 、 cusum_lmts 、 ewma_lmts ) ;
// dt <<行の状態を消去します。
) ;
) ;
) ;
私がトリックを見逃しているところでのどんな助けでも非常に役に立ちます。私は無駄にたくさんのことを試みます。 #混乱が生じた場合はコメントしてください。
ありがとうございます。
**更新:使用されている制限値:
LCL = 93.6194355860458; AVG = 101.61918084006; UCL = 109.618926094074。
LCL = 91.1389663749264; AVG = 101.933916247341; UCL = 112.728866119756。
LCL = 95.791125521153; AVG = 99.6808876541094; UCL = 103.570649787066。
LCL = 96.1221889831269; AVG = 99.2913942704352; UCL = 102.46059955744; L。
LCL =。; AVG = 101.63975868081; UCL =。;
LCL = 96.4170696517472; AVG = 99.4247943691138; UCL = 102.43251908648。
LCL = 85.6694623331952; AVG = 102.356837670718; UCL = 119.044213008241。
LCL = 85.2093412100746; AVG = 105.163584386677; UCL = 125.117827563278; //このログでは「管理限界外の管理限界:LCL <= Avg <= UCLである必要があります」
私のSample Label列がDate列であるチャートに含まれていません。 私が気付いていないこれに問題を引き起こしている何かはありますか?
個々のウィンドウの結果を取得しようとするといくつかの問題があるように思えますが、1つの最終ウィンドウの結果にすべてのループを追加しようとすると表示されます。だれかがこれを手伝うことができるか、私はいくらか間違ったやり方をします。
更新されたコード
V = VListボックス ( "すべて" ) ;
表示 = 関数 ({ プロセス 、ラベル 、によって 、 Src_Type 、 lmt1 、 lmt2 、 lmt3 } 、
R1 = 新しい窓 ( 「傾向分析レポート」 || ロングデート ( 今日 ()) 、
Hリストボックス (
パネルボックス ( 「個人&移動範囲」 、現在のデータ表 ( dt ) ; // dtはステップ2のメインテーブルです。
cc = 管理図 (
サンプルラベル ( 名前として ( ラベル )) 、
グループサイズ ( 1 ) 、 Kシグマ ( 3 ) 、
列として ( プロセス ) 、個別測定 ( LCL ( lmt1 [ 6 ]) 、 AVG ( lmt1 [ 5 ]) 、 UCL ( lmt1 [ 7 ]))
) 、
どこで ( 列として ( によって ) == Src_Type )
) ;
) 、 //スペースを短くするために他のチャートタイプを除外しました。
) ;
) ; V << 追加 ( R1 ) ; R1 << ウィンドウを閉じる ;
) ;
プロット = 関数 ({ lmts 、 pmt_path } 、
param_dt = 開いた ( pmt_path 、 「見えない」 ) ;
param_summ = param_dt << 概要 ( 見えない 、
グループ ( : グループ化 、: プロセス 、: サンプルラベル 、: によって )) << ウィンドウを表示 ( 0 ) ;
にとって ( q = 12年 、 q <= 今 ( param_summ ) 、 q ++、現在のデータ表 ( param_summ ) ;
col2 =: プロセス [ q ] ; col3 =: サンプルラベル [ q ] ; col4 =: によって [ q ] ;
現在のデータ表 ( lmts ) ;
clms = lmts << 列名を取得する ( ひも ) ;
から削除 ( clms 、 1 、 3 ) ;
にとって ( トン = 1 、トン <= N個のアイテム ( clms ) 、トン ++、現在のデータ表 ( lmts ) ;
indv_lmts = 列として ( clms [ トン ])[ lmts << 行を取得する ( : パラメータ == col2 & : グラフの種類 == "個々" )] ;
cusum_lmts = 列として ( clms [ トン ])[ lmts << 行を取得する ( : パラメータ == col2 & : グラフの種類 == 「CUSUM」 )] ;
ewma_lmts = 列として ( clms [ トン ])[ lmts << 行を取得する ( : パラメータ == col2 & : グラフの種類 == 「EWMA」 )] ;
//現在のデータテーブル(dt);
// dt1 = dt <<行を取得します(column(dt、col4)== clmsとして);
// if(nrows(dt1)> 0、dt <<ここで(column(dt、col4)!= clmsを選択))<<除外<<除外選択をクリア;);
表示 ( col2 、 col3 、 col4 、 clms [ トン ] 、 indv_lmts 、 cusum_lmts 、 ewma_lmts ) ;
// dt <<行の状態を消去します。
) ;
) ;
) ;
v = 新しい窓 ( "テスト" 、 V ) ;

私が持っている新しい問題は、毎回異なるパネルボックスを作成するのではなく、すべてを1つにまとめて表示から「Where(....)」ということを取り除くことです。