SPSS常见问题解答
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
Q:在SPSS中能否直接读入EXCEL 97数据文件?有无读入数据的简便方法?
A:在 SPSS 10.0版中,任何版本的EXCEL文件都可以在OPEN对话框中直接打开。
但在9.0及以前版本中就比较复杂,实际上SPSS 7.0以上的版本都可以读入EXCEL 97和ACCESS 97的数据文件。
但这些文件类型不能在打开文件对话框的文件类型中找到,SPSS是利用ODBC来实现对这些数据文件的读取的。
例如在SPSS 9.0中,请选择File菜单->database capture->new query,会弹出数据库读取向导的对话框,按提示操作即可(你所能够读取的ODBC数据类型取决于你所用计算机上安装的ODBC驱动程序的多少)。
实际上对于老版本的SPSS来说,读入 EXCEL 97数据文件最简单的方法是先在EXCEL 97中选择并复制所需数据(不要选择变量名),然后在SPSS数据界面中选择一行一列的单元格,将数据粘贴过来,最后将变量名改为原变量名。
当变量少而记录数多时,这种方法是最快的。
返回Q:如何将SPSS的结果文件(*.spo文件)转换为其它格式?
A:SPSS的结果文件从7.0版本起就是专用的*.spo文件,据我所知,还没有那种文字处理软件可以将他读出来,但SPSS提供了将该文件转存为其它格式的功能。
在SPSS的OUTPUT窗口中选择File菜单->export,可以将结果文件另存为HTML文件和TXT文件。
当然,要比spo文件难看的多。
图表则自动转化为JPG 图片,不能再编辑。
因此,最好在所有修改都完成后再EXPORT。
另外,该命令也可以针对单个图片或表格进行,选中所需图片或表格,单击右键,选择快捷菜单中的EXPORT即可。
(详情请参见网站教程)
返回
Q:想将SPSS的结果表格直接粘贴到WORD中使用,但一粘过去表格的格式就乱了,如何保持原有的格式?
A:选中所需表格,单击右键,选择快捷菜单中的copy object即可,此时粘贴过去的表格就会保持原有的格式(实际上粘贴过去的是一幅图片)。
返回
Q:如何在SPSS中实现四格表的卡方检验?
A:在多数统计软件中,四格表(和行*列表)的数据格式均为行变量、列变量和频数变量。
如下面这个四格表的数据及相应格式如下:
分析时首先选择菜单Data->Weight Cases,将频数变量选入Frequency格中,按OK确认。
此时系统就会以频数表的形式来读取所输入的数据,既记录数应为34+12+23+26=95例,而不是4例。
然后选择菜单Analyze->Descriptive Statistics->Cross Tables,将行、列变量分别选入相应的Row、Column格中,再按下方的Statistics钮,选中左上角的Chi-square复选框,按Continue钮,最后按OK即可。
返回
Q:在打开已有的Excel表格时可以成功地读入数据,但同时出现Output1-SPSS Viewer窗:
>Warning. Command name: GET DATA
>(2109) Encountered a value incompatible with Spss Percent type. Possible
>loss of data. Ensure that all data within the column contains Percent type
>values.
>Note: Future warnings of this type will not be reported because they may be
>too numerous.
>* (Row# 12, Column# 5)
这是什么原因?
A:该提示的意思是EXCEL表格的的12行第五列的数据和SPSS的格式不兼容,从而该数值可能无法正确导入,可能的原因是小数点后的位数太多。
这需要谈到一点编程的问题,EXCEL和ACCESS等的默认数据长度都是24位的,无论你的实际数值为多大。
精度高是好事,但这个精度也太高了,会导致小数点后面跟了一大堆的0,从而超出SPSS所能够承受的精度范围,导致出现警告。
这时你需要检查一下你的数据,比如说太长、或者数字中间打入了一个逗号等,许多时候将该列的默认数据格式改一下就可以了。
返回Q:如何在SPSS中进行正交设计及正交分析?
A:我以前以为SPSS不能作正交设计,感谢网友edof@sh的提醒,经研究,做法如下:
设要做二因素的正交设计,A因素有三个水平,B因素有两个水平。
则选择
Data-->Orthogonal Design-->generate,弹出的就是正交设计窗口:
Factor name框:输入A:单击ADD钮:单击Define value钮:分别在Value
列的头三行输入1、2和3,单击continue钮,这样就定义好了变量A。
按类似的方法定义好变量B的2个水平。
单击OK,系统就输出一个新定义的数据集,前两个变量就是要分析的A和B,各个水平已经按正交设计的要求排列好了。
后面的status_和card_变量是系统产生的LOG变量,可以不管它。
现在你再建立一个结果变量,输入实验结果,就可以进行正交设计的分析了。
正交设计的分析用GLM模块进行。
具体操作如下: Analyze->General Linear Model->Univariate... dependent中选入应变量,fixed factor中选入自变量。
然后进入model钮进行模型设置,这一步非常重要!设置模型为custom,然后选择需要分析的主效应和交互作用。
然后确认,就可以得到所需要的结果。
请注意,如果model钮进行模型设置时选择错误,则得到的结果肯定是不正确的。
返回
Q:如何在SPSS中作条件Logistic回归分析和哑变量分析?
A:SPSS对条件Logistic回归是无能为力的,但可以参照SAS答疑解惑中的变换方式对原数据进行变换再进行拟合。
至于哑变量,如果将原变量设为分类变量(即选定为CAT),则拟合时许多模型会自动按哑变量拟合,但多数情况下得自行产生新变量。
返回
Q:SPSS能否用另外一个具有同样数据结构的数据库更新数据?如同foxpro中的Replace命令?
A:SPSS中DATA菜单提供的MERGE FILES过程就是用于横向和纵向合并数据文件的,一般情况的数据合并问题该菜单都可以解决,具体用法请参见网站的SPSS 教程第二章。
返回
Q:在SPSS中有无编程语言可写?如IF....Else..等编程语句?
A:SPSS中有IF....Else..等编程语句,实际上也可以象其它编程语言一样的使用。
即可以用SPSS的SYNTAX窗口编写SPSS程序来解决,在教程的第四章我有简单的介绍。
更复杂的情况可以用专门的SPSS PRODUCTION FACILITY来完成。
不过,我们所能碰到的多数问题可以用菜单来完成,如COMPUTE中的IF子菜单,不需要去编SPSS程序。
返回
Q:方差分析(ANOVA)多个样本均数间的两两比较,即Post Hoc对话框中提供了两种不同情况下的选项,请问Equal Variance Not Assumed是在方差不齐时选用的吗?其下所提供的四种陌生的检验方法可以介绍一下吗?
A:是的,的确如此,这些方法就是在方差不齐时选用的。
不过>这四种检验方法我也不熟悉,实际上除了SNK、LSD等少数几种方法外,对于方差分析的两两比较理论上就没有统一起来,真正是各说各的理,结果谁也不服谁。
不信你去看看SAS,这四种检验方法根本就找不到!从SPSS的帮助内容翻译出来的意思如下:
Tamhanes’s h2: 基于T检验的一种保守的两两比较方法。
Dunnetts’s t3: 基于标准化最大系数的两两比较方法。
Games-howell: 有时标准过松的两两比较方法。
Dunnett’s C: 基于标准化全距的两两比较方法。
以上四种方法在方差不齐时使用才合适。
返回
Q:SPSS中Homogeneous Subsets下的S-N-K是国内教科书中所指的S-N-K法吗?他提供的LSD法可用于各组间的两两比较吗?或者说,可以替代国内教科书中此种情况下所介绍的S-N-K法吗(因为您知道LSD法在教科书中是用于各治疗组与对照组之间两两比较的)?
A:你说的对,此S-N-K即彼S-N-K。
不过SPSS提供的LSD法不能就这样简单的代替SNK法,因为每种方法都有它的设计思想和适用范围,LSD在推导时就是在假设有一个标准对照的情况下进行的,如果用它来作任意两组的两两比较,则相当于随便改变了alpha水准,自然不对了。
返回
Q:怎么在SPSS中做多组等级资料的等级相关分析,即等级的一致性检验?怎么做有序表的线性趋势检验?
这些统计方法基本上都在corsstable过程中,单击下方的statisitcs钮,会弹出Statistics对话框:
Norminal复选框组:就是反映分类资料相关性的一系列指标,其中:
Contingency coefficient复选框:即列联系数;
Uncertainty coefficient复选框:不确定系数。
Ordinal复选框组:反映有序分类资料相关性的指标,可能有用的有:
Kendall's tau-b复选框;
Kendall's tau-c复选框;
剩下的有:
Kappa复选框:计算Kappa值,即内部一致性系数;
Risk复选框:计算比数比OR值;
McNemanr复选框:进行McNemanr检验(一种非参检验);
Cochran's and Mantel-Haenszel statistics复选框:计算X2M-H统计量。
更详细的内容可以参见网站教程的第六课,或其他统计书籍。
返回
Q:两因素以上的方差分析在SPSS中用什么来完成?
A:这些方差分析一律可归入一般线性模型,所以在SPSS中都被归入了General Lineal Model子菜单。
详情可参见网站的SPSS教程。
返回
Q:配对病例对照研究的原始数据如何直接用SPSS分析?
A:这个问题据我所知可能无法直接用SPSS菜单解决。
需要先用程序将数据集换算成四格表那样的格式再进行分析。
编程思路:
结果中有case和control两个变量,依次读入原数据,由第一条记录得case=1,第二条记录得control=1,即以前的两条变为一条,取值由以前的暴露史决定。
1为暴露,0则为未暴露。
这样就可以得到最终分析用数据,这是我能想到的最简单的方法了。
返回
Q:SPSS能在Windows 2000系统中使用吗?
A:Windows 2000系统在许多方面是和WIN9X系统完全兼容的,在使用SPSS上也是如此,理论上完全可以使用,但问题出在D版的执照上,Windows 2000的Workstation相当于一个个人操作系统,SPSS在上面使用的是单机执照,类似于WIN9X的情况(即市面上D版提供的执照),使用时一点问题都没有;而他的Server 版本是一个服务器,在上面使用SPSS需要NETWORK执照,这是我们所无法得到的,因此不能安装使用。
以下补充内容由网友Elan提供,谢谢他的热心帮助:
spss10在win2000下,syntax是无法识别中文字符的。
所以在用 var labels 或value labels 语句加标签时,如果存在中文字符, syntax运行出错。
其他语句只要存在中文也都是如此。
这个问题可以通过更换syntax edit所用的richedit控件版本来解决。
只有spss10.0.7是spss官方承认支持win2k的。
syntax存在中文不会出错。
返回Q:如何删除多个变量?
A:在spss中,可以通过选中一列变量,再点菜单“clear”的方式来删除变量。
但是,如果要删除的变量很多,并且不是排列在一起的话,用这样的方式无疑是非常辛苦的。
这时候可以用s yntax来快速完成。
假设要删除的变量为VAR1、VAR2、VAR3、…VAR10,并且在SPSS文件中的顺序是连续的,可以用
MATCH FILES file=* /drop=var1 to var10.
如果顺序是不连续的,那么就不能用TO关键字,而只能将各个变量名都写出来,如var2 var2 var3..。
“/drop”子命令表示要删除这些变量。
或者使用“/keep”子命令,则表示仅保留这些变量,其它的都删除。
删除变量标签
可以用语句“variable labels 变量A "".”将变量A的标签删除。
但是在要清空标签的变量很多的情况下,可以定义一个宏(Macro)来完成。
下面就是一个这样的宏Syntax:
define !nolabel(!positional !cmdend).
!do !x !in (!1).
variable labels !x "".
!doend.
!end define.
使用该宏用:
!nolabel 变量A 变量B 变量C .
一种简单的书写变量名的方法是从菜单“Utilities->Variables”中选择变量,并点paste,粘贴到Syntax窗口中。
返回
Q:如何更改变量在SPSS文件中的顺序?
A:SPSS没有提供相应的对话框来更改变量在文件中的顺序,通过在窗口中拖动变量来之执行这个操作无疑是非常麻烦的。
只有通过以下语句:
SAVE OUTFILE='文件名' /keep=var1 var10 var2 to var7 var9 var8
/COMPRESSED.
OUTFILE指定一个文件名,SPSS将把当前的数据保存为该文件;KEEP语句后要写上所有的变量名,按照您想要的顺序书写。
未写上的变量将被删除。
运行该语句以后打开O UTFILE指向的文件,变量顺序就已经改变了。
如果变量很多的话,逐个书写变量名将是一件很烦的事情,这时一个简便的方法是通过菜单
( Utilities->Variables)选择变量并paste到SYNTAX中。
以上语句适用于一般情况下的数据,下面再介绍另一种方法。
如果只想让变量按照变量名的顺序排列(升序或降序),并且变量中不包含任何字符型变量。
那么可以将SPSS的数据进行行列转置,转换后S PSS自动将原来的变量名保存在一个新变量case_lbl中,再接着对数据按变量case_lbl进行排序(升序或降序),然后再进行一次行列转置,这样就可以实现排序的目的。
用syntax来实现就是:
FLIP.
SORT CASES BY case_lbl.
FLIP NEWNAMES=case_lbl.
用对话框来执行以上操作就是:
1、从菜单Data>Transpose,在对话框中选中所有变量进入“Variables”列表框,然后点“OK”,将数据行列转置
2、从菜单“Data>Sort Cases”,将数据按照变量case_lbl排序
3、再回到菜单“Data>Transpose”,选中变量case_lbl进入“Name Variable”,将剩下的所有变量选进“Variables”列表框,按“OK”执行。
和进行行列转置前的数据相对比,数据中多了一个变量case_lbl,我们可以把它删除。
但是更重要的差别是:行列转置后的数据,所有的变量标签、数值标签和格式都丢失了,需要重新设置。
如果有字符型变量,那么该变量数据将全部丢失,成为s ysmis。
所以我们在进行数据的行列转置之前,先将文件保存。
在执行完以上三个步骤后,从菜单“File>Apply Data Dictionary”选择先前保存过的文件将其变量标签、数值标签、格式等信息导到转换过的数据中。
相应的syntax就是:
APPLY DICTIONARY
FROM='D:\aa.sav'.
至于数据中存在字符型变量而又确实要执行以上操作的,可以先用“Automatic Recode”将字符变量转化成数值变量,然后再执行以上操作。
[color=red]创建连续变量名[color]]
需要创建很多变量,但是这些变量名称存在连续性,比如“lvstyl1, lvstyl2, lvstyl3 . . . . lvstyl80”,可以用data list命令的 to 关键字:
data list /var1 to var80 1-80 (a).
begin data.
…
end data.
execute.
但是运行了 data list 命令后产生新的数据文件,而不是往现有的数据文件里添加变量。
所以,如果是要继续添加变量的话,vector()命令是很好的选择:VECTOR lvsty(180).
上述命令创建180个连续的以字符“lvsty” 开头的变量,lvsty1 到
lvsty180。
Vector()命令还可以指定变量的格式,如:
VECTOR lvsty(180,A5).
创建180个5个字符宽度的字符串类型变量。
在spss10.07 的另一种方法就是在 variable view 视图里输入变量名,比如“var01”,拷贝这个名称,然后在其下方某处(要创建几个变量,就往下数几行)粘贴,SPSS就会自动创建一串连续的变量v ar02 var03 ….。