RSS Feed
  1. 在SPSS里用Python代替宏

    January 5, 2013 by zhenzhen

    如果你跟我一样是SPSS syntax的高频使用者,我想你会跟我有同样的苦恼。它简单易学,提供许多常用功能。但毕竟它主要是用于统计分析的工具,在非统计分析方面的功能比较弱。我尤其不喜欢SPSS的宏语句,莫名其妙又规则繁多。好在IBM现在不断提高SPSS的开放性,增加了很多对外的接口,Python就是SPSS的新朋友之一。

    虽然在SPSS里用Python有点矫情,但是我这个暂时还舍不得放弃SPSS的人不得不说一句:Python is my saver!

    想成为和我一样矫情的人:请在安装好Python后,下载安装SPSS Python Plugin

    示例任务:读入一百个txt文件,将其存为sav文件。

    syntax:

    begin program.
    import spss
    i=1
    while i<=100:
    spss.Submit(r”””

    GET DATA
    /TYPE=TXT
    /FILE=!path+”%s.txt”
    /DELCASE=LINE
    /DELIMITERS=”\t”
    /ARRANGEMENT=DELIMITED
    /FIRSTCASE=2
    /IMPORTCASE=ALL
    /VARIABLES=
    id F8
    name A10.
    CACHE.
    EXECUTE.
    save outfile=!path+”%s.sav”.
    “”” %(i,i))
    i=i+1
    end program.

    解释:

    1,Begin program和End program中间是python语句(所以要遵守Python语法),如果你在python而非spss的命令行界面执行这段命令,可以省掉这个openning和ending。

    2,spss.Submit后面的括号里是spss命令,r”””(三引号)意味着中间全部是纯字符串,不用担心引号和双引号。注意这里要遵守的是spss的语法,比如每个命令以“.”结束。

    3,%s表示的是将要被替换的字符。在这里我假设文件名是从1到100,我用python将spss的读入文件的命令执行一百次,每一次执行的时候都替换被读入的文件名。如果文件名不是1到100这么简单,也可以用python将文件名保存为一个list,然后依然替换。

    4,整件事情的过程是:在SPSS里调用python,然后用python执行SPSS命令。你明白这是多么绕的一件事了吗?知道我为什么首先承认自己矫情了吧?如果你用python而非SPSS命令行界面做这件事,可以略微降低其矫情程度。但是我还要用SPSS做各种事,只是偶尔用python,所以放在SPSS的syntax里面对我来说比较方便。

    5,也许你需要我介绍一下宏。我不敢说我非常理解宏,不过我想粗浅说明就够了。wiki里这样介绍:“计算机科学裡的宏是一种抽象(Abstraction),它根据一系列预定义的规则替换一定的文本模式。解释器或编译器在遇到宏时会自动进行这一模式替换。”这里的关键词是替换。当我们需要执行的多个命令非常相似的时候,有一种省力的办法是,每次执行的时候替换命令中的一小部分,而非重新撰写整个命令。当然,还有一种费力的办法是:复制粘贴多次,然后逐一修改,其实本质上是一样的。

    宏就是用来做替换这件事的。


  2. How to choose a “good” research topic?

    March 3, 2011 by zhenzhen

    I’m in the crucial stage of choosing my research topic.

    I’ve consulted several  teachers and senior students. Generally, there are three kinds of suggestion: 1, follow your heart, 2, choosing an important topic, and 3, do what you can do. The three suggestions answer my question based on different criterias of evaluating “good”.

    The first criteria is relevance of interest. If I accidentally fall asleep when I’m read articles on a certain topic, I’d better exclude the topic from my list. I have to admit that my accidentally-falling-asleep actually occur very frequently. I’m not a genius, not even a savant T_T.

    The second criteria is the quality of the topic per se. Some topics do not deserve three years of exploration. How can we identify those high-quality topics? Well, I guess there is no universal answer.  All bad topics resemble each other, while excellent ones each have their own excellence.

    The third criteria is performability. Any topic is meaningless unless you can do something on it.

    Below is an excerpt from the article ”如果让我重做一次研究生”, written by 王汎森, an academician of Academia SINCIA. I’ve read the article for numerous times before. Now  I pick up the article again.  The excerpt emphasizes the quality of the topic per se– “延展性”, it also mentions interest and performability at the end.

    王汎森 院士 台湾“中央”研究院历史语言研究所

    对一个硕士生或博士生来说,如果选错了题目,就是失败,题目选对了,还有百分之七十胜利的机会。这个问题值得研一、博一的学生好好思考。你的第一年 其实就是要花在这上面,你要不断的跟老师商量寻找一个有意义、有延展性的问题,而且不要太难。我在国科会当过人文处长,当我离开的时候,每次就有七千件申 请案,就有一万四千个袋子,就要送给一万四千个教授审查。我当然不可能看那么多,可是我有个重要的任务,就是要看申诉。有些申诉者认为:「我的研究计划很 好,我的著作很好,所以我来申诉。」申诉通过的大概只有百分之十,那么我的责任就是在百分之九十未通过的案子正式判决前,再拿来看一看。有几个印象最深常 常被拿出来讨论的,就是这个题目不必再做了、这个题目本身没有发展性,所以使我更加确认选对一个有意义、有延展性、可控制、可以经营的题目是非常重要的。

    我的学生常常选非常难的题目,我说你千万不要这样,因为没有人会仔细去看你研究的困难度,对于难的题目你要花更多的时间阅读史料,才能得到一点点东西;要挤很多东西,才能筛选出一点点内容,所以你最好选择一个难易适中的题目。

    我写过好几本书,我认为我对每一本书的花的心力都是一样,虽然我写任何东西我都不满意,但是在过程中我都绞尽脑汁希望把他写好。目前为止很多人认为 我最好的书,是我二十几岁刚到史语所那一年所写的那本书。我在那本书花的时间并不长,那本书的大部分的稿子,是我和许添明老师同时在当兵的军营里面写的, 而且还是用我以前旧的笔记写的。大陆这些年有许多出版社,反复要求出版我以前的书,尤其是这一本,我说:「不行。」因为我用的是我以前的读书笔记,我怕引 文有错字,因为在军队营区里面随时都要出操、随时就要集合,手边又没有书,怎么可能好好的去核对呢?而如果要我重新校正一遍,又因为引用太多书,实在没有力气校正。

    为什么举这个例子呢?我后来想一想,那本书之所以比较好,可能是因为那个题目可延展性大,那个题目波澜起伏的可能性大。很多人都认为,我最好的书应 该是剑桥大学出的那一本,不过我认为我最好的书一定是用中文写的,因为这个语文我能掌握,英文我没办法掌握得出神入化。读、写任何语文一定要练习到你能带 着三分随意,那时候你才可以说对于这一个语文完全理解与精熟,如果你还无法达到三分的随意,就表示你还在摸索。

    回到我刚刚讲的,其实每一本书、每一篇论文我都很想把它写好。但是有些东西没办法写好,为什么?因为一开始选择的题目不够好。因此唯有选定题目以 后,你的所有训练跟努力才有价值。我在这里建议大家,选题的工作要尽早做,所选的题目所要处理的材料最好要集中,不要太分散,因为硕士生可能只有三年、博 士生可能只有五年,如果你的材料太不集中,读书或看数据可能就要花掉你大部分的时间,让你没有余力思考。而且这个题目要适合你的性向,如果你不会统计学或 讨厌数字,但却选了一个全都要靠统计的论文,那是不可能做得好。