Stata是统计学专业软件,可以很方便的对数据处理,但几乎只能按照整行整列进行,而且每次只能加载一个矩阵(dta文件),如果要用到多个矩阵数据进行操作或进行复杂的循环控制,就力不从心了。

而Matlab工业界广泛使用的数据分析处理工具,对矩阵支持良好,除了可以像c语言一样完成底层的操作之外,还包含很多函数库,囊括工控、信号处理、金融、人工智能各个行业。虽然没有Stata内置的统计学函数全面,但在底层操作方面具有明显优势。

因此,在一次帮助别人完成金融数据分析时,尝试使用Stata对数据进行预处理,Matlab完成运算之后再由Stata完成进一步的加标签等操作。

Stata完成数据预处理

Stata参考资料不多,主要参考了《应用Stata做统计分析》前两章基本操作部分,还有搜索。

待处理的数据为大盘行情与个股行情,从数据库下载到的数据为xls格式。使用

import excel *.xls
import excel *.xls,clear#加载另一个文件

可以加载excel文件,当然在加载之前最好改变workspace到所在目录。

数据中一列为“1991-01-01”格式的日期数据,可以使用

generate dated=date(B,"YMD")

把日期同意换算成消逝日期,即相对于1960年元旦的天数。

而day、month、year等函数可以由消逝天数计算出当天的年月日。

导入的数据均为字符串类型,要把字符串转换为数字,要使用

encode x,gen(y)

为了完成把数据导入Matlab进行处理,可以新建一个xlsx(Office2007格式)文件,Stata中输入browse查看数据,将数据复制进入Excel,保存。而在Matlab中点击导入数据完成导入,导入之后别忘了重命名。可以导入多个文件。

如果多个dta文件具有相同的列结构,可以采用下列命令合并:

use data1
append using data2
save data12

要删除本来为表格行列名的行,使用:

drop if dated==.

如果有些值是错误的,可以标记为error:

gen iserror="error" if acumrate==65535

如果要保存为Excel能够打开的的xml格式,使用:

xmlsave filename,doctype(excel)

drop,replace,ls,rename命令也经常用到。

Matlab完成数据处理

Matlab中m文件编程可以完成很多操作,这次新学习到一个命令

try
...
catch
...
end

这样如果对多个数据进行处理,单个数据由于不完整等原因出错时可以继续运行下去。

这次操作,用到了polyfit和polyval命令,分别是进行单变量多项式拟合和估计。

程序代码如下:

%company is sorted, need to change to no-sort
%ind=563  company=[681,17902,563] is wrong,stock price's date may out of
%range
load('jr.mat')
[m,n]=size(company);
acum_index=zeros(m,1);
errcompany=zeros(1,3);%error for which can't find stock price
errind=1;
for ind=1:marit=zeros(40,1);com_id=company(ind,1);%company codecom_date=company(ind,2);%company board dateindex_date_ind=find(ind399108(:,1)==com_date,1);%pointer to indexif isempty(index_date_ind)index_date_ind=find(ind399108(:,1)==com_date+1,1);if isempty(index_date_ind)index_date_ind=find(ind399108(:,1)==com_date+2,1);endend% index 40befor 40afterindex_befor=ind399108(index_date_ind-40:index_date_ind-1,2);index_after=ind399108(index_date_ind:index_date_ind+39,2);%calc stock increasestock_tmp=stock(find(stock(:,1)==com_id,1,'first'):find(stock(:,1)==com_id,1,'last'),:);stock_tmp_ind=find(stock_tmp(:,2)==com_date,1);if isempty(stock_tmp_ind)stock_tmp_ind=find(stock_tmp(:,2)==com_date+1,1);if isempty(stock_tmp_ind)stock_tmp_ind=find(stock_tmp(:,2)==com_date+2,1);endendif isempty(stock_tmp_ind)errcompany(errind,:)=company(ind,:);errind=errind+1;acum_index(ind)=inf;continueendtrystock_index_befor=(stock_tmp(stock_tmp_ind-40:stock_tmp_ind-1,2)-stock_tmp(stock_tmp_ind-40-1:stock_tmp_ind-1-1,2))./stock_tmp(stock_tmp_ind-40-1:stock_tmp_ind-1-1,2);stock_index_after=(stock_tmp(stock_tmp_ind:stock_tmp_ind+39,2)-stock_tmp(stock_tmp_ind-1:stock_tmp_ind+39-1,2))./stock_tmp(stock_tmp_ind-1:stock_tmp_ind+39-1,2);catchdisplay(company(ind,:));display(ind);acum_index(ind)=inf;continue;end%use index_befor stock_index_befor index_after stock_index_after to%calcp=polyfit(index_befor,stock_index_befor,1);arit=stock_index_after-polyval(p,index_after);acum_index(ind)=sum(arit);
end
outdata=[company,acum_index];

完成处理后,使用

xlswrite('x.xls',x)

可以把数组x写入xls文件。

之后可以在Stata中把消逝天数转换为日期,给变量重命名,就完成了操作。

R语言

这次工作完成的非常吃力,主要是工具的原因,Stata无法很好的完成循环控制等底层操作,Matlab虽然可以完成所有操作但Matlab中的字符串和日期操作非我所长,R语言作为专业统计语言,完成这些数据处理和计算应该是十分方便的。很期待R的表现。

Stata和Matlab联合处理金融数据相关推荐

  1. matlab interface,FREE金融数据Matlab接口(Finance Data Matlab Interface)

    ContentsFDataInterface接口介绍金融数据Matlab接口(Finance Data Matlab Interface)基于Yahoo与Sina的金融数据接口为Matlab提供金融数 ...

  2. matlab 价格统计,matlab中的金融数据统计

    1.均匀分布随机数生成函数unidrnd(N,m,n)N生成1到N之间的一个随机数,确定输出矩阵m行,n列. 2.生成连续均匀分布的随机数unifrnd(A,B,m,n)A,B表示上下界. 3.生成正 ...

  3. 华为发布金融数据智能解决方案,金融数智化有了新“良方”

    金融行业的数字化转型难吗? 其实说难也不难,只要能从海量金融数据中摸清业务逻辑,实现智能决策.智能管理,转型水到渠成. ICT厂商华为志向就在于此.在华为全联接大会2022 "共建绿色数智金 ...

  4. COMSOL与MATLAB联合仿真6:绘制绘图组的图形,并提取其中的数据

    COMSOL与MATLAB联合仿真的思路与COMSOL的仿真思路一脉相承. 先几何模型.物理场.材料.网格,然后计算,最后进行后处理(数据分析). 本文涉及的是后处理的一部分内容.提取绘图组的图形和其 ...

  5. vc与matlab联合,浅析VC与Matlab联合编程(二) - VC知识库文章

    浅析VC与Matlab联合编程(二) 作者:邓科 下载源代码 在"浅析VC与Matlab联合编程 (一)"中简单介绍了VC与matcom的接口编程,实现了VC调用matcom的一个 ...

  6. 如何使用DolphinDB处理Tushare金融数据

    DolphinDB是新一代的时序数据库,不仅可以作为分布式数据仓库或者内存数据库来使用,而且自带丰富的计算工具,可以作为研究工具或研究平台来使用,非常适用于量化金融.物联网等领域的海量数据分析.量化金 ...

  7. matlab 向量_COMSOL与MATLAB联合仿真+RBF神经网络预测输出

    数值仿真软件 COMSOL 一是款功能强大的多物理场仿真软件,包含电磁学.流体流动等领域,可以解决电阻抗成像的正问题.这里简单给大家介绍一个电阻抗成像数值仿真的案例: 1. 首先,打开软件新建一个空白 ...

  8. matlab科学计算软件,数据分析软件 Matlab 科学计算软件 科软网——专业正版软件供应商...

    创建二维图形并自定义线条 向图形添加标题.坐标轴标签和图例 合并多个绘图 指定坐标轴范围 创建包含双 y 轴的图. 以交互方式添加文本到图形 二维图和三维图绘制连续.离散.曲面以及三维体数据图 格式和 ...

  9. python金融量化书籍_超强干货 | Python金融数据量化分析教程+机器学习电子书

    如今Python语言的学习已经上升到了国家战略的层面上.Python语言是人工智能的基础语言,国家相关教育部门对于"人工智能普及"格外重视,不仅将Python列入到小学.中学和高中 ...

最新文章

  1. react 之 setState
  2. 生信小白的福音——免费在线分析扩增子数据SILVAngs
  3. 十三、熵编码算法(3):CAVLC原理
  4. python一级考试题目_全国青少年软件编程(Python)等级考试试卷(一级)br测试卷-20191114123907422...
  5. 9.25 360校招面试题总结? 自己面试 c++后端开发,服务器方向,探索部门。
  6. 【知识小课堂】 mongodb 之 objectId
  7. asp.net MVC提高开发速度(创建项目模板)
  8. 向net core 3.0进击——April.WebApi从2.2爬到3.0
  9. Java基础--访问权限控制符
  10. LeetCode 1166. 设计文件系统(哈希map)
  11. 今年蚊子有点慌!有人用100瓶花露水洗澡!
  12. 自动驾驶如何处理突发状况?
  13. Hive Cli 和 Beeline
  14. jquery中Uncaught TypeError: $(...).ajaxUpload is not a function(…)错误解决方法
  15. FreeRTOS 教程指南 学习笔记 第一章 简介
  16. dos2unix 安装和使用
  17. OpenCV—Python Retinex图像增强算法
  18. 5G网络规划面临的挑战
  19. 二、T100库存杂收、杂发、报废管理篇
  20. CSS:字体样式(字体系列、大小、加粗、风格、变形等)

热门文章

  1. 125KHz 100cm ID 读卡电路_摄影人最好用的读卡器推荐
  2. JS五种运算符,运算符的优先级
  3. xmind 模板_XMind 教程 | 如何写出让人眼前一亮的年终总结?
  4. java图片简单爬虫_[Java教程]使用jsoup进行简单的爬虫操作爬取图片
  5. mysql infobright 缺点_infobright、mongodb优劣以及适用范围
  6. iar环境下c语言编程,c语言_源代码-iar环境配置.pdf
  7. 使用rpm安装mysql_如何使用rpm安装MySQL
  8. 12_python基础—函数基础(参数、返回值、调用)
  9. python的表达式范围怎么写_python表达式
  10. 康轩职教计算机应用基础课件,《Excel中IF函数的应用-机器人任务》计算机应用基础职教课件.ppt...