0

SAS が提供するロジスティック回帰モデリング コースで、次のコードを見つけました。

data dataset(drop=i);
set data;

array mi{*} mi_Ag mi_Inc
mi_WR;

array x{*} Ag Inc WR;
do i=1 to dim(mi);
mi{i}=(x{i}=.);
end;
run;

次の 2 つのことを理解する必要があります。

1.) このデータ ステップが実行されると、「i」というタイトルの列が作成されます。それは何を意味し、なぜそこにあるのか。ドロップ「i」は基本的にドロップしますが、ドロップオプションを使用しない場合、列はデータセットに残ります

2.) この do ステップは、すべての欠損値を 1 に置き換え、残りを 0 に置き換えます。何をする必要があるかについて do ステップで何も明確に指定されていない場合、どのように起こるのでしょうか。私の目には、「do i=1 to dim(mi); mi{i}=(x{i}=.);」x(i) でドットが見つかった場合は、mi(i) にドットを配置する必要があります。

パート2:

カテゴリ変数を折りたたむ際に、次のコードが使用されています。

proc freq data=example1 noprint;
  tables CLUSTER_CODE*TARGET_B / chisq;
  output out=out_chi(keep=_pchi_) chisq;
run;

data ex_cutoff;
  if _n_=1 then set out_chi;
  set ex_cluster;
  chisquare=_pchi_*rsquared;
  degfree=numberofclusters-1;
  logpvalue=logsdf('CHISQ',chisquare,degfree);
run;

n =1は何をしているの?また、なぜ chisquare=_pchi*rsquared を作成しているのか。pchiはすでにカイ二乗なので、R 二乗を掛ける意味は何ですか?

ありがとう

PSコードは、SAS学習コースの1つからのものです。ディスカッション/学習目的でここで共有できることを願っています。

4

1 に答える 1

0

i は配列反復子 (doループで作成) です。データセットに保持することを実際には意図していないため削除されました。これは単なるイテレータです (一度に 1 つの要素を配列を通過させ、その反復中に単一の要素を参照できるようにします)。

mi{i}=(x{i}=.);次のように 1/0 を割り当てています。

x(i)=.true または false のいずれかです。である場合true、それは に評価され1ます。である場合false、評価は になり0ます。したがって、x(i)= が真の場合。次に、m(i) に 1 が割り当てられます。それ以外の場合は 0 が割り当てられます。これは、SAS がブール値 (True/False) を処理する方法です。他の多くの言語も同様に機能します (True はゼロ以外、False はゼロです)。数値に変換すると、True は 1 に変換されます (ただし、ゼロ以外の非欠損値は、逆に変換すると「True」になります)。

于 2014-06-12T01:51:56.247 に答える