sas折叠分类变量聚类分析

时间:2014-06-12 00:06:43

标签: sas cluster-analysis categorical-data

我在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;

我需要了解两件事:

1。)运行此数据步骤后,会创建一个标题为“i”的列。这意味着什么,为什么会这样。丢弃“i”基本上会丢弃它,但如果我不使用drop选项,则列保留在数据集中

2。)这个步骤是用1代替所有缺失的值,用0代替。如果在do步骤中没有明确指出需要做什么,那么会发生什么。在我眼里,“我i = 1到昏暗(mi); mi {i} =(x {i} =。);”应该简单地在mi(i)中将点放在x(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 已经是chisquare了,那么将它与R square相乘是什么意思?

由于

P.S。代码来自SAS学习课程之一。希望我可以在这里分享它用于讨论/学习目的。

1 个答案:

答案 0 :(得分:0)

我是数组迭代器(在do循环中创建)。它已被删除,因为它并不是真的要保留在数据集上,它只是一个迭代器(让你一次通过数组一个元素,在那个迭代过程中让你引用一个元素)单个元素)。

mi{i}=(x{i}=.);正在分配1/0,如下所示:

x(i)=.是真还是假。如果是true,则评估为1。如果是false,则评估为0。因此,当x(i)=时,它是真的。那么m(i)被赋予1;否则它被指定为0.这就是SAS如何使用布尔值(True / False);许多其他语言也是如此(真是非零,假是零);并且当转换为数字时,True将转换为1(但任何非零非缺失值为' True'当以相反方式转换时)。