2014-06-12 38 views
0

我在SAS提供的logistic回归建模过程中遇到下列代码来: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)有一列一旦这个数据步骤运行,创建标题为“我”。这意味着什么以及为什么会这样。下降“我”基本上放弃它,但如果我不使用下降选项列留在数据集

2.)这一​​步是用1代替所有缺失的值,并用0休息。在做步骤中没有明确规定需要做什么时发生这种情况。在我眼中,“我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; 

什么是Ñ = 1在做什么?还有,为什么我们要创建chisquare = _pchi * rsquared。 pchi已经是chisquare所以与R square相乘的点是什么?

谢谢

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

回答

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(但是当转换为其他方式时,任何非零非缺失值为'真')。

+0

谢谢乔 - 非常感谢。所以即时通讯感觉,如果我要测试=,任何时候在做的声明。那么它会像真/假(1/0)测试一样行事? – Freewill

+0

与Do语句无关 - 任何时候它都在赋值(=)的右侧。 – Joe