問題タブ [sas-iml]
For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.
sas - SAS Proc IML ローリング ウィンドウ (ループ)
1 から m までの p のサンプル全体を使用する代わりに、モジュールが時点 x 付近の前の 18 と次の 18 の値のみを使用する目的で、以下に示すこの作業モジュールをこの上のモジュールに変更したいと考えました。したがって、p(x-18...x+18) です。しかし、私はエラーになってしまい、どこに問題があるのか本当に理解できません。投稿の最後にコマンド ライン全体を含むエラー メッセージ。
エラーメッセージ:
optimization - SAS IML constraining a called function
How do I properly constrain this minimizing function? Mincvf(cvf1) should minimize cvf1 with respect to h and I want to set so that h>=0.4
However I get lots of:
Which happens because losing of precision when h approaches 0 and "le" in "mhatx2" approaches 0. At value h=0.4, le is ~0.08 so I just artificially picked that as a lower bound which is still precise enough.
Also this output of "outer" subroutine, ttt which is vector of h fitted for the rolling windows, still provides values below the constraint 0.4. Why?
sas - SAS/IML で生成されたベクトルをマクロ変数として使用する
PARMS ステートメントを使用して、レベル 1 の残差分散をほぼゼロの値に固定して PROC MIXED を実行するマクロを作成しています。SAS/IML を使用して、次のような PARMS ステートメントの開始値を大量に生成しようとしています。
このコードは、PROC MIXED コードに PARMS ステートメントがなくても正常に機能します。ただし、コードをそのまま実行すると、SAS は、IML によって生成された値をリストするのではなく、PARMS の後にリテラル文字列 'start_vector[label=""]' を配置するようです。
このエラーを回避し、SAS に START_VECTOR に含まれる値を PARMS ステートメントの開始値として指定させるにはどうすればよいですか?
sas - 二次データセットの値と一致条件に基づいて、一次データセットに欠損値を入力する
私のSASの理解は非常に初歩的です。私はこのようなことをしようとしていますが、助けが必要です。
Col1 が CITY を格納し、Col2 が MILES を格納する 20,000 の観測値を持つプライマリ データセット A があります。Col2 には多くの欠損データが含まれています。以下に示すとおりです。
別のセカンダリ データセット B があり、これには約 5000 の観測があり、Col1 に CITY が格納され、Col2 に MILES が格納されているデータセット A と非常によく似ています。ただし、このデータセット B では、Col2 に欠損データは含まれていません。
私の目標は、col1 の都市名を照合することにより、データセット B のマイルに基づいてデータセット A の不足しているマイルを埋めることです。
この例では、データセット B からデータセット A に 321.45 を入力しようとしています。同様に、2 つのデータセット間で Col1 (都市名) を照合して 176.34 を入力しようとしています。
SASでこれを行うには助けが必要です
sas - ワイブル分布による SAS Randgen 呼び出し
proc IML 内で call randgen を使用して、特定のパラメーターを持つワイブル分布に従う 10 個の乱数を作成しようとしています。これが私が使用しているコードです(明らかに複数のループがありますが、現在テスト中です):
この例では、Ntimes = 10、alpha[i] = 4.5985111、および beta[i] = 131.79508 です。私の問題は、10回の反復/乱数のそれぞれが1として返されることです.Rで同じパラメーターを使用してrweibull関数を使用し、意味のある結果を得たので、SASまたは私のコードと関係があると考えています.パラメータの問題。Randgen 呼び出しを正しく使用していますか? 結果がこのように出てくる理由を誰か知っていますか?
sas - SAS/IML: RANDNORMAL で個々の分散コンポーネントを使用する方法
これはプログラミングに関する質問ですが、最初に統計の背景を少し説明します。この質問は、混合効果ロケーション スケール モデル (つまり、不均一な分散) のデータ シミュレーションの一部に言及しています。IML の RANDNORMAL 関数を使用して、2 つの MVN 分散コンポーネントをシミュレートしようとしています。両方の分散コンポーネントが異種であるため、RANDNORMAL で使用される分散は人によって異なります。したがって、IML で特定の行 (行 1 = 個人 1 など) を選択し、次の行に移動する前に RANDNORMAL 関数を使用する必要があります。
以下のコード例は 2 人用です。DO を使用して、各人の特定の分散コンポーネント (VC1 と VC2) をループします。エラーが表示されます:「モジュール RANDNORMAL は、前の呼び出しから終了する前に再度呼び出されました。」DO ループである種の BREAK または EXIT 関数が必要であると想定していますが、試したことはありません。
どんな助けでも大歓迎です。ああ、私は SAS 9.4 を使用しています。
sas - マトリックス proc iml SAS に入力します。
2 つの列 (c1、c2) を持つ ax 行列があります。最初の列 (c1) を修正し、それぞれ値 C2+m、C2+m...C2+m を持つ 10 個の列を X 行列に追加します。m はランダムな整数です。最後に、マトリックスは次のようになります。
C1、C2+m、C2+m、C2+m...C2+m;
コード:
誰かがそれを修正するのを手伝ってくれますか..ありがとう
sas - proc IML でのコードの再利用: 名前を文字列として指定することにより、ベクトルの内容にアクセス
ユーザー定義モジュール内から SAS システムの proc IML 内で、ベクトルの名前を引数として取得することにより、ベクトル内のデータにアクセスできるようにしたいと考えています。
たとえば、以下のコードでは、「test」というモジュールが 2 つの文字列「x_vec1」と「x_vec2」を作成しますが、これら 2 つのベクトルの内容は出力せず、むしろそれらの名前を出力します (submit ブロックは同じ結果を生成すると思います)。
この概念は、マクロ内で IML を呼び出すことにより、マクロを使用して非常に簡単に実現できますが、コードを「クリーン」に保つために、純粋に IML で実行したいと考えています。IML は統計作業に優れていますが、これ以上のものが必要です。実行時に関数内で解決できるマクロ変数と同様の概念を使用して、コードを短くする必要があります。
sas - SASでIMLを使用して2つの行列間で乗算を行う方法
EXCEL からのインポートの下に、input_data という名前のデータ セットがあります。
そして、以下に p という別のデータセットがあります
私がやりたいのは、SAS を使用した IML での行列操作です。
すでにいくつかのコードがありますが、最終的な計算でエラーが発生しました。誰か手を貸してくれませんか?