5行2列のテーブルがあるとしましょう。 最初の列は分布タイプ(たとえば、正規、対数正規、ワイブルなど)用であり、2番目の列はそれぞれのパラメーター用です。 5行ごとに新しいデータテーブルを作成するforループを作成したいと思います。この新しいデータテーブルには、行のパラメーターに基づいたランダムサンプリング関数を使用して新しい列が追加されます。
例:行1->通常、(0.1,0.02);次の式を持つ列を持つ新しいデータテーブルを作成します
randomnormal(0.1,0.02)
私の現在の課題は、さまざまな分布タイプがさまざまな数のパラメーターを必要とすることです。 私がこれにどのように取り組むべきかについてのいくつかの洞察に感謝します。
こんにちは、
いくつかの考え:
1)可能であれば、数式のスクリプトを簡単にするために、パラメーターを列に分割します
2)MATCH式を使用して分布の名前を探し、対応する分布のランダム関数を具体的に呼び出します。
Match( :Distribution,
"Normal", Random Normal( :Parameter 1, :Parameter 2 ),
"LogNormal", Random Lognormal( :Parameter 1, :Parameter 2 ),
.
)
これはあなたが要求したことをする方法の簡単な例です
Names Default To Here( 1 );
dt = New Table( "Sample",
Add Rows( 5 ),
New Column( "Types",
Character,
Set Values(
{"Normal", "Lognormal", "Weibull", "Uniform", "Johnson Su"}
),
Set Display Width( 79 )
),
New Column( "Parameters",
Character,
Set Values(
{"(0.1,0.02)", "(0.2,.005)", "(0.3,0.005)", "(0.1,0.5)",
"(0.5, 1, 1, 1)"}
),
Set Display Width( 101 )
)
);
For( i = 1, i <= N Rows( dt ), i++,
Eval(
Substitute(
Expr(
New Table( dt:Types[i],
add rows( 20 ),
New Column( "Random " || dt:Types[i],
set each value( __formula__ )
)
)
),
Expr( __formula__ ),
Parse( "Random " || dt:Types[i] || dt:Parameters[i] )
)
)
);
スクリプトがどのように機能するかを完全に理解するために時間をかけてください。理解できない場合は、コミュニティが必要な追加情報を提供できるように返信してください。
ティエリーに感謝します。パラメータの列数を制限したい場合の提案はありますか?
私が抱えているもう1つの懸念は、Match()式では大文字と小文字が区別されると思います。 列にリストチェックを配置することで、これを制御することができます。 それを制御/管理する他の方法はありますか?