Q:行X列表中的无序变量如何用循环语句输入? 如
血型 A B O AB
急性 58 49 59 18
慢性 43 27 33 8
A:其实和有序变量一样的录入,大致的结构如下:
for a=1 to 4
for b=1 to 2
input x@@
next
next
…
我没有按SAS的语法写,但大家应当可以明白我的意思。
返回
Q:如何读入其它格式的数据文件,如DBF文件?
A:SAS for Windows的版本提供了菜单导航方式:让PGM视窗变为当前窗口,然后在FILE菜单中选择IMPORT命令,SAS IMPROT WIZARD界面就会出现,按照提示进行即可。对于老版本的SAS,可以用PROC DBF来引入dBASE III 文件。
返回
Q:在运行一段时间后,所提交的SAS程序只在LOG视窗中依次显示,并没有运行,也不出现NOTE或ERROR,这是怎么回事?
A:具体原因我也不太清楚,估计是SAS自己的问题(如果你用的是D版,这种问题会经常遇到。SAS的加密做的非常好,我曾经见到过一个D版,打开一次只能运行3个PROC,然后就完蛋了。但问题是我用的是正版,却偶尔也有该问题出现),解决办法是首先保存所做的工作,然后关闭SAS,再重新打开,继续工作。
返回
Q:为什么用SAS做的表格,其中的横线全部变成了“傻”字?
A:该问题有两种答案。1、问题出在配置文件CONFIG.SAS文件上,他在SAS的根目录内,你可以再里面找到表格设置语句,默认设置为 -FORMCHAR 們剠唶垑妺?=|-/\*(这是英文的表格线,在中文环境里就是乱码),请用/* */这一对注释符将其注释,然后找到他下面的/* -FORMCHAR |----|+|---+=|-/\* */,将两侧的注释符删除,以后表格线就正常了。2、这是SAS公司藐视我们华人的体现,如此大的一个软件公司面对如此多的中文用户,难道连这种小问题都没有发现?难道不能做一个汉化的SAS版本?有没有搞错!
返回
Q:如何在SAS中产生哑变量?
A:在SAS中使用哑变量必须用数据步建立新变量,建立方法主要用判断语句。可以直接用IF语句建立,但这样较麻烦,更简单的用法如下:
例:设“treat”有A、B、C三种取值(字符型),欲建立亚变量,数据库写法如下:
data sample;
input treat $ @@;
treata=(treat='A');
treatb=(treat='B');
cards;
A B A C C B A B A
;
这样就会建立TREATA和TREATB两个亚变量。
返回
Q:在SAS中秩和检验是如何实现的?
A:SAS中实现秩和检验的方法和我们平时所学的不太一样(作为国际一流的统计软件,有点脾气也是难免的),具体做法是将数据先根据所需要进行的统计分析编秩(成组、配伍等),得到每个测量值的秩次后,直接用秩次进行参数的统计分析。所以,有时候SAS秩和检验得出得结果和我们手算不太一样。究竟那种对?两种都有理,但最好以你老板的意见为准。
返回
Q:如何在SAS中拟合(1:r)配对病例对照研究的条件Logistic回归模型?
A:SAS是无法直接拟合上述模型的,但它提供了几种变通的方法来实现:
1.采用数据变换的方法来实现,下面这个例子就来自SAS Sample Library。实际上,可以直接在SAS的HELP里找到。请注意,他所采用的数据变换方法较难,请务必吃透这个例子。
/****************************************************************/
/* S A S S A M P L E L I B R A R Y */
/* */
/* NAME: LOGIOFF */
/* TITLE: Special Case of the Conditional Logistic Regression */
/* PRODUCT: STAT */
/* SYSTEM: ALL */
/* KEYS: logistic regression analysis, */
/* PROCS: LOGISTIC */
/* DATA: */
/* REF: Breslow N. (1982) "Covariance adjustment of */
/* relative-risk estimates in matched studies," */
/* Biometrics, 38, 661-683 */
/* MISC: */
/* */
/****************************************************************/
/*---------------------------------------------------------------
Example: 1:M Matching - A Special Case
Consider the special case that (i) there is only one case in
each matched set and the number of controls are the same for all
sets, and (ii) there is only a single binary covariable with
relative risk exp(beta). The Samsu consumption data in Breslow
(1982) contains 80 matched sets. Each matched set has one case
and four controls. The distribution according to Samsu exposure
is given in the following table:
Case Total Number (Case + Controls)
0 1 2 3 4 5
Exposed . 5 19 10 6 0
Not Exposed 10 15 8 7 0 .
Total 10 20 27 17 6 .
Let n_0m be the number of sets in which exactly m controls are
exposed and the case is not; and let n_1m be the number of sets
in which the case and m controls are exposed. The likelihood of
the conditional logistic regression model is proportional to the
product of the likelihood of the binomial distribution
B(N_m, theta_m), where
N_m = n_0m + n_1m
and
theta_m = m * exp(beta) / [m * exp(beta) + 5 - m]
Since logit(theta_m) = log( m/(5-m) + beta ), beta can be
estimated as a parameter in a logistic regression model with
no intercept and an offset value of m/(5-m).
---------------------------------------------------------------*/
data samsu;
input m r n;
samsu = 1;
off= log(m/(5-m));
cards;
1 5 20
2 19 27
3 10 17
4 6 6
;
run;
proc logistic data=samsu;
model r/n = samsu / offset=off noint;
run;
2.采用CATMOD过程来实现。
3.采用PHREG过程来实现,这种方法也适用于m:n的情况,可以在SAS/STAT手册的831页找到。建议采用这种方法,因为不需要变换数据格式,并且比较容易理解。下面是网友罗俊提供的示例: