Categories
日常应用

七天搞定SAS(三):基本模块调用(格式、计数、概要统计、排序等)

本系列连载文章:

搞定基本的函数之后,开始鼓捣SAS里面的模型。也就是说,要开始写PROC了。说实话,越学SAS,越觉得SAS像Stata...无论是从输出的样式,还是语法。好不习惯没有()的模型调用呀。若是说SAS和Stata的区别,怕只是Stata更侧重于计量模型而SAS则是服务于大多数统计模型吧。

PROC的基本内容:CONTENT

先是一个最基本的PROC:content,可以显示数据集的主要特性。比如,

LIBNAME tropical 'c:\MySASLib';
PROC CONTENTS DATA = tropical.banana;

这里主要是两个声明:TITLE和FOOTNOTE。前者输出时候会产生一个标题,后者会产生尾注。用法也是比较直接的:

TITLE ”Here’s another title”;
TITLE ’Here’’s another title’;
FOOTNOTE3 ’This is the third footnote’;

最后还有一个很像Stata的LABEL声明:

LABEL ReceiveDate = ’Date order was received’
ShipDate = ’Date merchandise was shipped’;

可以变量加注释。其实R里面给变量加注释是一件非常麻烦的事情,只有少数几个包可以搞定,还非常不值的。一般说来,我尽量在变量命名的时候长一点,这样直接可以读懂;再就是重建一个新的表,存储变量名和label。

SAS PROC求子集:WHERE

如果要在PROC里面先求子集的话,可以直接调用WHERE。感觉这里和SQL的思路比较像。用法也算是比较简单(SAS里面的用法都不是很麻烦,除了某些模型):

PROC PRINT DATA = 'c:\MySASLib\style';
WHERE Genre = 'Impressionism';
TITLE 'Major Impressionist Painters';
FOOTNOTE 'F = France N = Netherlands U = US';
RUN;

这样最终得到的结果就是:

Major Impressionist Painters 1
Obs Name Genre Origin
1 Mary Cassatt Impressionism U
3 Edgar Degas Impressionism F
5 Claude Monet Impressionism F
6 Pierre Auguste Renoir Impressionism F
F = France N = Netherlands U = US

SAS PROC 数据进行排序:SORT

排序就更简单了,直接PROC SORT就可以了。

DATA marine;
INFILE 'c:\MyRawData\Lengths.dat';
INPUT Name $ Family $ Length @@;
RUN;
* Sort the data;
PROC SORT DATA = marine OUT = seasort NODUPKEY;
BY Family DESCENDING Length;
PROC PRINT DATA = seasort;
TITLE 'Whales and Sharks';
RUN;

这样数据就按照Family、Length(递减)排序了。

Whales and Sharks 1
Obs Name Family Length
1 humpback 50.0
2 whale shark 40.0
3 basking shark 30.0
4 mako shark 12.0
5 dwarf shark 0.5
6 blue whale 100.0
7 sperm whale 60.0
8 gray whale 50.0
9 killer whale 30.0
10 beluga whale 15.0

SAS PROC 输出数据:PRINT

最简单的数据输出怕就是PRINT了,顾名思义,直接打印数据出来。这里可以进行便啦的选择,还就可以选择统计量:

DATA sales;
INFILE 'c:\MyRawData\Candy.dat';
INPUT Name $ 1-11 Class @15 DateReturned MMDDYY10. CandyType $
Quantity;
Profit = Quantity * 1.25;
PROC SORT DATA = sales;
BY Class;
PROC PRINT DATA = sales;
BY Class;
SUM Profit;
VAR Name DateReturned CandyType Profit;
TITLE 'Candy Sales for Field Trip by Class';
RUN;

得到的结果为:

Candy Sales for Field Trip by Class 1
-------------------------------- Class=14 ---------------------------------
Date Candy
Obs Name Returned Type Profit
1 Nathan 17612 CD 23.75
2 Matthew 17612 CD 17.50
3 Claire 17613 CD 13.75
4 Chris 17616 CD 7.50
5 Stephen 17616 CD 12.50
----- ------
Class 75.00
-------------------------------- Class=21 ---------------------------------
Date Candy
Obs Name Returned Type Profit
6 Adriana 17612 MP 8.75
7 Caitlin 17615 CD 11.25
8 Ian 17615 MP 22.50
9 Anthony 17616 MP 16.25
10 Erika 17616 MP 21.25
----- ------
Class 80.00
======
155.00

SAS PROC里面改变输出格式:FORMAT

基本就是FORMAT一下就可以了,再就是PUT的时候也可以调整。

DATA sales;
INFILE 'c:\MyRawData\Candy.dat';
INPUT Name $ 1-11 Class @15 DateReturned MMDDYY10. CandyType $
Quantity;
Profit = Quantity * 1.25;
PROC PRINT DATA = sales;
VAR Name DateReturned CandyType Profit;
FORMAT DateReturned DATE9. Profit DOLLAR6.2;
TITLE 'Candy Sale Data Using Formats';
RUN;

输出结果为:

Candy Sale Data Using Formats 1
Date Candy
Obs Name Returned Type Profit
1 Adriana 21MAR2008 MP $8.75
2 Nathan 21MAR2008 CD $23.75
3 Matthew 21MAR2008 CD $17.50
4 Claire 22MAR2008 CD $13.75
5 Caitlin 24MAR2008 CD $11.25
6 Ian 24MAR2008 MP $22.50
7 Chris 25MAR2008 CD $7.50
8 Anthony 25MAR2008 MP $16.25
9 Stephen 25MAR2008 CD $12.50
10 Erika 25MAR2008 MP $21.25

常用的格式有:

  • 文本型:$HEXw.和$w.
  • 日期型:DATEw.(输出为ddmmyy或者ddmmyyyy)、DATETIMEw.d(输出为ddmmyy:hh:mm:ss)、DAYw.(输出为dd)、EURDFDDw. 、JULIANw.、MMDDYYw.(输出为mmddyy或mmddyyyy)、TIMEw.d(输出为hh:mm:ss)、WEEKDATEw.(输出为工作日)、WORDDATEw.(输出为单词)。
  • 数字型:BESTw.(自动选择)、COMMAw.d(逗号分隔)、DOLLARw.d(货币)、Ew.(科学计数法)、PDw.d、w.d(标准小数)

输出的样本见下:

当然FORMAT还可以自定义factor型变量的输出格式,比如:

DATA carsurvey;
INFILE 'c:\MyRawData\Cars.dat';
INPUT Age Sex Income Color $;
PROC FORMAT;
VALUE gender 1 = 'Male'
2 = 'Female';
VALUE agegroup 13 -< 20 = 'Teen'
20 -< 65 = 'Adult'
65 - HIGH = 'Senior';
VALUE $col 'W' = 'Moon White'
'B' = 'Sky Blue'
'Y' = 'Sunburst Yellow'
'G' = 'Rain Cloud Gray';
* Print data using user-defined and standard (DOLLAR8.) formats;
PROC PRINT DATA = carsurvey;
FORMAT Sex gender. Age agegroup. Color $col. Income DOLLAR8.;
TITLE 'Survey Results Printed with User-Defined Formats';
RUN;

就可以把数字型的1,2转换为对应的文本male和female等,还可以把变量离散化,得到的输出为:

Survey Results Printed with User-Defined Formats 1
Obs Age Sex Income Color
1 Teen Male $14,000 Sunburst Yellow
2 Adult Male $65,000 Rain Cloud Gray
3 Senior Female $35,000 Sky Blue
4 Adult Male $44,000 Sunburst Yellow
5 Adult Female $83,000 Moon White

最终可以实现的自定义输出还包括简单的文本连接,比如:

* Write a report with FILE and PUT statements;
DATA _NULL_;
INFILE 'c:\MyRawData\Candy.dat';
INPUT Name $ 1-11 Class @15 DateReturned MMDDYY10.
CandyType $ Quantity;
Profit = Quantity * 1.25;
FILE 'c:\MyRawData\Student.txt' PRINT;
TITLE;
PUT @5 'Candy sales report for ' Name 'from classroom ' Class
// @5 'Congratulations! You sold ' Quantity 'boxes of candy'
/ @5 'and earned ' Profit DOLLAR6.2 ' for our field trip.';
PUT _PAGE_;
RUN;

可以给出若干连续的输出(注意DATA _NULL_;将不生成任何SAS的数据表):

Candy sales report for Adriana from classroom 21
Congratulations! You sold 7 boxes of candy and earned $8.75 for our field trip.
------------
Candy sales report for Nathan from classroom 14
Congratulations! You sold 19 boxes of candy and earned $23.75 for our field trip.
------------
Candy sales report for Matthew from classroom 14
Congratulations! You sold 14 boxes of candy and earned $17.50 for our field trip.
------------

SAS里面总结数据:MEANS

SAS当然还有类似于excel的数据透视表和R的data.table的模块,就是MEANS。可以输出的summary statistics包括最大值、最小值、平均值、中位数、余非缺失值个数、缺失值个数、范围、标准差、和等等。此外,还可以使用BY或者CLASS进行分组统计,VAR选择变量等。

比如:

DATA sales;
INFILE 'c:\MyRawData\Flowers.dat';
INPUT CustomerID $ @9 SaleDate MMDDYY10. Petunia SnapDragon
Marigold;
Month = MONTH(SaleDate);
PROC SORT DATA = sales;
BY Month;
* Calculate means by Month for flower sales;
PROC MEANS DATA = sales;
BY Month;
VAR Petunia SnapDragon Marigold;
TITLE 'Summary of Flower Sales by Month';
RUN;

可以实现:

Summary of Flower Sales by Month 1
--------------------------------- Month=5 ---------------------------------
The MEANS Procedure
Variable N Mean Std Dev Minimum Maximum
---------------------------------------------------------------------------
Petunia 3 86.6666667 35.1188458 50.0000000 120.0000000
SnapDragon 3 113.3333333 41.6333200 80.0000000 160.0000000
Marigold 3 81.6666667 25.6580072 60.0000000 110.0000000
--------------------------------- Month=6 ---------------------------------
Variable N Mean Std Dev Minimum Maximum
---------------------------------------------------------------------------
Petunia 4 81.2500000 16.5201897 60.0000000 100.0000000
SnapDragon 4 97.5000000 47.8713554 60.0000000 160.0000000
Marigold 4 83.7500000 19.7378655 60.0000000 100.0000000
---------------------------------------------------------------------------

当然这些统计量也可以直接的写入一个SAS数据表,只需要加上一个OUTPUT就可以了。原数据:

756-01 05/04/2008 120 80 110
834-01 05/12/2008 90 160 60
901-02 05/18/2008 50 100 75
834-01 06/01/2008 80 60 100
756-01 06/11/2008 100 160 75
901-02 06/19/2008 60 60 60
756-01 06/25/2008 85 110 100

SAS代码:

DATA sales;
INFILE 'c:\MyRawData\Flowers.dat';
INPUT CustomerID $ @9 SaleDate MMDDYY10. Petunia SnapDragon Marigold;
PROC SORT DATA = sales;
BY CustomerID;
* Calculate means by CustomerID, output sum and mean to new data set;
PROC MEANS NOPRINT DATA = sales;
BY CustomerID;
VAR Petunia SnapDragon Marigold;
OUTPUT OUT = totals MEAN(Petunia SnapDragon Marigold) =
MeanPetunia MeanSnapDragon MeanMarigold
SUM(Petunia SnapDragon Marigold) = Petunia SnapDragon Marigold;
PROC PRINT DATA = totals;
TITLE 'Sum of Flower Data over Customer ID';
FORMAT MeanPetunia MeanSnapDragon MeanMarigold 3.;
RUN;

最终结果为:

2013-12-09 16_28_08-The Little SAS Book(Fourth).PDF - Adobe Reader

SAS PROC统计频率:FREQ

计数的话,就要靠SAS里面的FREQ模块了。比如我们有一个数据集:

esp w cap d cap w kon w ice w kon d esp d kon w ice d esp d
cap w esp d cap d Kon d . d kon w esp d cap w ice w kon w
kon w kon w ice d esp d kon w esp d esp w kon w cap w kon w

然后可以用FREQ来统计一些基本量:

DATA orders;
INFILE 'c:\MyRawData\Coffee.dat';
INPUT Coffee $ Window $ @@;
* Print tables for Window and Window by Coffee;
PROC FREQ DATA = orders;
TABLES Window Window * Coffee;
RUN;

最终会得到一个2×5的表格:

2013-12-09 16_29_11-The Little SAS Book(Fourth).PDF - Adobe Reader

SAS PROC汇报表格:TABULATE

基本看到TABULATE就可以想到那个著名的软件Tabular了...不过貌似SAS也自带了一个类似的表格模块。这个东西可以变得非常复杂,不过鉴于我一时半会儿还用不到,所以也没有细细看。抄个例子吧。

原数据:

Silent Lady Maalea sail sch 75.00
America II Maalea sail yac 32.95
Aloha Anai Lahaina sail cat 62.00
Ocean Spirit Maalea power cat 22.00
Anuenue Maalea sail sch 47.50
Hana Lei Maalea power cat 28.99
Leilani Maalea power yac 19.99
Kalakaua Maalea power cat 29.50
Reef Runner Lahaina power yac 29.95
Blue Dolphin Maalea sail cat 42.95

SAS代码:

DATA boats;
INFILE 'c:\MyRawData\Boats.dat';
INPUT Name $ 1-12 Port $ 14-20 Locomotion $ 22-26 Type $ 28-30
Price 32-36;
RUN;
* Tabulations with three dimensions;
PROC TABULATE DATA = boats;
CLASS Port Locomotion Type;
TABLE Port, Locomotion, Type;
TITLE 'Number of Boats by Port, Locomotion, and Type';
RUN;

最终结果:
2013-12-09 16_30_08-The Little SAS Book(Fourth).PDF - Adobe Reader

类似的,还可以增加统计量(类似于MEANS那里):

DATA boats;
INFILE 'c:\MyRawData\Boats.dat';
INPUT Name $ 1-12 Port $ 14-20 Locomotion $ 22-26 Type $ 28-30
Price 32-36;
RUN;
* PROC TABULATE report with options;
PROC TABULATE DATA = boats FORMAT=DOLLAR9.2;
CLASS Locomotion Type;
VAR Price;
TABLE Locomotion ALL, MEAN*Price*(Type ALL)
/BOX='Full Day Excursions' MISSTEXT='none';
TITLE;
RUN;

可以得到:
2013-12-09 16_32_12-The Little SAS Book(Fourth).PDF - Adobe Reader

最后还可以混合FORMAT等等,可以变得相当的复杂。貌似这东西是美国劳工部鼓捣出来的格式...

DATA boats;
INFILE 'c:\MyRawData\Boats.dat';
INPUT Name $ 1-12 Port $ 14-20 Locomotion $ 22-26 Type $ 28-30
Price 32-36 Length 38-40;
RUN;
* Using the FORMAT= option in the TABLE statement;
PROC TABULATE DATA = boats;
CLASS Locomotion Type;
VAR Price Length;
TABLE Locomotion ALL,
MEAN * (Price*FORMAT=DOLLAR6.2 Length*FORMAT=6.0) * (Type ALL);
TITLE 'Price and Length by Type of Boat';
RUN;

BOSS级汇报表格呈现了...

2013-12-09 16_32_50-The Little SAS Book(Fourth).PDF - Adobe Reader

我只能感慨,不愧是商业软件啊,用户需求考虑的真的是特别的周到...这种费时费力做汇报表格的事情也被搞定了,强悍。

SAS里面的报告:REPORT

还有一个REPORT,看到有TABULATE的时候我已经不奇怪并略略的有些期待一个做报告的模块出现了。这东西基本就是前面几个的超级混合体,反正你想搞到的汇报模式总是能够搞出来的。

又是一堆数据:

17 sci 9 bio 28 fic 50 mys 13 fic 32 fic 67 fic 81 non 38 non
53 non 16 sci 15 bio 61 fic 52 ref 22 mys 76 bio 37 fic 86 fic
49 mys 78 non 45 sci 64 bio 8 fic 11 non 41 fic 46 ref 69 fic
34 fic 26 mys 23 sci 74 ref 15 sci 27 fic 23 mys 63 fic 78 non
40 bio 12 fic 29 fic 54 mys 67 fic 60 fic 38 sci 42 fic 80 fic

然后一堆SAS代码:

DATA books;
INFILE 'c:\MyRawData\LibraryBooks.dat';
INPUT Age BookType $ @@;
RUN;
*Define formats to group the data;
PROC FORMAT;
VALUE agegpa
0-18 = '0 to 18'
19-25 = '19 to 25'
26-49 = '26 to 49'
50-HIGH = ' 50+ ';
VALUE agegpb
0-25 = '0 to 25'
26-HIGH = ' 26+ ';
VALUE $typ
'bio','non','ref' = 'Non-Fiction'
'fic','mys','sci' = 'Fiction';
RUN;
*Create two way table with Age grouped into four categories;
PROC FREQ DATA = books;
TITLE 'Patron Age by Book Type: Four Age Groups';
TABLES BookType * Age / NOPERCENT NOROW NOCOL;
FORMAT Age agegpa. BookType $typ.;
RUN;
*Create two way table with Age grouped into two categories;
PROC FREQ DATA = books;
TITLE 'Patron Age by Book Type: Two Age Groups';
TABLES BookType * Age / NOPERCENT NOROW NOCOL;
FORMAT Age agegpb. BookType $typ.;
RUN;

然后一堆交叉计数的结果就出来了:
2013-12-09 16_33_53-The Little SAS Book(Fourth).PDF - Adobe Reader

当然,简单的计算和分类统计也不在话下:

DATA natparks;
INFILE 'c:\MyRawData\Parks.dat';
INPUT Name $ 1-21 Type $ Region $ Museums Camping;
RUN;
*Statistics in COLUMN statement with two group variables;
PROC REPORT DATA = natparks NOWINDOWS HEADLINE;
COLUMN Region Type N (Museums Camping),MEAN;
DEFINE Region / GROUP;
DEFINE Type / GROUP;
TITLE 'Statistics with Two Group Variables';
RUN;
*Statistics in COLUMN statement with group and across variables;
PROC REPORT DATA = natparks NOWINDOWS HEADLINE;
COLUMN Region N Type,(Museums Camping),MEAN;
DEFINE Region / GROUP;
DEFINE Type / ACROSS;
TITLE 'Statistics with a Group and Across Variable';
RUN;

可以得到一个看起来很fancy的表格:
2013-12-09 16_34_41-The Little SAS Book(Fourth).PDF - Adobe Reader

SAS数据总结综述

我的感觉是,MEANS, TABULATE和REPORT这三个模块各有千秋,基本就是可以替代EXCEL的数据透视表,虽然效率上说不好谁比谁高...随便哪一个用习惯了就好,反正又不是天天出政府报告的,我就懒得深究了。

 

Categories
我的生活状态

R和生统……

刚从一学公共健康的同学那里听来的冷笑话。她说她们做生物/医学统计的老师们也都用R,我还为之小小惊讶了一下。然后她话锋一转,说

其实我们也总用stata

然后我就很不理解,这两者不是互为替代品么?只等她一语道破天机:

我们是用stata来处理数据,产生结果,然后用R画图,因为stata画出来的图没那么漂亮,没那么自由……

我瞬间明白,为什么当年刚接触R的时候,就有人不停的提及R强大的作图功能了……呃,看来果然是被现实中承认的啊。不过我还是很好奇,这是哪个R包的贡献呢?

话说,今晚巴萨刚刚赢了曼联,捧得了欧冠杯。哇……整个城市那叫个沸腾啊!我们随便去社区的一个Bar里面,就能体会到这种狂欢的气氛。记得前几个星期赢了皇马拿到国王杯的时候(胡诌了,拿联赛冠军的时候,国王杯输了),整个城市也曾沸腾来着……我其实挺好奇去年西班牙捧得世界杯的时候,这个国家得有多狂欢啊。巴萨今年真的是好强悍的说……看来今夜这个城市要无眠咯!(话说今早去吃的churros真的是好棒啊,类似于西班牙版的油条吧,据wiki说还是当年源于中国的。还有Boqueria那个大市场,简直就是没有天理的新鲜便宜!这个城市总是能让人发觉惊喜……)

Categories
网络新发现

惊见神文!计量速成???

刚刚无意间看到了一篇超级牛的文章,简直就是神文啊,广大被计量苦苦折磨的同学们的福音啊!原文载在臭名昭著的人大经济论坛,真是什么论坛配什么文章,不过这篇文章确实是太有意思了,所以我忍不住就转了……后花园备份见此:http://blog.loyhome.cn/369 这篇文章有多神奇呢?

  • 首先,这家伙不是完全在胡说八道,而是还真多少懂一些计量(至少还知道R不是),虽然没有人肉不知道她到底发过多少文章……
  • 其次,我从来没见过几千字就能把计量从头到尾说一遍的文章,而且说的那么实用……就算明白计量理论,看一遍也多多少少能知道在实践中到底有哪些问题需要注意。
  • 关键是,能把高深的计量理论娓娓道来、几句话就说清楚,这本事还真不小。

但是,唉,如果大家都这么搞计量,那么中文经济学文献真的就没什么前途了。计量只是工具啊工具啊,哪有为了发文章而玩计量玩上瘾的,直觉啊直觉啊!当然,我觉得作者还是有一点好初衷的,至少大家被逼着造东西毕业的时候,也别造的太离谱是不是?我的观点是,既然人家不想做学术,又何必逼着每个人都去造论文?观察到学术灌水的现象之后,要知道背后是有深刻的制度原因滴~嗯。所以,大家有点闲暇时间,比如吃午饭的时候,可以抽个十分钟扫一眼这篇神奇的文章,乐一乐无碍~(只盼计量不要在中国这么发展下去啊~咱“师夷长技”,也得先学会是吧?不能总一瓶子不满半瓶子咣当的灌水啊。此时我不禁又加深了对stata之流软件的憎恨……学个软件谁不会啊,只是这种低水平的重复烂造,有意思么?)

嗯,然后作者还推荐了一篇文章,叫“独立思考者的思考模型”,此文的原作者大概是管理学出身,引用了很多模型来阐述观点。我有点不太习惯此类风格的文章,所以没有细细读。不过大致看下来还不是太离谱,所以顺便在这里贴个备份了。(没有联系原作者,有异议的话请通知我,我会撤下)。PDF见此:Patterns of Independent Thinking

另,想起来一个绝佳的简单计量的例子:

  • Banerjee, A., E. Duflo, R. Glennerster, and C. Kinnan. 2009. “The miracle of microfinance? Evidence from a randomized evaluation.” J-PAL Working Paper.

通篇就一个ITT啊~谁说计量一定要玩炫的?

www.duniuniu.com独立
Categories
事儿关经济

数据库规范与SQL应用[3rd week, July]

以前也说过,这个暑假过得相当的“充实”,每天白天8节课(其实我也是三天打渔,两天晒网),晚上回到家练习练习做饭,然后就打开本本开始忙碌的工作。一边看无尽paper,一边绞尽脑汁的搜数据,遇到问题开始到处请教,日子倒也颇为充实。

记得春天的时候写那篇关于FDI的破文章的时候狠狠的感慨了一番国内统计年鉴质量之差,大部分时间都耗在搜集数据上(尤其是把某些图片格式的数据手动输入到数据库里)了,实在是让人哭笑不得。这次写论文用到一些微观数据,其中一部分是鼎鼎大名的中国营养健康调查(China Health and Nutrition Survey,简写CHNS),虽然下载下来的都是SAS格式,但是借助stat transfer还是很容易就转到stata格式了(我算是被“威逼”+“利诱”彻底背叛SPSS了)。然后接下来,我就无语了,开始面对如山的变量……把问卷下下来,又把变量说明下下来,一个个对照着理解……好痛苦啊。

然后需要筛选变量了。按照欣欣姐屡次的提醒,乖乖的开始写do file。其实我还是习惯直接在命令行里面输入……

郁闷的就是对Stata的命令实在是太陌生了,不得不一次次的help。drop...keep...merge...一个个看下来,花了不少时间。开始残念那个叫做SQL的东西,开始回忆当时老老实实学习数据库的日子……怎么也是标准的计算机学院教材训练出来的,还是对于SQL最熟悉,虽然时日已久开始淡忘……

网上搜了搜,好像SAS支持SQL但是Stata并不支持SQL查询和操作,唉。虽然stata各种简单的函数简化了许多操作,但是至少应该保留一个sql接口供习惯sql的人来使用嘛。SQL多好啊,简单的语句组合就那么万能无敌……标准的数据库操作语言啊~

其实stata终归还是一个统计分析软件,并不是数据库管理软件,也就是说它的任务是“分析”而不是“管理”数据。但是我实在是不知道怎么把数据整理好再交给stata分析,只能在stata里面整理了。实在是为难stata,也为难我了。呜呼!

我想,当初要是考虑留下一个sql窗口,会方便许多吧。不知道是为了简化操作还是什么的,非要单独出来一些函数。唉。

也没什么好办法了,相比于借助其他DMS(Data Management System,数据管理系统)整理好再转到stata格式,我还是直接在stata里面操作好了。或许后者效率还是稍稍高些吧,毕竟原理都一样。只是期待,某些约定俗成的标准和规范,应该更为广泛的传承和延续,节省大家的时间,专注于研究而不是无谓的浪费在过程之中。

无论如何,我还是希望尽快的弄完数据这块,专心于经济分析中。

Categories
日常应用

统计软件:R

其实前几天Taiyun Wei就给我留言说R是个很强的统计学软件。

关于统计软件及其在经济学中的应用,我的在SPSS 17中的简单尝试一文中仅有一些很少的介绍。平时也只是用到的时候才会去研究一下SPSS或者STATA(没办法,谁让陈老师和欣欣姐都这么钟情于STATA呢?),对于SAS直接望而生畏。

然而今天想起来去看看R之后,真的发现它实在是太强大了!

R的一些基本情况

R

R的使用

说实话,我到现在为止也只是简简单单的看了一下R的入门,有一份很好的《R导论》,可以http://www.biosino.org/R/R-doc/下载。

总体感觉就是,R很符合习惯面向对象操作的人……嘿嘿!

题外话

  • 我现在也很关注的一点就是“数据挖掘”,有兴趣的同学可以共同探讨一下!主要是最近对于统计年鉴直接无语了,而看到国外的标准格式的统计数据,想到可以直接用SQL操作,心里那个兴奋啊!
  • 此外,对于“统计学在经济学”中的应用,也颇有兴致了解一下。计量经济学到底发挥了什么作用?统计学到底能带给我们什么?(感谢Taiyun Wei这位统计学专业的给我的另一篇留言)这都是我在疑虑和思考的问题。貌似自从想清楚数学在经济学中的作用和地位了之后,从严谨和科学的态度出发,对于这些最基本的问题关注的越来越多。
  • 上次有位老师嘲讽我们的时候说,“谁能解释清楚价值规律和价值就能达到诺贝尔奖的平均水平了”,我很反感这种业内人士拿着业内观点来嘲讽学生的做法。价值理论是整个微观经济学的核心和最最基本的问题,作为老师不去谆谆善诱,而来嘲讽初学者,真不知道是为了鼓励还是为了显示自己的水准。想说的就是,对于基本问题的思考不仅不会中断,而且会越来越深入。可能同一个问题,在不同认知水准下的思考会是不同层次的,但是我相信,会是越来越接近本质的。其实上面说的那个问题本质就是:对于历史的态度。或者说,大数定理究竟会在多大程度上指导我们的实践和预测将来?究竟是指导,还是误导?