• 粉丝日志首页

外汇国际收支交易编码整理

经济拼图系列文章,随着个人知识的积累,认知的提升,越来越觉得中国经济的高速发展40年是一个奇迹。经济是一个国家的命脉,中美贸易战已经影响到基本面,随之而来的是贸易形态的变化,国际收支的变化,民计民生的变化,从数据的角度,看经济,看政策,看世界,突破自身的局限,尽自已的一份力量。

关于作者:

  • 张丹(Conan), 程序员/Quant: Java,R,Nodejs
  • blog: http://blog.fens.me
  • email: bsspirit@gmail.com

转载请注明出处:
http://blog.fens.me/china-fx-txcode

前言

每次进入一个新的知识领域,都需要从头开始学习,我已经习惯不停地鞭策自己去学习新知识的工作模式。进入新的领域并不可怕,只是学习过程很痛苦。学习对谁都没有捷径,别人花了几十年积累的知识,我也需要花同样的时间积累。只是我能站在前人的肩膀上少走弯路,多看别人的知识总结,并结合自己其他领域的积累,理解起来更快。

本文将从国际贸易基础知识开始,一步一步打怪升级。

目录

  1. 涉外收支交易编码介绍
  2. 交易编码详细内容

1. 涉外收支交易编码介绍

涉外收支交易编码,用于涉外收支交易申报,记录所有关于跨境资金的行为交易。不管是资本项目还是经常性项目,都会对应到涉外收支的交易编码,在申报时进行填写。本文所整理的涉外收支交易编码,参考外汇管理局发布的《涉外收支交易代码分类与标准(2014版)》文件,按收入方向和支出方向做了区分。

交易编码,是由6位的数字组合而成的,但并不是随意的把一个编码对一个业务项,而是有层次结构的。比如,交易编码的第1位,表示顶层的业务分类项目,1=货物贸易,2=服务贸易。通常把交易编码第1位为1-4,表示经常性项下的业务,交易编码第1位5-8,表示资本项下的业务,9表示新型或特殊业务。交易编码的1-3位,表示中间业务分类。交易编码的6位,表示具体的业务项。

1 货物贸易
2 服务贸易
3 初次收入(收益)
4 二次收入(经常转移)
5 资本账户
6 直接投资
7 证券投资
8 其他投资
9 别处未提及的境内外汇收支交易

2. 交易编码详细内容

接下来,我们把交易编码展开。从交易编码构成,我们就能知道中国的跨境贸易业务的复杂度了。每项业务都涉及到包括企业,商品,时间,资金,国别,币种,进出口方向等等维度的数据,确实是非常复杂的。

1, 货物贸易

交易编码 收入项目 支出项目 说明
1 货物贸易 包括纳入海关货物贸易统计(以下简称“海关统计”)的货物贸易和未纳入海关统计的货物贸易。
121 纳入海关统计的货物贸易 指在海关报关或备案的实际进出我国一线关境并引起我国物质资源存量变化的货物贸易。
121010 一般贸易 一般贸易 一般贸易是指我国境内有进出口经营权的企业单边进口或单边出口的货物。在海关统计中,贸易方式为“一般贸易”。
不包括:
–以海关“一般贸易”贸易方式进出口的黄金(包括未锻造黄金、金条、金箔及其他工业用黄金等)应计入“121040-非货币黄金进出口”。
121020 进料加工贸易 进料加工贸易 指进口料件由经营企业付款进口,制成品由经营企业外销出口的经营活动,在海关统计中,贸易方式为“进料加工贸易”。
包括:
–在海关特殊监管区域内以进料加工方式进口的料件和出口的制成品。
–境外客户为境内企业加工复出口的产品提供进口等值5000美元及以下、数量零星的辅料或包装物料以及数量合理直接用于服装生产车间的小型易耗性生产工具。
不包括:
–以海关“进料加工贸易”贸易方式进出口的黄金应计入“121040-非货币黄金进出口”。
121030 海关特殊监管区域及保税监管场所进出境物流货物 海关特殊监管区域及保税监管场所进出境物流货物 指从境外直接存入海关特殊监管区域、保税监管场所和从海关特殊监管区域及保税监管场所运往境外的仓储、分拨、配送、转口货物。在海关统计中,贸易方式为“海关特殊监管区域物流货物”或“保税监管场所进出境货物”。
海关特殊监管区域包括:保税区、出口加工区、保税物流园区、跨境工业区、保税港区、综合保税区等。
海关保税监管场所包括:海关批准的保税仓库、出口监管仓库和保税物流中心等。
包括:
–货物未发生进出境,存放海关特殊监管区域或保税监管场所,但所有权在居民和非居民之间进行转移产生的资金收付。
不包括:
–在海关特殊监管区域内以进料加工方式进口的料件和出口制成品,应计入“121020-进料加工贸易”。
121040 非货币黄金进出口 非货币黄金进出口 指不作为中央银行储备资产的黄金。
包括:
–金条(纯度至少99.5%)、金粉和其他未加工或半加工形式的黄金。
不包括:
–货币黄金,即中央银行拥有所有权并作为储备资产持有的黄金。
–含有黄金的珠宝、手表等。
–离岸转手买卖项下黄金应计入“122020—未纳入海关统计的非货币黄金”。
121050 金融性租赁贸易 金融性租赁贸易 承办租赁业务的企业与外商签订国际租赁贸易合同,租赁期在一年及以上的租赁进出口货物。在海关统计中,贸易方式为“租赁贸易”。租赁期在一年以下的租赁进出口货物不纳入海关统计。
121060 接受国家间、国际组织无偿援助和赠送的物资 提供国家间、国际组织无偿援助和赠送的物资 我国根据政府间的协议或临时决定,对外提供无偿援助的物资、捐赠品或我国政府、组织基于友好关系向对方国家政府、组织赠送的物资,以及我国政府、组织接受国际组织、外国政府或组织无偿援助、捐赠或赠送的物资。在海关统计中,贸易方式为“国家间、国际组织无偿援助和赠送的物资。
121070 国内机构或个人接受华侨、港澳台同胞、外籍华人等捐赠的物资 国内机构或个人提供无偿援助和赠送的物资 不属于国家间、国际组织无偿援助和赠送的,国内机构或个人无偿援助和赠送的物资,和华侨、港澳台同胞、外籍华人、外籍人(法人)自愿捐赠物资、设备。捐赠人(政府和国际组织除外)以扶贫、慈善、救灾为目的捐赠的直接用于扶贫、救灾、兴办公益福利事业的物资。在海关统计中贸易方式为“进出口捐赠物资”。
121080 边境小额贸易 边境小额贸易 指我国沿陆地边界线经国家批准对外开放的边境县(旗)、边境城市辖区内经批准有小额贸易经营权的企业,通过国家指定的陆地边境口岸,与毗邻国家边境地区的企业或其他贸易机构之间进行的贸易活动。在海关统计中贸易方式为“边境小额贸易”。
不包括:
–对台小额贸易,应计入“121990–其他纳入海关统计的货物贸易”。
–边民互市贸易。在边境地区开展的边民互市进出境货物,超过国家批准额度的,根据实际情况按一般贸易、易货贸易等方式统计。
121090 对外承包工程货物出口 指经商务部门批准有对外承包工程经营权的公司为承包国外建设工程项目和开展劳务合作等对外合作项目出口设备、物资。在海关统计中,贸易方式为“对外承包工程出口货物”。
不包括:
–边境地区有对外经济技术合作经营权的企业与我国毗邻国家开展承包工程和劳务合作项下出口的工程设备、物资,应计入“121080-边境小额贸易”。
121100 外商投资企业作为投资进口设备、物品的支出 指外商投资企业以投资总额内的资金(包括中方投资)购买进口的机器设备、零部件和其他物料(其他物料指建厂/场和安装、加固机器所需材料),以及根据国家规定进口本企业自用合理数量的交通工具、生产用车辆和办公用品(设备)所支出的款项。在海关统计中,贸易方式为“外商投资企业作为投资进口的设备、物品”。
121110 加工贸易进口设备 指来料加工和进料加工贸易项下对方作价或不作价提供进口的机械设备。在海关统计中,贸易方式为“加工贸易进口设备”和“海关特殊监管区域进口设备”。
121990 其他纳入海关统计的货物贸易 其他纳入海关统计的货物贸易 指无法归入上述各类的其他纳入海关统计的货物贸易。
包括:
–补偿贸易。
–寄售代销贸易。
–纳入海关统计的免税商品。
–易货贸易。
–在海关统计中,贸易方式为“其他”的贸易,如对台小额贸易、旅游购物商品(旅游者5万美元以下的出口小批量订货)、陈列样品等。
122 未纳入海关统计的货物贸易 居民向非居民出售或从非居民处购买,但未纳入海关统计的货物,包括实际进出关境以及未实际进出关境的货物,主要指没有在海关报关或备案的货物。
122010 离岸转手买卖 离岸转手买卖 离岸转手买卖是指我国居民从非居民处购买货物,随后向另一非居民转售同一货物,而货物未进出我国关境。
包括:
–离岸转手买卖的价差收支。
不包括:
–在货物所有权未变更的情况下,对他人拥有的实物投入开展的有偿生产服务,属于来料加工或出料加工,应计入“221000—来料加工工缴费收入/出料加工工缴费支出”。
–非货币黄金的离岸转手买卖,应计入“122020—未纳入海关统计的非货币黄金”。
–中国居民从境外购买货物并运回境内,再向境外销售并运出境的货物,应按报关时实际贸易方式计入“121—纳入海关统计的货物贸易”相应项下。
–中国居民向另一中国居民在境内购买货物后,再向境外非居民转售货物,应按报关时实际贸易方式计入“121—纳入海关统计的货物贸易”相应项下。
–货物未发生进出境,存放海关特殊监管区域或保税监管场所,但所有权在居民和非居民之间进行转移产生的资金收付,应计入“121030—海关特殊监管区域及保税监管场所进出境物流货物”。
122020 未纳入海关统计的非货币黄金 未纳入海关统计的非货币黄金 包括离岸转手买卖的非货币黄金以及其他未纳入海关统计的非货币黄金。
122030 未纳入海关统计的网络购物 未纳入海关统计的网络购物 未纳入海关统计的网络购物是指通过互联网达成交易的,且未在海关报关或备案的货物。
包括:
–未纳入海关统计的网络购物,主要指个人直购(个人在网站购买并从境外直接发运进境送达个人的)或个人直销(个人向境外消费者通过互联网销售并从境内直接将货物发送至境外消费者)的网络购物。
不包括:
–纳入海关统计的网络购物,主要指居民与非居民通过互联网达成的,且在海关报关或备案的货物交易。
122990 其他未纳入海关统计的货物贸易 其他未纳入海关统计的货物贸易 其他未纳入海关统计的货物贸易。
包括:
–远洋渔业销售收入。
–我国运输工具在境外港口接受非居民提供的货物。
–未纳入海关统计的免税商品。
不包括:
–船员购买自用货物计入“223—旅行”相应项下。

2, 服务贸易

交易编码 收入项目 支出项目 说明
2 服务贸易
221 加工服务 对他人拥有实物投入的制造服务,包括由不拥有相关货物的企业承担的加工、装配、贴标签和包装等服务。
221000 来料加工工缴费收入 出料加工工缴费支出 指由来料加工或出料加工产生的工缴费收入及支出。来料加工:是指由外方提供全部或部分原材料、辅料、零部件、元器件、配套件和包装物料,必要时提供设备,由我方按对方的要求进行加工装配,成品交对方销售,我方收取工缴费。来料加工装配贸易也可采用各作各价对口合同的交易形式,即我方与外方同一客户同时签订进口和出口合同,由客户提供全部或部分原辅料(或由我方添配一部分国产原辅料),我方按要求加工,进口料件和出口成品各作各价。在成品返销原客户后,我方收取成品出口值与来料进口值之间的差价。
出料加工:是指将境内原辅料、零部件、元器件或半成品交由境外厂商按我方要求进行加工或装配,成品复运进口,我方支付工缴费的交易形式。
包括:
–加工贸易所涉及境内购买的材料成本。
–带料加工工缴费支出。
222 运输服务 指将人和物体从一地点运送至另一地点的过程中提供的服务以及相关辅助和附属服务,包括邮政和寄递服务。
22201 海运 包括各项海洋运输服务以及多式联运中海洋运输部分。
222011 涉及我国出口的海洋货运服务 涉及我国出口的海洋货运服务 收入:中国居民承运人为非居民提供同我国货物出口有关的海洋运输服务而获得的收入。
支出:中国居民接受非居民承运人提供的同我国货物出口有关的海洋运输服务而支付的款项。
222012 涉及我国进口的海洋货运服务 涉及我国进口的海洋货运服务 收入:中国居民承运人为非居民提供同我国货物进口有关的海洋运输服务而获得的收入。
支出:中国居民接受非居民承运人提供的同我国货物进口有关的海洋运输服务而支付的款项。
222013 不涉及我国进出口的海洋货运服务 不涉及我国进出口的海洋货运服务 收入:中国居民承运人为非居民提供的不涉及我国货物进出口的海洋运输服务而获得的收入。
支出:中国居民接受非居民承运人提供的不涉及我国货物进出口的海洋运输服务而支付的款项。
222014 海运客运 海运客运 收入:居民承运人为非居民提供各项海洋客运服务获得的收入。
支出:居民接受非居民承运人提供的各项海洋客运服务而支出的款项。
包括:
–与旅客运送相关的客运费和其他支出。
–对客运服务征收的税金,例如销售税或增值税。
不包括:
–居民承运人为非居民提供的在中国境内的海洋客运运输服务,应计入“223—旅行”相应项下。
–非居民承运人为居民提供的在中国境外的海洋客运运输服务,应计入“223—旅行”相应项下。
222019 其他海运服务 其他海运服务 收入:中国居民向非居民提供客运和货运之外的其他海运服务而获得的收入。
支出:中国居民接受非居民提供的除客运和货运之外的其他海运服务而支付的款项。
包括:
–在港口对交通设施的维修。
–海港港口服务,如海运货物的装卸、储存和仓储,不计入货运服务的拖航,为承运人提供的领航和导航帮助,运输工具的牵引、清洁,救助作业等。
–海运运输佣金、代理费。
–与海运相关的包装服务。
不包括:
–货运保险,应计入“225–保险服务”相应项下。
22202 空运 包括各项空中运输服务以及多式联运中的空中运输部分。
222021 涉及我国出口的空中货运服务 涉及我国出口的空中货运服务 收入:中国居民承运人为非居民提供同我国货物出口有关的空中运输服务而获得的收入。
支出:中国居民接受非居民承运人提供的同我国货物出口有关的空中运输服务而支付的款项。
222022 涉及我国进口的空中货运服务 涉及我国进口的空中货运服务 收入:中国居民承运人为非居民提供同我国货物进口有关的空中运输服务而获得的收入。
支出:中国居民接受非居民承运人提供的同我国货物进口有关的空中运输服务而支付的款项。
222023 不涉及我国进出口的空中货运服务 不涉及我国进出口的空中货运服务 收入:中国居民承运人为非居民提供的不涉及我国进出口的空中货物运输服务而获得的收入。
支出:中国居民接受非居民承运人提供的不涉及我国进出口的空中货物运输服务而支付的款项。
222024 空运客运 空运客运 收入:居民承运人为非居民提供各项空中客运服务获得的收入。
支出:居民接受非居民承运人提供的各项空中客运服务而支出的款项。
包括:
–与旅客运送相关的客运费和其他支出。
–对客运服务征收的税金,例如销售税或增值税。
不包括:
–居民承运人为非居民提供的在中国境内的空中客运运输服务,应计入“223—旅行”相应项下。
–非居民承运人为居民提供的在中国境外的空中客运运输服务,应计入“223—旅行”相应项下。
222029 其他空运服务 其他空运服务 收入:中国居民向非居民提供客运和货运之外的其他空运服务而获得的收入。
支出:中国居民接受非居民提供的除客运和货运之外的其他空运服务而支付的款项。
包括:
–在机场对交通设施的维修。
–空港港口服务,如空运货物的装卸、储存和仓储,空中交通控制,运输工具的牵引、清洁,救助作业等。
–空运运输佣金、代理费。
–与空运相关的包装服务。
不包括:
–货运保险,应计入“225–保险服务”相应项下。
22203 其他运输方式 包括除海运或空运外的其他运输方式提供的服务(包括陆地、国内的水道运输、外层空间及管道运输、火箭发射以及多式联运中的相应部分等)。
222031 涉及我国出口的其他运输方式货运服务 涉及我国出口的其他运输方式货运服务 收入:中国居民承运人为非居民提供同我国货物出口有关的其他运输方式的运输服务而获得的收入。
支出:中国居民接受非居民承运人提供的同我国货物出口有关的其他运输方式的运输服务而支付的款项。
222032 涉及我国进口的其他运输方式货运服务 涉及我国进口的其他运输方式货运服务 收入:中国居民承运人为非居民提供同我国货物进口有关的其他运输方式的运输服务而获得的收入。
支出:中国居民接受非居民承运人提供的同我国货物进口有关的其他运输方式的运输服务而支付的款项。
222033 不涉及我国进出口的其他运输方式货运服务 不涉及我国进出口的其他运输方式货运服务 收入:中国居民承运人为非居民提供的不涉及我国货物进出口的其他运输方式的运输服务而获得的收入
支出:中国居民接受非居民承运人提供的不涉及我国货物进出口的其他运输方式的运输服务而支付的费用
222034 其他运输方式客运 其他运输方式客运 收入:居民承运人为非居民提供各项其他运输方式的客运服务获得的收入。
支出:居民接受非居民承运人提供的各项其他运输方式的客运服务而支出的款项。
包括:
–与旅客运送相关的客运费和其他支出。
–对客运服务征收的税金,例如销售税或增值税。
不包括:
–居民承运人为非居民提供的在本经济体境内的其他客运运输服务,应计入“223—旅行”相应项下。
–非居民承运人为居民提供的在本经济体境外的其他客运运输服务,应计入“223—旅行”相应项下。
222039 其他运输方式的其他服务 其他运输方式的其他服务 收入:中国居民向非居民提供客运和货运之外的其他运输方式的其他运输服务而获得的收入。
支出:中国居民接受非居民提供的除客运和货运之外的其他运输方式的其他运输服务而支付的款项。
包括:
–在港口对运输工具的修理。
–其他港口服务,如货物的装卸、储存和仓储,不计入货运服务的拖航,运输工具的牵引、清洁,救助作业等。
–其他运输方式佣金、代理费。
–与其他运输方式相关的包装服务。
不包括:
–货运保险,应计入“225–保险服务”相应项下。
22204 邮政及寄递服务
222040 邮政及寄递服务 邮政及寄递服务 是指信件、报纸、刊物、小册子、其他印刷物、邮包和包裹的取件、运输和递送,包括邮局柜台和邮箱租赁服务。
包括:
–邮局柜台服务,如邮票和邮政汇票的销售、留局待取服务、电报服务等。
–快递和上门送货。
不包括:
–邮政管理实体提供的金融服务,如邮政转账服务、银行和储蓄账户服务,应计入“226000–金融服务”。
–与邮政通讯系统相关的管理服务,应计入“227010–电信服务”。
–提供给旅行者的邮政服务,应计入“223—旅行”相应项下。
–邮递服务中货物的储存,应计入“222—运输服务”的各类运输方式其他服务项下。
223 旅行 收入:非居民在访问我国期间从我国购买自用或馈赠的货物和服务。
支出:中国居民在访问其他经济体期间从这些经济体购买自用或馈赠的货物和服务。
不包括:
–超过海关限额并向海关申报的旅行者购物应计入“121—纳入海关统计的货物贸易”相应项下。
22301 公务及商务旅行
223010 公务及商务旅行 公务及商务旅行 为公务及商务目的旅行的个人在旅游地货物和服务消费。
收入:为在我国境内从事公务和商务活动(如销售活动、市场考察、商业谈判、进行生产或设备安装、开会或代表另一个经济体的居民企业进行的其他商务活动)的旅行者提供货物或服务所获得的收入。
支出:在境外从事公务和商务活动(如销售活动、市场考察、商业谈判、进行生产或设备安装、开会或代表居民企业进行的其他商务活动)的旅行者接受货物或服务而支出的款项。
包括:
–雇主给商务旅行者报销的货物和服务。
–参加国际会议缴纳的报名费。
–为公务及商务目的在旅行国短期租用建筑物的租金。
–边境工人、季节性工人和其他短期工人的消费。
包括:为在我国工作的境外边境工人、季节性工人和其他短期工人提供货物和服务所获得的收入;我国在境外的边境工人、季节性工人和其他短期工人接受境外货物和服务而支出的款项。
22302 私人旅行 私人旅行包括个人因非商务目的出国时购买的货物和服务,如度假、参加娱乐和文化活动、与亲戚朋友游玩、朝圣以及与教育和健康相关的活动。
223021 就医及健康相关旅行 就医及健康相关旅行 收入:为在境内的非居民旅行者提供医疗、保健、康复和其他出于健康方面目的的服务而获得的收入。
支出:中国居民在境外接受非居民提供的医疗、保健、康复和其他出于健康方面目的的服务而支付的款项。
包括:
–就医及健康相关旅行期间所获得的餐饮、住宿和当地运输服务。
不包括:
–进出口医疗药品和器械的收入或支出应计入“121010
–一般贸易”。
–在本经济体接受非居民提供的医疗健康服务,如接受远程医疗服务或非居民医疗提供者前往本经济体开展的医疗服务,应计入“229030—医疗服务”。
223022 留学及教育相关旅行(一年以上) 留学及教育相关旅行(一年以上) 收入:为在境内居留时间超过一年的非居民学生提供教育和培训获得的收入。
支出:中国居民在境外居留时间超过一年,其接受非居民提供的教育和培训所支付的款项。
包括:
–因公跨境教育培训收支。
–留学生学费或培训费。
–留学及教育相关旅行期间购买的餐饮、住宿、当地运输和医疗卫生服务。
不包括:
–在本经济体接受非居民提供的教育培训服务,如接受远程教育培训服务或非居民教育提供者前往本经济体开展的教育培训服务,应计入“229020—教育服务”。
223023 留学及教育相关旅行(一年及一年以下) 留学及教育相关旅行(一年及一年以下) 收入:为在境内居留时间不超过一年(含一年)的非居民学生提供教育和培训获得的收入。
支出:中国居民在境外居留时间不超过一年(含一年),其接受非居民提供的教育和培训所支付的款项。
包括:
–因公跨境教育培训收支。
–留学生学费或培训费。
–留学及教育相关旅行期间购买的餐饮、住宿、当地运输和医疗卫生服务。
不包括:
–在本经济体接受非居民提供的教育培训服务,如接受远程教育培训服务或非居民教育提供者前往本经济体开展的教育培训服务,应计入“229020—教育服务”。
223029 其他私人旅行 其他私人旅行 收入:为非居民因私旅游者提供其他货物和服务所获得的收入。
支出:中国居民因私旅游者在境外购买其他货物或接受其他服务而支付的款项。
包括:
–为私人旅行目的在旅行国短期租用建筑物的租金。
不包括:
–居民在境内接受境外提供的文化、体育和娱乐活动等服务以及非居民在境外接受我国提供的文化、体育和娱乐活动等服务而支付或收入的款项,应计入“229—文化和娱乐服务”相应项下。
224 建设 指在建筑工程所在经济体未设立法人、分支机构及项目办公室由本经济体居民企业直接开展的建设活动。
包括:
–以建筑物、工程性土地改良和其他此类工程建设,如道路、桥梁和水坝等为形式的固定资产的建立、翻修、维修或扩建。
–相关安装和装配工程。
–场地准备、油漆、测量和爆破等特殊服务。
–建设项目的管理。
–从建筑工程所在经济体或第三方经济体(即既非负责建设工程的企业的居住经济体,也非建筑工程所在的经济体)购买的货物和服务。
–从事劳务承包、合作的中国居民提供劳务输出获得的收入,以及中国居民接受非居民提供的劳务承包服务而支出的费用。
224010 境外建设 境外建设 收入:中国居民企业向非居民提供的建设工程服务。
支出:居民企业从其负责的建筑工程所在经济体或从第三方经济体购买的货物和服务。
包括:
–建设工程的维护和维修。
–从事劳务承包、合作的中国居民提供劳务输出获得的收入。
–从建筑工程所在经济体或第三方经济体购买的且未进出我国关境的货物和服务。
不包括:
–居民企业因境外承包工程在我国境内采购的物资,出口记入“121090—对外承包货物出口”。
–居民企业在境外工程地设立法人、分支机构或项目办公室从事建筑工程和安装项目,由居民企业在第三国或当地采购的设备和物资用于建设工程和安装,或直接向所设法人、分支机构或项目办公室的投资应计入“621-我国对境外直接投资”相应项下。
224020 境内建设 境内建设 收入:在我国向非居民建筑企业提供货物或服务收入。
支出:因非居民建筑企业向我国居民提供建设服务支付的款项。
包括:
–建设工程的维护和维修。
–中国居民接受非居民提供的劳务承包服务而支出的费用。
225 保险服务 人寿保险和年金、非人寿保险、再保险、标准化担保服务,以及保险、养老金计划和标准化担保计划的辅助服务所涉及的保费、费用等。
225010 寿险 寿险 寿险指投保人向保险人作规律性支付,作为回报,保险人保证在(或早于)一定时期给予投保人一项既定的金额或一项年金。
包括:
–人寿保险,指投保人分期支付一系列款项,保单到期后可领取一次性付清款项。人寿保单是一种储蓄计划,保单持有人在较长年限内向保险公司缴纳保费,保险公司则承诺在未来某些日期里向其支付保险金。
–年金,指保单生效时一次性收取款项后,保险人分期支付一系列款项,是个人将一次性趸交转换为未来给付流的一种方式。
–个人投保的商业养老保险。
不包括:
–定期人寿保险,即只为在特定时期内的死亡(不含其他情形)提供保险金,也被认为是一种非人寿保险。
22502 非人寿险 覆盖的是所有其他的风险、意外、疾病和灾害等。非人寿保险单下,保险公司接受并留存客户的保费,直至做出赔付或保险到期。
包括:
–非返还型意外险和健康险。
–定期人寿保险,即只为在特定时期内的死亡(不含其他情形)提供保险金,也被认为是一种非人寿保险。
–海险。
–航空保险和其他交通险。
–火灾保险和其他财产损害保险。
–经济损失保险。
–一般责任险。
–信用保险。
–工程保险。
–运输工具险。
–农业保险。
–进出口货运险。
–家庭财产保险等。
225021 为我国出口提供的保险 为我国出口提供的保险 包括非居民为我国出口货物提供的平安险、水渍险、一切险等。
不包括出口信用保险。
225022 为我国进口提供的保险 为我国进口提供的保险 包括非居民为我国进口货物提供的平安险、水渍险、一切险等。
225029 其他非寿险 其他非寿险 包括除进出口货运险以外的其他非寿险。
225030 再保险 再保险 再保险也称分保,是保险人在原保险合同的基础上,通过签订分保合同,将其承保的部分风险和责任向其他保险人进行保险的行为。其保单双方均是保险服务提供商。
225040 标准化担保服务 标准化担保服务 标准化担保由大批量生效的担保构成,这些担保通常金额很小,且条款相同,如出口信贷担保和助学贷款担保。
225050 保险辅助服务 保险辅助服务 指与保险和养老基金业务密切相关的服务提供。
包括:
–保险经纪、代理和评估服务。
–保险和养老金咨询服务。
–评估和损失调整服务。
–保险精算服务。
–救助管理服务。
–对赔偿和追偿的监管、监控服务等。
226 金融服务
226000 金融服务 金融服务 指除保险和养老金服务之外的金融中介和辅助服务。
通常包括由银行和其他金融公司提供的服务,如存款吸纳和贷款、信用证、信用卡、与金融租赁相关的佣金和费用、保理、承销、支付清算等服务。还包括金融咨询、金融资产或金条托管、金融资产管理及监控、流动资金提供、非保险类的风险承担、合并与收购、信用评级、证券交易和信托等服务。
具体
包括:(金融机构和其他机构提供的以下服务)
–与信用证、银行承兑、信贷额度、金融租赁、银行卡、外汇买卖、个人和企业信贷等有关的金融中介服务。
–证券交易的佣金和其他相关收费,证券交易包括经纪、发行、承销和兑付。
–衍生金融工具合同安排的佣金和收费。
–商品期货交易者的佣金。
–资产管理的服务、金融市场操作和管理服务以及证券存管服务。
–金融产品、金融工具、投资、理财等的金融咨询服务。
–金融代理服务。
–邮政汇兑服务。
–贷款、支付、产品等的担保和承诺。
–网上银行提供的服务。
–人民币跨境清算服务。
–购买国际货币基金组织资金的服务费,如为国际货币组织备用贷款和中期贷款下尚未拨付的资金所支付的费用(类似承诺费)等。
227 电信、计算机和信息服务
227010 电信服务 电信服务 指通过电话、电传、电报、无线广播、电视线缆、电视卫星、电子邮件、传真等广播或传送音频、图像、数据或其他信息。
包括:
–商业网络服务、电话会议和辅助服务。
–移动电讯服务、互联网骨干服务、在线访问服务(含互联网接入服务)。
不包括:
–所传输信息本身的价值。
–电话网络设备安装服务,应计入“224—建设”相应项下。
–数据提供服务,应计入“227030–信息服务”。
227020 计算机服务 计算机服务 指与计算机有关的硬件和软件相关服务和数据处理服务。
包括:
–定制软件(不论如何交付)的销售和相关使用许可。
–为特定用户定制软件(包括操作系统在内的开发、生产、供应和文件编制)。
–下载或通过其他电子方式交付的(大批量制作的)非定制软件,无论是定期收取许可费还是一次性支付。
–在磁盘或光盘等储存设备上提供的具有定期许可费的(批量)非定制软件使用许可。
–软件系统和应用程序原作和所有权的销售和购买。
–软硬件咨询和执行服务,包括转包计算机服务的管理。
–软硬件安装,包括主机和中央处理器的安装。
–计算机和外部设备的维护和维修。
–数据恢复服务、计算机资源管理相关事项方面的建议和协助。
–安装即用系统(包括网页开发和设计)的分析、设计和编程,以及与软件相关的技术咨询。
–系统维护和其他辅助服务,如作为咨询服务一部分的培训。
–数据处理和托管服务,如基于分时的数据录入、制表和处理。
–网页托管服务(即在互联网上为客户网页提供服务器空间)。
–提供应用程序、托管客户应用程序和计算机设施管理。
不包括:
–以物理介质提供的具有永久使用权的非定制计算机软件,应计入货物贸易相应项下。
227030 信息服务 信息服务 包括:
–通讯社服务,如向媒体提供新闻、照片和有关资料报道。
–数据库服务,如数据库构思、数据存储以及数据和数据库(包括目录和邮件列表)通过在线和磁性、光学或印刷介质进行的分发。
–网页搜索门户,即客户输入关键查询字段寻找互联网址的搜索引擎服务。
–非批量订购报纸、期刊和书籍及电子出版物等。
不包括:
–批量购买报纸、期刊和书籍,应计入“121010—一般贸易”项下。
228 其他商业服务
228010 研发成果转让费及委托研发 研发成果转让费及委托研发 研发是指与基础研究、应用研究以及与新产品和流程的实验性开发。原则上,有关自然科学、社会科学和人文学科的此类活动,以及与电子、医药和生物技术相关的商业研究,代表技术前沿的操作系统的开发均可纳入此类。
包括:
–转让研发成果所有权,如研发产生的专利、版权、工业生产和设计(包括商业秘密)等。
–提供定制和非定制的研发服务。
不包括:
–技术研究和咨询工作,应计入“22803
–技术服务”相应项下。
–计算机软件专利权的销售应计入“227020—计算机服务”。
–计算机软件复制或分销许可费,应计入 “231030—复制或分销计算机软件许可费”。
–视听和相关产品专利权的销售以及复制或分销许可费,应计入“229010—视听和相关服务”及“231040—复制或分销视听及相关产品许可费”。
22802 法律、会计、广告等专业和管理咨询服务
228021 法律服务 法律服务 法律服务指在任何法律、司法或法定程序中提供的法律咨询和代理服务、起草法律文件服务、认证咨询及第三方托管和结算服务。
包括:
–与法律有关的资格认证。
–与法律服务有关的公证费等。
228022 会计服务 会计服务 会计、审计、记账和税务咨询服务指记录商业交易、对会计记录和财务报表进行审计、营业税规划咨询服务以及准备税务文件等服务。
包括:
–与会计有关的资格认证。
228023 管理咨询和公共关系服务 管理咨询和公共关系服务 商业、管理咨询和公共关系服务指为企业提供的业务政策、战略规划和总体规划方面的咨询、指导和业务援助服务,以及在企业管理方面提供的服务。具体可以是管理审计、市场管理、人力资源管理、生产管理和项目管理咨询。
包括:
–母企业或其他关联企业向分支机构、子公司或联营企业提供的一般管理服务。
–与管理有关的资格认证。
–国际团体的会员费及注册费。
–与管理咨询和公共关系服务有关的公证费等。
不包括:
–保险和养老金咨询服务,应计入“225050—保险辅助服务”。
–与技术(不包括计算机软硬件技术)相关的咨询,应计入“22803—技术服务”相应项下。
–与计算机软硬件相关的技术咨询,应计入“227020—计算机服务”。
–由银行或其他金融公司提供的金融服务,应计入“226000—金融服务”。
228024 广告服务 广告服务 包括:
–广告代理机构进行的广告设计、创意和市场营销服务。
–媒体投放、购买和出售广告空间、产品在国外的推广服务以及电话推销等各类服务。
228025 展会服务 展会服务 包括展览、会展服务,及展会摊位租赁费用。
228026 市场调查、民意测验服务 市场调查、民意测验服务 市场调查以及民意调查等各类调查服务。
22803 技术服务
228031 建筑、工程服务 建筑、工程技术服务 包括:
–建筑服务具体包括建筑设计、装潢设计服务等。
–工程服务具体包括机械设计、机械研制和使用,以及与之相关的材料、仪器仪表、结构、流程和系统;提供工程项目的设计、规划及研究等。
228032 废物处理和防止污染服务 废物处理和防止污染服务 包括放射性及其他废物的处理、污染土壤的剥离、污染清理服务(具体包括清理泄露原油、采矿点恢复、排污及相关卫生服务);涉及清洁和还原环境的所有相关服务。
不包括:
–排放许可证交易应计入“522000
–品牌、商标、契约和许可所有权等非生产非金融资产转让”。
228033 农业和采矿服务 农业和采矿服务 包括:
–农业服务。
是指提供带操作人员的农业机械服务、收割、粮食加工、防止病虫害、动物出境、动物的护理和养殖,以及狩猎、诱捕、林业、伐木、兽医和钓鱼服务等服务。
–采矿服务。
是指在油田和天然气田的石油和天然气开采有关服务、石油和天然气钻井的钻井、套管、固井服务;井架建筑、维修和拆卸服务等;矿产普查与勘探,以及采矿工程和地址测绘等服务。
228039 其他技术服务 其他技术服务 指上述未提及的其他技术服务。
包括:
–测量、制图、产品测试和认证技术检验、产品检验检疫等服务。
228040 经营性租赁服务 经营性租赁服务 指根据向承租方提供使用有形资产的协议,出租生产资产,但不涉及将大部分风险和所有权回报向承租方转移的活动。
包括:
–出租方对所出租生产资产提供的维护和维修、便利和安全以及后援便利等服务。
–不带工作人员的船舶、飞机以及轨道车、集装箱和拖车等运输设备的租赁(出租)和包租。
–不带操作员的其他设备相关的经营租赁,如,计算机和电信设备租赁。
–住宅和其他建筑物的经营租赁如果未计入旅行,则计入本项。
不包括:
–电信线路或容量的租赁,应计入“227010–电信服务”。
–带有工作人员的船舶和飞机出租,应计入“222
–运输服务”相应项下。
–在非居民访问本经济体期间向其出租的住房和交通工具计入“223—旅行”。
–国际金融租赁应计入“8
–其他投资”相应项下。
228050 货物或服务交易佣金及相关服务 货物或服务交易佣金及相关服务 指支付给商户、商品经纪商、交易商、拍卖商和代理商的货物和服务交易佣金。
不包括:
–金融工具的经纪费,应计入“226000—金融服务”。
–运输代理佣金,按运输方式计入“222—运输服务”相应项下。
–保险佣金应计入“225050—保险辅助服务”。
228060 办事处、代表处等办公经费 办事处、代表处等办公经费 指办事处、代表处在开设时的启动资金和运营经费。
不包括:
–运输公司驻外办事处代母公司收取的票(费),应计入“222—运输服务”相应项下。
–母公司通过代表处转付的款项,应根据原始交易性质计入相应的交易项下。
–办事处、代表处等提供售后服务应按照服务的性质计入相应的交易项下。
228990 上述未提及的其他商业服务 上述未提及的其他商业服务 指上述未提及的其他商业服务。
包括:
–人员安置、安保、笔译和口译、照相服务、出版、建筑物清洁以及房地产评估、房地产经纪等服务。
229 文化和娱乐服务 指服务的接受者在本经济体内接受非居民所提供的文化和娱乐服务。
包括:
–在本经济体内接受非居民提供的远程文化娱乐服务。
–非居民前往本经济体提供文化娱乐服务。
229010 视听和相关服务 视听和相关服务 指与电影制作(胶片、录像带、磁盘上的电影或电子传输的电影等)、无线广播和电视节目制作(现场直播或磁带播放),以及音乐录音等相关的服务。
包括:
–视听和相关产品出租,如音像制品的租赁。
–加密电视频道收看使用费,如有线电视和卫星电视。
–涉及戏剧和音乐作品制作、体育活动、马戏团和其他类似活动的演员、导演和制片人的费用。
–下载的或以其他电子形式交付的,买断、卖断或供永久使用购入或销售的大批量制作录音制品和原稿。
不包括:
–以光盘、磁盘、纸张形式取得的买断、卖断或供永久使用购入或销售的大批量制作录音制品和原稿应计入“121010—一般贸易”。
–体育赛事的转播许可,应计入“231040
–复制或分销视听及相关产品的许可费”。
–因转播各类视听节目所使用电视卫星等的费用,应计入“227010—电信服务”。
229020 教育服务 教育服务 包括:
–函授课程。
–通过电视和互联网提供的教育。
–居民接受非居民前往居民所在经济体开展教育服务或非居民接受居民前往非居民所在经济体开展教育服务。
不包括:
–在服务提供者所在领土内提供给非居民的教育服务,应计入“22302—私人旅行”相应项下。
229030 医疗服务 医疗服务 包括:
–医院、医生、护士以及辅助医务人员和类似人员提供的远程服务,还有化验和类似远程服务。
–中国居民接受非居民在中国境内开展医疗服务或非居民接受中国居民前往非居民所在经济体开展医疗服务。
不包括:
–在中国境内为来华非居民提供卫生保健服务,应计入“223021–就医及健康相关旅行”。
–兽医服务,应计入“228033—农业和采矿服务”。
229990 其他文化和娱乐服务 其他文化和娱乐服务 包括:
–远程提供博物馆服务。
–运动员的费用和奖励也计入本项。
–远程博彩服务,指组织远程博彩的单位收取的服务费以及支付的博彩税收。
不包括:
–中国居民在境外或非居民在中国境内购买的其他文化体育和娱乐服务,应计入“223—旅行”相应项下。
230 别处未涵盖的维护和维修服务
230000 别处未涵盖的维护和维修服务 别处未涵盖的维护和维修服务 指中国居民为非居民(反之亦然)所拥有的货物提供的维护和维修工作,使货物正常运转的小修,以及提高货物效率、性能或延长其使用寿命的大修。维修可以在修理者的地点或其他地方实施。记录的维修值为已完成工作的值,而非货物维修之前和之后的总值。维修值包括维修者提供的并计入收费之中的任何零件和材料值。
包括:
–船舶、飞机和其他运输设备以及钻井平台的维护和维修。
–产品的售后服务。
不包括:
–单独报关的单独收费的零件和材料,应按纳入海关统计项目计入货物贸易相应项目。
–建设工程维护和维修,应计入“224—建设”相应项下。
–计算机的维护和维修,应计入“227020
–计算机服务”。
–经营性租赁项下的生产资产维修,应计入“228040—经营性租赁”。
–在港口和机场对交通设施的清洁和维修计入在“222—运输服务”相应项下。
231 别处未涵盖的知识产权使用费
231010 特许和商标使用费 特许和商标使用费 指因商标和特许权许可使用获得的收入和支出。
231020 研发成果使用费 研发成果使用费 指由于研发成果(除计算机软件和视听及相关产品)使用获得的收入和支出。
包括:
–专利权、著作权、版权、工业流程和设计的使用。
231030 复制或分销计算机软件许可费 复制或分销计算机软件许可费 指转让/获得复制或分销计算机软件许可所取得/支付的费用。
不包括:
–定制计算机软件、下载的或以其他电子形式交付的非定制的计算机软件、以物理介质提供的定期支付许可费的非定制计算机软件,应计入“227020—计算机服务”。
–以物理介质提供的具有永久使用权的非定制计算机软件,应计入货物贸易相应项下。
231040 复制或分销视听及相关产品许可费 复制或分销视听及相关产品许可费 指转让/获得复制或分销视听及相关产品许可所取得/支付的费用。
包括:
–电影和录音。
–有线电视、卫星电视(体育赛事的转播权也包括在内)、广播等。
–翻译、绘画和雕塑作品等产品。
不包括:
–定制视听及相关产品、下载的或以其他电子形式交付的非定制的视听及相关产品、以物理介质提供的定期支付许可费的非定制视听及相关产品,应计入“229010—视听和相关服务”。
–以物理介质提供的具有永久使用权的非定制视听及相关产品,应计入货物贸易相应项下。
231990 其他知识产权使用费 其他知识产权使用费 因转让/获得除上述类别产品之外的其他知识产权产品的使用许可所取得/支付的费用。
232 别处未涵盖的政府货物和服务
232000 别处未涵盖的政府货物和服务 别处未涵盖的政府货物和服务 包括:
–由飞地提供,如大使馆、领事馆、军事基地和国际组织,或向飞地提供的货物和服务。
–外交官、使领馆工作人员和位于国外的军事人员及其家属从东道国经济体购买的货物和服务。
–由政府或向政府提供的未计入其他服务类别的服务。

3, 初次收入(收益)

交易编码 收入项目 支出项目 说明
3 初次收入(收益) 指因提供劳务、金融资产和出租自然资源而获得的回报。当居民拥有的劳务、金融资源和自然资源被非居民使用时,获得初次收入;而居民使用非居民拥有的劳务、金融资源和自然资源时,则支付初次收入。
321 职工报酬 指当雇主与雇员为不同经济体的居民时,双方因雇佣关系而产生的工资、薪金和福利收支,包括雇主代表雇员支付的社会保障、私人保险、年金以及退休金等。
321000 职工报酬(工资、薪金和福利) 职工报酬(工资、薪金和福利) 指居民雇员从非居民雇主处获得的工资、薪金和福利,以及居民雇主向非居民雇员支付的工资、薪金和福利。
包括:
–雇主代表雇员支付的社会保障、私人保险、年金以及退休金等。
不包括:
–不具有雇主-雇员关系的不同经济体居民因服务合约而产生的收入和支出,应计入“2–服务”相应项下。
–居民(非居民)工人在东道国经济体进行金融投资获得的股息、红利、利息等收益,应根据对应金融工具计入“322–投资收益”相应项下。
322 投资收益指居民(非居民)因向非居民(居民)提供金融资产而获得的回报。 包括:
–境内外关联实体之间因股权投资或债务性往来而产生的利润、股息和利息收支。
–非关联境内外实体之间因有价证券投资(股票和债券投资)产生的股息、红利和利息收支。
–非关联境内外实体之间因存款、贷款或非流通股权或债务性投资而产生的股息、红利和利息收支。
–跨境设立法人、分支机构及项目办公室从事建筑工程和安装项目所获收入超过原投资额的部分。
不包括:
–资本利得收入或支出,如买卖价差收支,应计入资本和金融项目项下。
32201 直接投资股息、红利 指不同经济体居民因直接投资头寸而产生的跨境股息和红利收支。
包括:
–跨境设立法人、分支机构及项目办公室从事建筑工程和安装项目所获收入超过原投资额的部分。
直接投资关联企业(包括母公司、子公司、联营公司、联属企业)概念参见“6–直接投资”项目。
322011 从境外子公司等获得的股息、红利或利润 向境外母公司支付的股息、红利或利润 指子公司、联营公司向直接投资者支付的股息、红利或利润,以及因持有境外机构10%及以上的普通股或表决权而获得的股息、红利或利润。
收入:从境外子公司等获得的股息、红利或利润。
包括:
–境外子公司、联营公司和其他非公司型直接投资机构汇回的利润。
–持有境外机构10%及以上的普通股或表决权获得的股息、红利。
–持有境外投资基金10%及以上份额所获得的股息、红利。
–我国企业在境外工程地设立法人、分支机构及项目办公室从事建筑工程和安装项目所获收入超过原投资额的部分。
支出:向境外母公司支付的股息、红利或利润。
包括:
–向境外母公司汇出利润。
–向持有本机构10%及以上的普通股或表决权的境外投资者支付股息、红利。
–向持有境内投资基金10%及以上份额的非居民投资者支付股息、红利。
不包括:
–非参与性优先股收益属于债务利息,应计入“32202–直接投资利息”或“32203–证券投资利息”相应项下。
322012 从境外母公司获得的股息、红利(持有境外母公司10%以下股权) 向境外子公司等支付的股息、红利(持有本机构10%以下股份) 指直接投资企业因持有直接投资者10%以下普通股或表决权而获得的股息、红利。
收入:外商投资企业因持有境外直接投资者10%以下的股权而获得的股息、红利。
支出:向持有本机构10%以下股权的境外直接投资企业(含境外子公司、联营公司以及其他非公司制直接投资机构)支付股息、红利。
不包括:
–非参与性优先股收益属于债务利息,应计入“32202–直接投资利息”或“32203–证券投资利息”相应项下。
322013 从境外联属公司获得的股息、红利(持股10%以下的关联机构) 向境外联属公司支付的股息、红利(持股10%以下的关联机构) 指境内外联属企业之间因持股10%以下而获得红利、股息。
收入:境内联属企业因持有境外联属企业10%以下的股权而获得的股息(红利)。
支出:境内联属企业因境外联属企业持有其10%以下的股权而支付的股息(红利)。
不包括:
–非参与性优先股收益属于债务利息,应计入“32202–直接投资利息”或“32203–证券投资利息”相应项下。
322014 因拥有境外建筑物而获得的租金 向境内建筑物的非居民所有者支付的租金 指持有非居民(居民)经济体不动产10%及以上表决权的居民(非居民)所有者获得的建筑物租金。
收入:持有境外建筑物10%及以上表决权的居民所有者出租境外建筑物获得的租金。
支出:向持有境内建筑物10%及以上表决权的非居民所有者汇出建筑物租金。
不包括:
–持有10%以下表决权,且表决权为可流通股权的居民(非居民)所有者获得的境外不动产经营利润,应计入“322031–股票投资的红利、股息收入”。
–持有10%以下表决权的居民(非居民)合伙人所获得的境外不动产经营利润,应计入“322043–从准公司(持股10%以下)和国际组织(因份额投资)获得的红利、收益/向准公司和国际组织份额持有者支付的红利、收益”。
–跨境不动产买卖价差收入,应计入“621030—出售境外不动产/购买境外不动产支出”下。
–非居民在中国境内以及居民在中国境外租赁建筑物的租金,应计入“223–旅行”项下。
32202 直接投资利息 指不同经济体居民因直接投资头寸而产生的跨境利息收入和支出。
322021 从境外子公司获得的利息 向境外母公司支付的利息 指一国或地区居民作为直接投资者,向直接投资企业(包括境外子机构、联营机构,以及持股10%及以上的其他机构)提供贷款、公司内部往来款获得的利息和购买上述直接投资企业发行的债券获得的利息。
收入:从境外子公司获得的利息。
支出:向境外母公司支付的利息。
包括:
–母子公司之间非参与性优先股收益。
322022 从境外母公司获得的利息(持有境外母公司10%以下股权) 向境外子公司等支付的利息(持有本机构10%以下股权) 指直接投资企业因向直接投资者提供贷款、往来款、发生应收款,或持有直接投资者发行的债券而获得的利息。
收入:从境外母公司获得的利息(持有境外母公司10%以下股权)。
支出:向境外子公司等支付的利息(持有本机构10%以下股权)。
包括:
–母子公司之间非参与性优先股收益。
322023 从境外联属公司获得的利息(持股10%以下的关联机构) 向境外联属公司支付的利息(持股10%以下的关联机构) 指境内外联属企业之间因贷款、往来款、应收款和持有对方发行的债券而获得利息。
收入:从境外联属企业(持股10%以下的关联机构)获得的利息。
支出:向境外联属企业(持股10%以下的关联机构)支付的利息。
包括:
–联属企业之间非参与性优先股收益。
32203 证券投资收益 指居民因投资于其他经济体居民发行的可流通股本证券和债务证券而获得的股息、红利和利息,以及居民因其他经济体居民持有本机构发行的可流通股本证券和债务证券所支付的股息、红利和利息。
322031 股票投资的股息、红利 股票投资的股息、红利 收入:指因持有境外非关联机构10%以下的可流通的股票、股权或参与性优先股而获得的股息和红利。
支出:指向持有境内机构10%以下可流通的股票、股权或参与性优先股的境外非关联机构或个人投资者汇出股息和红利。
包括:
–持有10%以下表决权,且表决权为可流通股权的居民(非居民)所有者获得的境外不动产经营利润。
不包括:
–境内外关联机构之间持有10%及以上的普通股或有表决权的股份,所获得或支付的红利和股息,应计入“322011–从境外子公司等获得的股息、红利或利润/向境外母公司支付的股息、红利或利润”。
–逆向投资项下股票投资的股息、红利,应计入“322012—从境外母公司获得的股息、红利(持有境外母公司10%以下股权)/向境外子公司等支付的股息、红利(持有本机构10%以下股权)”。
–联属企业相互持股在10%以下的股息、红利,应计入“322013–从境外联属企业获得的股息、红利(持股10%以下的关联机构)/向境外联属企业支付的股息、红利(持股10%以下的关联机构)”。
–持有10%以下份额的非关联投资基金份额的红利,应计入“322032–投资基金份额的股息、红利”。
–非关联公司之间非参与性优先股收益,应计入“322034¬–中长期债券利息”。
–持有非关联准公司、国际组织份额10%以下股权(份额)所获得的红利,应计入“322043–从准公司(持股10%以下)和国际组织(因份额投资)获得的红利、收益”。
322032 投资基金份额的股息、红利 投资基金份额的股息、红利 收入:指因持有境外非关联投资基金10%以下份额而获得的股息、红利收入。
支出:指向持有境内投资基金10%以下份额的境外非关联机构或个人投资者汇出股息、红利。
不包括:
–持有境外投资基金10%及以上的份额所获得的股息和红利,应计入“322011–从境外子公司等获得的股息、红利或利润”。
–向持有境内投资基金10%及以上的份额的境外投资者支付的股息和红利,应计入“322011–向境外母公司支付的股息、红利或利润”。
322033 短期债券利息 短期债券利息 收入:因持有非关联的非居民发行的短期债券(原始期限在一年及以下,如货币市场工具)而获得的利息收入。
支出:向持有境内机构发行的短期债券(原始期限在一年及以下,如货币市场工具)的非关联非居民机构和个人投资者支付的利息支出。
不包括:
–已实现的资本利得,如买卖差价收入等,应计入“7–证券投资”相应项下。
–境内外关联公司相互持有短期债券所获得的利息,应计入“32202–直接投资利息”的相应项下。
322034 中长期债券利息 中长期债券利息 收入:因持有非关联的非居民发行的中长期债券(原始期限在一年以上或为永久性债券)而获得的利息(息票)收入。
支出:向持有境内机构发行的中长期债券(原始期限在一年以上或为永久性债券)的非关联非居民机构和个人投资者支付的利息支出。
不包括:
–已实现的资本利得,如买卖差价收入等,应计入“7–证券投资”相应项下。
–境内外母/子公司、联属机构及关联机构相互持有中长期债券所获得的利息,应计入直接投资收益的相应项下。
32204 其他投资收益 指居民与非居民之间因持有准公司股权(持有表决权10%以下)或国际组织份额而获得的利润或红利,因存贷款等债权/债务产生的利息,以及保险人向被保人支付利息。
322041 存贷款利息 存贷款利息 收入:因在境外存款、向境外发放贷款、产生应收款、以及借出非货币黄金而获得的利息收入。
支出:因吸收非关联的非居民存款、向非居民借款、产生应付款以及借入非居民非货币黄金而支付的利息支出。
包括:
–存款利息。
–外国政府贷款利息、国外银行和其他金融机构贷款利息、企业及个人贷款利息、国际金融租赁利息、补偿贸易项下贷款利息。
–贸易双方因延收延付或预收预付而收到或支付的利息。
–非货币黄金借贷业务产生的利息。
不包括:
–境内外关联公司之间的存贷款利息及应付款利息,应计入“32202–直接投资利息”相应项下。
322042 保单持有人获得的红利和利息 向保单持有者支付的红利和利息 指保险机构、养老金和年金管理人以及标准化担保计划向保单持有者支付的红利和利息。
收入:保单持有人获得的红利和利息。
支出:向保单持有者支付的红利、利息。
322043 从准公司(持表决权10%以下)和国际组织(因份额投资)获得的红利、收益 向准公司(持股10%以下)和国际组织份额持有者(因份额投资)支付的红利、收益 准公司是一个非公司型企业,但在开展活动时,却类似一个独立于其所有者之外拥有自己账务和事务的实体,如合伙企业、信托等。
收入:从准公司(持表决权10%以下)和国际组织(因份额投资)获得的红利、收益。
支出:向准公司(持表决权10%以下)和国际组织份额持有者支付的红利、收益。
包括:
–持有10%以下表决权的居民(非居民)合伙人所获得的境外不动产经营利润。
322049 其他的其他投资收益 其他的其他投资收益 上述未提及的其他投资的收益。
323 其他初次收入 指产品和生产的税收和补贴收支,以及使用自然资源和土地的租金收支。
323010 使用自然资源的租金 使用自然资源的租金 自然资源包括土地、矿产权、林业权、水资源、渔业权、大气空间和电磁光谱。
收入:指我国居民将自然资源出租给非居民使用而获得的租金收入。
支出:我国居民因租用境外非居民的自然资源而支付的租金。
包括:
–使用土地提炼矿藏和其他地下资产以及捕鱼、林业和放牧权而收到或支付的款项。
不包括:
–自然资源租约的转让,应计入“522000–品牌、商标、契约和许可所有权等非生产非金融资产转让”。
323020 产品和生产的税收及补贴 产品和生产的税收及补贴 收入:我国海关、税务等行政主管机构从非居民获得的产品税和生产税收入,以及居民从非居民政府部门获得的产品和生产补贴收入。
支出:中国居民向外国政府支付的生产税和进口税支出,以及我国政府部门向非居民提供的产品和生产补贴支出。
包括:
–产品税收,如增值税、进口税、出口税和消费税等。
–生产税收,如工资税、建筑物和土地经常性税收和营业执照税等。

4, 二次收入(经常转移)

交易编码 收入项目 支出项目 说明
4 二次收入(经常转移) 指居民与非居民间的经常性转移,包括所有非资本转移的转移项目。经常性转移直接影响转移者和接受转移者的可支配收入水平,进而影响其货物和服务的消费。
421 捐赠和无偿援助
421010 个人间捐赠及无偿援助 个人间捐赠及无偿援助 指居民个人与非居民个人之间发生的捐赠及无偿援助。
包括:
–我国在境外工作一年(含)以上人员对境内其他居民个人的汇款。
不包括:
–受雇于非居民且在境外工作不足一年的短期人员的个人汇款,应计入“321000-职工报酬(工资、薪金和福利)”。
421020 政府、国际组织间捐赠及无偿援助(与固定资产无关) 政府、国际组织间捐赠及无偿援助(与固定资产无关) 收入:政府、国际组织接受与固定资产无关的捐赠或无偿援助。
支出:政府、国际组织向境外支付固定资产无关的捐赠或无偿援助。
包括:
–自然灾害之后政府间紧急无偿援助。
–成员国政府向国际组织支付的年度或其他定期缴款。
–国际组织对政府的政策性定期转移。
–政府或国际组织为支付技术援助人员的薪金而付出的款项。
421990 其他捐赠及无偿援助(与固定资产无关) 其他捐赠及无偿援助(与固定资产无关) 上述未提及的与固定资产无关的捐赠及无偿援助。
422000 非寿险保险赔偿 非寿险保险赔偿 指居民与非居民间与非寿险保险赔偿相关的收入和支出。
包括:
–意外险、健康险,海险、航空保险、其他交通险,火灾保险、其他财产损害保险,一般责任险,以及信用保险等赔偿。
423 社会保障
423010 社保缴款 社保缴款 指居民与非居民间与社会保险缴款(向政府控制并管理的社会公共福利计划或向受雇单位控制并管理的养老金福利计划进行缴款)相关的收入和支出。
不包括:
–雇主为雇员支付的社保缴款,应计入“321000-职工报酬(工资、薪金和福利)”。
423020 社保返还的福利 社保返还的福利 指居民与非居民间发放的社会公共福利及其他与雇员集体公共福利相关的收入和支出。
424000 其他二次收入(经常转移) 其他二次收入(经常转移) 指上述未提及的二次收入(经常转移)。
包括:
–对所得、财产等征收的经常性税收。含劳务所得税、持有金融资产所得税(包括利息、股息、及资本利得等)、财产税及特种许可费;以及因延迟支付该种税款而缴纳的罚款、违约金或利息。
–法庭或政府机构征收的罚金和罚款。
–与保险无关的赔偿。
–货物贸易的销售返利。
–博彩收支。指居民购买彩票或下赌注的支出和博彩赢利所获收入。
–除博彩、运动员奖励外的偶然性收支,如遗产、中奖、在国际的学术、文艺、发明等评比、比赛中的奖励收支。

5, 资本账户

交易编码 收入项目 支出项目 说明
5 资本账户 资本账户包括资本转移和非生产非金融资产的取得和处置。
521 资本转移 资本转移指与债务减免、与固定资产有关的捐赠及无偿援助、移民转移及其他金额较大且频率较低的转移项目。
521010 债务减免 债务减免 债权人减少或者免除债务人的还债金额。
521020 与固定资产有关的捐赠及无偿援助 与固定资产有关的捐赠及无偿援助 指与固定资产的购置、形成等有关的捐赠及无偿援助。
包括:
–投资捐赠,即与交易一方或双方获得或处置固定资产相关或以其为条件的现金转移。
不包括:
–直接投资者向其直接投资企业提供资本、设备,应计入直接投资股权交易。
521030 移民转移 移民转移 指个人从其他经济体迁移到本经济体所转移的自身资产或从本经济体迁移到其他经济体所转移的自身资产。
不包括:
–移民及其后代向其亲属等的跨境汇款,应计入“421—捐赠和无偿援助”相应项目。
521990 其他资本转移 其他资本转移 资本税及上述未提及的资本转移。
资本税包括:
–资本税。包括对居民(非居民)拥有的资产价值或资本净值不定期、偶尔征收的税金;
–资本转移税。包括对转移资产价值征收的税金。主要为遗产税(死亡税)和赠予税,包括对同一家庭健在成员之间为避免或尽量减少支付遗产税而进行的赠予所征收的税金。资产转移税不包括资产销售税。
522 非生产非金融资产转让 包括契约、租约、许可、营销资产和商誉的转让。
522000 品牌、商标、契约和许可所有权等非生产非金融资产转让 品牌、商标、契约和许可所有权等非生产非金融资产转让 指将品牌、商标、契约、租约和许可的所有权等非生产非金融资产进行转让,以及国际组织和使领馆土地买卖。
不包括:
–使用自然资源的租金,应计入“323010-使用自然资源的租金”。

6, 直接投资

交易编码 收入项目 支出项目 说明
6 直接投资 直接投资指一经济体居民投资者通过投资对另一经济体的居民企业实施管理上的控制或重要影响,包括一个经济体的居民从另一个经济体的居民实体中获得大于等于10%的普通股权或表决权(包括投资基金份额和其他权益,以下统称为股权)以及在此基础上发生的债权债务关系,也包括逆向投资和联属企业间的投资。
逆向投资:指直接投资者接受直接投资企业的投资,但总持股比例小于10%。
直接投资者(即母公司)指对另一经济实体施加控制或重大影响的实体。
接受投资的企业为直接投资企业,具体形式包括子公司(持股比例大于等于50%)、联营公司(持股比例大于等于10%、小于50%)、分支机构,以下将子公司、联营公司及分支机构统称为子公司。
联属企业是指直接或间接受到同一直接投资者的控制或影响的企业,但其中任何一个联属企业都不控制或影响另一联属企业(即相互之间持有股权小于10%)。
不包括:
–投资者拥有被投资企业的股权小于10%,且不属于逆向投资和联属企业的投资,应计入“7–证券投资及金融衍生工具”相应项下。
621 我国对境外直接投资 指我国境内直接投资者对境外直接投资企业大于等于10%的股权投资、境外直接投资企业对境内直接投资者小于10%的股权投资(逆向投资)以及在此基础上发生的债权债务关系,此处股权投资包括上市公司的流通股票或非上市公司股权。
包括:
–我国企业在境外工程地设立法人机构或非法人名义实体从事建筑工程和安装项目。非法人名义实体主要指在境外工程地未设立法人,但设有分支机构或项目办公室的建筑安装工程实施主体。
62101 投资资本金 指我国直接投资者对境外直接投资企业的股本投资,含逆向投资。
621011 因境外子公司清算、终止等撤资 新设境外子公司资本金汇出 收入:指我国境内直接投资者因境外直接投资企业清算、终止而对其进行的撤资。
支出:指我国境内直接投资者向新设立的境外直接投资企业注入资本金。
不包括:
–境外未设法人机构,而以分支机构及项目办公室的方式从事建筑工程和安装项目的收支。
621012 筹备资金撤回 筹备资金汇出 收入:我国境内直接投资者改变境外直接投资企业筹备计划而将前期汇出的资金撤回
支出:为筹备境外直接投资企业投入的先期资金。
621013 因境外子公司减资收回资金 对境外子公司增资 收入:我国直接投资者因境外投资企业减少注册资本金而撤回的资金。
支出:我国境内直接投资者因境外直接投资企业增加注册资本金而汇出的资金。
包括:
–中方减资前股权大于等于10%,发生减资后股权小于10%的交易。
–中方增资前股权小于10%,发生增资后股权大于等于10%的交易。
不包括:
–境外未设法人机构,而以设立分支机构及项目办公室的方式从事建筑工程和安装项目的收支。
621014 转让境外子公司股权收入 购买转让的境外企业股权 收入:我国直接投资者卖出其在境外投资企业中所持有股权的收入。
支出:我国直接投资者购买境外投资者持有的境外企业股权的支出。
包括:
–中方转出股权前,中方的股权大于等于10%,转出股权后,持股小于10%的交易。
–中方购买股权前,若中方的股权小于10%,购买股权后持股大于等于10%的交易。
621015 接受境外子公司的股权投资(逆向股权投资) 境外子公司撤回对境内母公司的股权投资(逆向股权投资的撤回) 收入:境外直接投资企业因对我国境内直接投资者进行股权投资而汇入的资金,投资后持股比例小于10%。
支出:境外直接投资企业因撤回对我国境内直接投资者的股权投资而汇出的资金,撤资前股权投资比例小于10%。
不包括:
–该笔交易使境外直接投资企业对我国境内直接投资者的投资所持股权大于等于10%时,则该笔交易应计入“622–外国来华直接投资”相应项下。
621016 非法人投资款撤回 非法人投资款汇出 收入:非法人名义实体汇回境内的不超出原投资额的收入。
支出:境内居民企业向境外非法人名义实体投资,或由境内居民企业在第三国和当地采购的用于境外非法人名义实体开展建筑工程的设备和物资。
62102 借贷及其他往来 指我国境内直接投资者、境外直接投资企业之间除资本金之外的资金借贷和其他往来。
包括:
–境内直接投资者向境外直接投资企业提供的贷款。
–境内直接投资者收回向境外直接投资企业提供的贷款。
621021 收回对境外子公司的贷款及其他往来 对境外子公司的贷款及其他往来 指境内直接投资者向境外投资企业的贷款及其他往来,或者收回境外投资企业的贷款及其他往来。
包括:
–资金的借贷,如应收应付款、跨国公司资金调拨等。
不包括:
–由境内直接投资者作担保而由境内其他居民向境外子公司的贷款应计入“821020–向境外提供贷款”。
621022 接受境外子公司的贷款及其他往来(逆向贷款投资) 偿还境外子公司的贷款及其他往来(逆向投资的撤回) 在境外直接投资企业持有境内直接投资者小于10%的股权的前提下,境内直接投资者接受境外投资企业的贷款及其他往来(逆向贷款投资),或者偿还境外子公司的贷款及其他往来(逆向投资的撤回)。
621030 出售境外不动产收入 购买境外不动产的支出 不动产包含建筑物和相关自然资源。
收入:境内居民出售境外不动产所有权所得汇回。
支出:境内居民购买境外不动产所有权的款项汇出。
包括:
–出售或购买境外自用或租给他人使用的不动产。
–购房的定金。
不包括:
–购房的中介服务费,应计入“228990—上述未提及的其他商业服务”。
–购房的契税费,应计入“521990-其他资本转移”。
621040 收益再投资支出 我国直接投资者将从境外直接投资企业获得的利润在境外进行再投资。
621050 用境内股权交换境外股权 用境内股权交换境外股权 境内公司用境内股权换取境外公司股权。
621060 实物投资 实物投资 合资合作设备出口不收汇。
621070 无形资产投资 无形资产投资 境内投资人用拥有的专利权、非专利技术、商标权、土地使用权等在境外进行的投资。
622 外国来华直接投资 指外国投资者对境内企业大于等于10%的股权投资、境内直接投资企业对境外直接投资者小于10%的股权投资(逆向投资)以及在此基础上发生的债权债务关系,此处股权投资包括购买上市公司的流通股票或非上市公司股权。
包括:
–中外合资企业、外商独资企业和中外合作企业。
–外国企业在境内工程地设立法人机构或非法人名义实体从事建筑工程和安装项目。
62201 投资资本金 指境外直接投资者对境内直接投资企业的股本投资,含逆向投资。
622011 新设外商投资企业资本金汇入 因外商投资企业清算、终止等撤资 收入:境外直接投资者向境内新设的直接投资企业注入资本金。
支出:境外直接投资者因外商投资企业清算、终止而撤资。
不包括:
–非法人投资款资金收付应计入“622016-非法人投资款汇入/撤出”。
622012 筹备资金汇入 筹备资金撤出 收入:为筹备外商直接投资企业投入的先期资金。
支出:改变外商投资企业筹备计划而撤回筹备资金。
622013 外商投资企业增资 外商投资企业减资 收入:境外直接投资者因外商投资企业增加注册资本金而汇入的资金。
支出:境外直接投资者因外商投资企业减少注册资本金而汇出的资金。
622014 转让境内企业股权 购买转让的外商投资企业股权 收入:向外国直接投资者转让境内企业中所持有股权的收入。
支出:中方投资者购买境内外商投资企业的股权的支出。
622015 对境外母公司的股权投资的撤回(逆向股权投资的撤回) 外商投资企业对境外母公司的股权投资(逆向股权投资) 收入:外商投资企业撤回对其境外母公司的股权投资而汇回的资金,撤资前股权比例小于10%。
支出:外商投资企业对其境外母公司进行股权投资而汇出的资金,投资后股权比例仍小于10%。
不包括:
–交易使外商投资企业对其境外母公司的股权投资大于等于10%,应计入我国对外直接投资项下。
622016 非法人投资款汇入 非法人投资款撤出 收入:境内名义实体收到境外投资款或工程项目款,境内名义实体主要指在境内未设立法人,但设有分支机构及项目办公室的建筑安装工程实施主体。
支出:境内名义实体向境外汇出不超出原投资额的款项。
62202 借贷及其他往来 包括境外直接投资者和外商投资企业之间各类资金借贷和其他往来。
包括:
–境外母公司向外商投资企业提供的贷款以及外商投资企业偿还境外母公司贷款。
–外商投资企业向境外母公司提供的贷款以及境外母公司偿还外商投资企业贷款。
622021 接受境外母公司的贷款及其他往来 偿还境外母公司的贷款及其他往来 指境外直接投资者向外商直接投资企业的贷款及其他往来,或者收回外商投资企业的贷款及其他往来。
包括:
–资金的借贷、应收应付款、跨国公司资金调拨等。
不包括:
–由境外直接投资者作担保而从境外其他来源取得的贷款,应计入“822020–获得境外贷款”。
622022 收回对境外母公司的贷款及其他往来(逆向贷款投资的撤回) 对境外母公司的贷款及其他往来(逆向贷款投资) 在外商直接投资企业持有其境外母公司小于10%的股权的前提下,外商投资企业向境外母公司提供贷款或收回贷款。
622030 向非居民出售境内不动产收入 从非居民购买境内不动产支出 收入:向非居民出售境内不动产收到款项。
支出:从非居民购买境内不动产向非居民支付款项。
包括:
–出售或购买境内自用或租给他人使用的不动产。
–购房的定金。
不包括:
–购房的中介服务费,应计入“228990—上述未提及的其他商业服务”。
–购房的契税费,应计入“521990-其他资本转移”。
622040 外商投资企业外方收益再投资收入 境内直接投资企业获得的利润在境内进行再投资。
622050 用境外股权交换境内股权 用境外股权交换境内股权 境外公司用境外股权换取境内公司股权。
622060 实物投资 实物投资 除以投资资本金购买设备以外的纯实物投资,合资合作设备进口不收汇。
622070 无形资产投资 无形资产投资 境外投资人用拥有的专利权、非专利技术、商标权、土地使用权等在境内进行的投资。
623 联属企业之间的投资联属企业之间的投资 指境内外联属企业之间的股权投资以及其他债权债务关系,且投资后相互持股比例仍小于10%。
62301 投资资本金 指联属企业之间的股本投资。
623011 撤回对境外联属企业的股权投资 对境外联属企业的股权投资 收入:撤回对境外联属企业股权投资资金汇回。
支出:对境外联属企业股权投资资金汇出。
623012 接受境外联属企业的股权投资 境外联属企业撤回对境内的股权投资 收入:接受境外联属企业股权投资资金汇入
支出:境外联属企业撤回股权投资资金汇出。
62302 借贷及其他往来 指境内外联属企业之间除资本金之外的各类资金借贷和其他往来。
包括:
–境内外联属企业提供的贷款。
–境内外联属企业贷款的收回。
623021 收回对境外联属企业的贷款及其他往来 向境外联属企业提供贷款及其他债权 指境内企业向境外联属企业的贷款及其他往来,或者收回境外联属企业的贷款及其他往来。
包括:
–资金的借贷、应收应付款、跨国公司资金调拨等。
不包括:
–由境内联属企业作担保而从其他来源取得的贷款。
623022 接受境外联属企业的贷款及其他往来 偿还境外联属企业贷款及其他债务 指境外联属企业向境内企业的贷款及其他往来,或者收回境内企业的贷款及其他往来。
包括:
–资金的借贷、应收应付款、跨国公司资金调拨等。
不包括:
–由境外联属企业作担保而从境外其他来源取得的贷款,应计入“822020–获得境外贷款”。

7, 证券投资及金融衍生工具

交易编码 收入项目 支出项目 说明
7 证券投资及金融衍生工具 证券投资是在有组织市场或其他类型金融市场交易证券。证券是具有可流通性的债务和股权工具。
不包括:
–原持有股权或投资基金份额<10%,经该股权交易使股权持有者的股权比例增加到≥10%,则该笔交易不属于证券投资,应计入直接投资相应项下。
–已持有股权或投资基金份额≥10%,则该笔交易无论是增持或者减持,均不属于证券投资,应计入直接投资相应项下。
–持有股权比例虽然<10%,但与被投资企业直接或间接受同一直接投资者控制,且相互持股比例低于10%的,不属于证券投资,纳入直接投资统计,应计入“62301–投资资本金”相应项下。
–直接投资企业拥有其直接或间接直接投资者<10%股权,应计入直接投资相应项下。
金融衍生工具概念参见项目724–金融衍生工具。
721 股本
721010 卖出境外机构境外发行的股票或股权 投资境外机构境外发行的股票或股权 收入包括:
–居民卖出其持有的境外机构境外发行的股票或其他形式的股权。
–股权激励项下居民雇员卖出其持有的境外股票或其他形式的股权。
支出包括:
–居民买入境外机构境外发行的股票或其他形式的股权。
–居民雇员执行雇员期权买入境外股票或其他形式的股权。
721020 卖出境内机构在境外发行的股票或股权 投资境内机构在境外发行的股票或股权 收入包括:
–居民卖出境内机构在境外发行的股票或其他形式的股权。
–股权激励项下居民雇员卖出其持有的境内机构境外发行股票。
支出包括:
–居民买入境内机构在境外发行的股票或其他形式的股权。
–居民雇员执行雇员期权买入境内机构境外发行的股票或股权。
721030 在境外市场发行股票或股权 境内公司回购境外发行的股票或股权 收入包括:
–居民在境外资本市场发行股票或其他形式的股权。
支出包括:
–境内公司回购本公司境外发行的股票或其他形式的股权。
721040 非居民买入境内股票或股权 非居民卖出境内股票或股权 收入包括:
–非居民买入境内股票或其他形式的股权。
–非居民雇员执行雇员期权买入境内股票或其他形式的股权。
支出包括:
–非居民卖出境内股票或其他形式的股权。
–股权激励项下非居民雇员卖出其持有的境内股票或其他形式的股权。
721050 非居民回购境内股票或股权 非居民发行境内股票或股权 收入包括:
–非居民回购其境内发行的股票或其他形式的股权。
支出包括:
–非居民在境内发行股票或其他形式的股权。
722 投资基金
722010 赎回境外投资基金 申购境外投资基金 收入包括:
–居民赎回(卖出)境外投资基金份额。
支出包括:
–居民申购(买入)境外投资基金份额。
722020 募集境外投资基金 清算境外投资基金 收入包括:
–居民基金管理人在境外募集投资基金。
支出包括:
–居民基金管理人清算境外募集的投资。
722030 非居民申购境内投资基金 非居民赎回境内投资基金 收入包括:
–非居民申购(买入)境内投资基金份额。
支出包括:
–非居民赎回(卖出)境内投资基金份额。
722040 非居民清算境内募集的投资基金 非居民境内募集投资基金 收入包括:
–非居民基金管理人清算其在境内募集的投资基金。
支出包括:
–非居民基金管理人在境内募集投资基金。
723 债券交易
72301 短期债券交易
723011 卖出境外短期债券 买入境外短期债券 收入包括:
–居民卖出其持有的境外短期债券。
支出包括:
–居民买入境外短期债券。
723012 发行境外短期债券 偿付境外短期债券 收入包括:
–居民在境外发行短期债券。
支出包括:
–居民偿付其在境外发行的短期债券。
723013 非居民买入境内短期债券 非居民卖出境内短期债券 收入包括:
–非居民买入境内短期债券。
支出包括:
–非居民卖出境内短期债券。
723014 非居民偿付境内短期债券 非居民发行境内短期债券 收入包括:
–非居民偿付其在境内发行的短期债券。
支出包括:
–非居民在境内发行短期债券。
72302 中长期债券交易
723021 卖出境外中长期债券 买入境外中长期债券 收入包括:
–居民卖出其持有的境外中长期债券。
支出包括:
–居民买入境外中长期债券。
723022 发行境外中长期债券 偿付境外中长期债券 收入包括:
–居民在境外发行中长期债券。
支出包括:
–居民偿付自身发行的境外中长期债券。
723023 非居民买入境内中长期债券 非居民卖出境内中长期债券 收入包括:
–非居民买入境内中长期债券。
支出包括:
–非居民卖出境内中长期债券。
723024 非居民偿付境内中长期债券 非居民发行境内中长期债券 收入包括:
–非居民偿付其在境内发行的中长期债券。
支出包括:
–非居民在境内发行中长期债券。
724 金融衍生工具 指与另一个特定的金融工具、指标和商品挂钩,通过这种挂钩,可以在金融市场上对特定金融风险本身进行交易的金融工具。
724000 因金融衍生工具交易引起的收入 因金融衍生工具交易引起的支出 包括:
–新签约期权交易收取/支付期权费。
–平仓未到期金融衍生工具发生的收支。
–追加保证金收支。即因投资者持有衍生产品,在逐日盯市下发生浮动盈亏,用以弥补亏损或增加担保的追加的那部分保证金,区别于初始(最低)保证金。
–金融衍生工具到期履约引起的收支。在现金结算(差额结算)情况下,计入金融衍生工具到期履约全部的现金收支;在全额结算情况下,应按基础项目市场价格与衍生工具合约履约价格之间收益乘以数量计入。
不包括:
–金融衍生工具到期履约时,若全额结算,则基础项目交易(如股票期权履约时购买的股票本身)产生的收支应计入对应基础项目相应项下。

8, 其他投资

交易编码 收入项目 支出项目 说明
8 其他投资 包括其他股权、货币和存款、贷款、保险、养老金和标准化担保计划、贸易信贷及预付款、其他应收/应付账款以及特别提款权分配等。
821 资产
82101 资产-人寿保险和年金权益
821010 资产-人寿保险和年金权益 指在保单到期或约定期限到期时,非居民保险人向中国居民支付的人寿保险福利、年金等。
不包括:
–保险人向被保险人支付的利息、红利,应计入“322042—保单持有人获得的红利和利息/向保单持有者支付的红利和利息”。
82102 对外贷款的收回 向境外提供贷款 对境外提供贷款或收回贷款本金。包括贸易融资、其他贷款(包括抵押贷款)、回购协议、金融租赁等。
821020 对外贷款的收回 向境外提供贷款 对境外提供贷款或收回贷款本金。
包括:
–政府贷款本金的收回/向境外提供政府贷款。
–对外非政府贷款本金的收回/向境外提供非政府贷款。
–国际金融租赁融资本金的收回/向境外提供国际金融租赁。
–收回/提供其他贷款,如回购协议下有价证券的买入和再卖出,补偿贸易项下以现汇偿还的债权本金。
不包括:
–母/子公司、附属及关联方之间的贷款,应计入直接投资相应项下。
82103 收回或调回存放境外存款本金 存放境外存款 居民在境外存款,收回或调回存放境外存款本金。
821030 收回或调回存放境外存款本金 存放境外存款 我国各级政府、非银行金融机构、企业及个人存放在境外的各种形式的存款,包括信托投资(居民将资金以信托形式委托非居民投资、营运)。
不包括:
–纪念硬币、未流通的纸币。
–可转让存单计入在“7-证券投资”项下。
82104 贸易信贷
821041 出口延期应收款 出口延期应收款 境内出口商向境外进口商提供的延期应收款。
821042 进口预付货款 进口预付货款 境内进口商向境外出口商预先支付的货款。
82199 其他的其他投资资产
821990 其他债权 其他债权 上述未包含的其他债权。
822 负债
82201 负债-人寿保险和年金权益
822010 负债-人寿保险和年金权益 负债-人寿保险和年金权益 指在保单到期或约定期限到期时,中国居民保险人向非居民支付的人寿保险福利、年金等。
不包括:
–保险人向被保险人支付的利息、红利,应计入“322042保单持有人获得的红利和利息/向保单持有者支付的红利和利息”。
82202 获得境外贷款 偿还境外贷款 获得或偿还境外提供的贷款本金。包括贸易融资、其他贷款(包括抵押贷款)、回购协议、使用基金组织的信贷或贷款、金融租赁等。
822020 获得境外贷款 偿还境外贷款 从境外银行、其他金融机构及银团组织(包括中资金融机构海外分支机构)获得/偿还贷款。
包括:
–获得/偿还外国政府贷款本金。
–获得/偿还国际金融组织贷款本金。
–获得/偿还境外银行及其他金融机构贷款本金。
–获得/偿还境外企业及个人借款本金。
–获得买方信贷本金/偿还买方信贷本金。
–国际金融租赁融资/偿还国际金融租赁本金。
–获得/偿还其他贷款本金,如补偿贸易项下以现汇偿还的债权本金,回购协议项下的有价证券的卖出和再买入。
不包括:
–母/子公司、附属及关联方之间的贷款,应计入直接投资相应项下。
82203 货币和存款 境外存入款项调出
822030 境外存入款项 境外存入款项调出 非居民账户收支除另有规定外记录在本项。
82204 贸易信贷
822041 进口延期应付款 进口延期应付款 境外出口商向境内进口商提供的延期应付款。
822042 出口预收货款 出口预收货款 境外进口商向境内出口商预付的货款。
82205 实物外债
822050 实物外债 实物外债 以实物形式作为外债提款方式进行登记的外债。
82299 其他的其他投资负债
822990 借入其他债务 偿还其他债务 上述分类中未提及的债务借入或偿还。

9, 境内外汇收支交易及其他特殊交易

交易编码 收入项目 支出项目 说明
9 境内外汇收支交易及其他特殊交易
921 贸易
921010 转入出口押汇 偿还出口押汇 境内银行和境内企业之间出口押汇项下外汇资金的转入或偿还。
921020 转入进口押汇 偿还进口押汇 境内银行和境内企业之间进口押汇项下外汇资金的转入或偿还。
921030 代理进出口收入 代理进出口支出 境内企业之间代理进出口项下外汇资金的收入或支出。
922 收益
922010 外汇存款利息收入 指机构(个人)在银行外汇存款的利息收入。
922090 其他 其他 上述未提及的收益。
923 境内投资
923010 代外国投资者划入投资款 代外国投资者划出投资款 境内居民机构或境内居民个人将属于境外居民的资金(含人民币)转做该境外居民对境内子公司的投资款,包括:
–境外汇入保证金专用账户资金向外商投资企业外汇资本金账户划转。
–境外汇入保证金专用账户资金向境内个人境内资产变现账户、境外资产变现账户划转。
–外商投资企业将属于外国投资者的外汇或人民币合法所得向该境外投资者所投资其他外商投资企业划转。
923020 境内投资者投资款划入 境内投资者投资款划出 境内居民机构或境内居民个人以外汇方式向其境内子公司投入的资本金,或以外汇方式向其他境内投资者支付股权转让款,包括:
–境内投资性公司外汇资本金账户、外债专户、经常项目外汇账户资金向其境内子公司或出让股权的其他境内投资者境内再投资专用账户划转。
–外商投资企业外汇资本金账户、经常项目外汇账户资金向其境内子公司或出让股权的其他境内投资者境内再投资专用账户划转。
–境内机构或境内个人境内资产变现账户、境外资产变现账户、经常项目外汇账户资金向其境内子公司或出让股权的其他境内投资者境内再投资专用账户划转。
–境内机构或境内个人再投资专用账户向其境内子公司或出让股权的其他境内投资者境内再投资专用账户划转。
–境内机构经常项目外汇账户资金向其境内子公司或出让股权的其他境内投资者境内再投资专用账户划转。
–境内再投资专用账户向前述账户的投资款退款。
–境内投资者其他境内外汇投资划转情况。
923090 其他境内投资收入 其他境内投资支出 其他境内投资收入/支出。
924 国内外汇贷款
924010 获得国内银行及其他金融机构外汇贷款本金 偿还国内银行及其他金融机构外汇贷款本金 境内居民机构或个人用境内账户资金偿还国内银行及其他金融机构外汇贷款本金。
924020 获得委托贷款本金 偿还委托贷款本金 境内居民机构或个人用境内账户资金偿还委托贷款本金。
924030 划回委托贷款 划出委托贷款 划回/划出委托贷款。
924090 获得其他贷款 偿还其他贷款 境内居民机构或个人用境内账户资金偿还其他贷款。
925 个人资金划转
925010 个人直系亲属账户资金转入 个人直系亲属账户资金转出 境内居民个人与本人直系亲属账户之间的资金划转。
925020 个人经营性资金转入 个人经营性资金转出 境内居民个人结算账户资金向本人储蓄账户转入/转出资金。
929 其他
929010 同名账户资金转入 同名账户资金转出 指同一企业(个人)同一性质账户之间的资金划转。
929020 收到因或有负债交易产生的收入 收到因或有负债交易产生的收入。
929030 存入外币现钞 提取外币现钞 境内居民机构(个人)向外汇账户内存入外币现钞;机构(个人)购汇或从外汇账户内提取的外币现钞。
929040 存入保证金 划出保证金 境内居民机构或居民个人以外汇方式缴存竞标等交易保证金,及交易结束退回保证金。包括:
–从外汇资本金账户、境内资产变现账户、境外资产变现账户、再投资专用账户、外债账户及其他外汇账户向境内划入保证金专用账户划转。
–从境内划入保证金专用账户向外汇资本金账户、境内资产变现账户、境外资产变现账户、再投资专用账户、外债账户及其他外汇账户划转。
929050 总分公司之间划转的外汇收入 总分公司之间划转的外汇支出 根据境内外汇划转规定及其他规定,境内机构总分公司之间在无直接交易背景下的境内外汇资金划转,如海运总公司对所属分公司用于船舶营运所需备用金的划拨。
929060 企业集团公司与境内其他成员企业之间经常项目外汇资金集中管理项下收入 企业集团公司与境内其他成员企业之间经常项目外汇资金集中管理项下支出 因企业集团开展经常项目外汇资金集中管理或内部结售汇业务而发生的在企业集团公司与境内其他成员企业之间的外汇资金收付,不包括因企业集团与境内成员企业之间有直接交易合同(如总分包划转)的境内外汇划转。
929070 结汇待支付账户(视同外汇账户管理)资金划出 结汇待支付账户内人民币资金用于境内支付或购汇用于境内支付。
929080 因跨境电子商务引起支付机构境内外汇收入/支出 因跨境电子商务引起支付机构境内外汇支出 跨境电子商务外汇支付业务中,支付机构与个人或商户之间的外汇资金划转。其中,个人或商户向支付机构因跨境电子商务外汇支付业务产生的境内划转应计入“因跨境电子商务引起支付机构境内外汇收入”;支付机构向个人或商户因跨境电子商务外汇支付业务产生的境内划转应计入“因跨境电子商务引起支付机构境内外汇支出”。
929090 其他 其他 上述未提及的境内外汇收支。
999998 无实际资金收付的轧差结算 无实际资金收付的轧差结算 指经批准允许轧差收付且收付金额为零的涉外收支交易。
不包括:
–金融衍生工具资金收付应计入“724000——因金融衍生工具交易引起的收入/支出”。
999999 有实际资金收付的集中或轧差结算 有实际资金收付的集中或轧差结算 指经批准允许集中收付或轧差收付且金额不为零的涉外收支交易。
不包括:
–金融衍生工具资金收付应计入“724000——因金融衍生工具交易引起的收入/支出”。

本文介绍了跨境贸易的交易编码的详细定义,作为一个开始,有难度、但也有明确的目标。更多的目的是让自己能多看几遍,有深刻的印象。接下来,就是把每一项业务熟悉。新的开始,新的机会!

转载请注明出处:
http://blog.fens.me/china-fx-txcode

打赏作者

R语言实现聚类kmeans

R的极客理想系列文章,涵盖了R的思想,使用,工具,创新等的一系列要点,以我个人的学习和体验去诠释R的强大。

R语言作为统计学一门语言,一直在小众领域闪耀着光芒。直到大数据的爆发,R语言变成了一门炙手可热的数据分析的利器。随着越来越多的工程背景的人的加入,R语言的社区在迅速扩大成长。现在已不仅仅是统计领域,教育,银行,电商,互联网….都在使用R语言。

要成为有理想的极客,我们不能停留在语法上,要掌握牢固的数学,概率,统计知识,同时还要有创新精神,把R语言发挥到各个领域。让我们一起动起来吧,开始R的极客理想。

关于作者:

  • 张丹(Conan), 程序员/Quant: Java,R,Nodejs
  • blog: http://blog.fens.me
  • email: bsspirit@gmail.com

转载请注明出处:
http://blog.fens.me/r-cluster-kmeans

前言

聚类属于无监督学习中的一种方法,k-means作为数据挖掘的十大算法之一,是一种最广泛使用的聚类算法。我们使用聚类算法将数据集的点,分到特定的组中,同一组的数据点具有相似的特征,而不同类中的数据点特征差异很大。PAM是对k-means的一种改进算法,能降低异常值对于聚类效果的影响。

聚类可以帮助我们认识未知的数据,发现新的规律。

目录

  1. k-means实现
  2. PAM实现
  3. 可视化和段剖面图

1. k-means实现

k-means算法,是一种最广泛使用的聚类算法。k-means以k作为参数,把数据分为k个组,通过迭代计算过程,将各个分组内的所有数据样本的均值作为该类的中心点,使得组内数据具有较高的相似度,而组间的相似度最低。

k-means工作原理:

  1. 初始化数据,选择k个对象作为中心点。
  2. 遍历整个数据集,计算每个点与每个中心点的距离,将它分配给距离中心最近的组。
  3. 重新计算每个组的平均值,作为新的聚类中心。
  4. 上面2-3步,过程不断重复,直到函数收敛,不再新的分组情况出现。

k-means聚类,适用于连续型数据集。在计算数据样本之间的距离时,通常使用欧式距离作为相似性度量。k-means支持多种距离计算,还包括maximum, manhattan, pearson, correlation, spearman, kendall等。各种的距离算法的介绍,请参考文章R语言实现46种距离算法

1.1 kmeans()函数实现

在R语言中,我们可以直接调用系统中自带的kmeans()函数,就可以实现k-means的聚类。同时,有很多第三方算法包也提供了k-means的计算函数。当我们需要使用kmeans算法,可以使用第三方扩展的包,比如flexclust, amap等包。

本文的系统环境为:

  • Win10 64bit
  • R: 3.4.4 x86_64-w64-mingw32

接下来,让我们做一个k-means聚类的例子。首先,创建数据集。

# 创建数据集
> set.seed(0)
> df <- rbind(matrix(rnorm(100, 0.5, 4.5), ncol = 2),
+             matrix(rnorm(100, 0.5, 0.1), ncol = 2))
> colnames(df) <- c("x", "y")
> head(df)
              x          y
[1,]  6.1832943  1.6976181
[2,] -0.9680501 -1.1951622
[3,]  6.4840967 11.4861408
[4,]  6.2259319 -3.0790260
[5,]  2.3658865  0.2530514
[6,] -6.4297752  1.6256360

使用stats::kmeans()函数,进行聚类。


> cl <- kmeans(df,2); cl
K-means clustering with 2 clusters of sizes 14, 86

Cluster means:                   # 中心点坐标
          x         y
1  5.821526 2.7343127
2 -0.315946 0.1992429

Clustering vector:               # 分组的索引
  [1] 1 2 1 1 2 2 2 2 2 1 1 2 2 2 2 2 2 2 2 2 2 2 2 1 2 1 1 2 2 2 2 2 2 2 2 1 1 2 1 2 1 2 2 2 2 2 2 1 1 2
 [51] 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2

Within cluster sum of squares by cluster:   
[1] 316.0216 716.4009                       # withinss,分组内平方和  
 (between_SS / total_SS =  34.0 %)          # 组间的平方和/总平方和,用于衡量点聚集程度

Available components:            # 对象属性
[1] "cluster"      "centers"      "totss"        "withinss"     "tot.withinss" "betweenss"   
[7] "size"         "iter"         "ifault"      

# 查看数据分组情况,第1组86个,第2组14个
> cl$size
[1] 86 14

对象属性解读:

  • cluster,每个点的分组
  • centers,聚类的中心点坐标
  • totss,总平方和
  • withinss,每个分组内的平方和
  • tot.withinss,分组总和,sum(withinss)
  • betweenss,组间的平方和,totss – tot.withinss
  • size,每个组中的数据点数量
  • iter,迭代次数。
  • ifault,可能有问题的指标

1.2 kcca()函数实现
我们再使用flexclust::kcca()函数,进行聚类。


# 安装flexclust包
> # install.packages("flexclust")
> library(flexclust)

# 进行聚类
> clk<-kcca(df,k=2);clk
kcca object of family ‘kmeans’ 

call:
kcca(x = df, k = 2)

cluster sizes:  # 聚类的分组大小
 1  2 
84 16 

# 聚类的中心
> clk@centers
              x         y
[1,] -0.3976465 0.2015319
[2,]  5.4832702 2.4054118

# 查看聚类的概览信息
> summary(clk)
kcca object of family ‘kmeans’ 

call:
kcca(x = df, k = 2)

cluster info:         # 每个组的基本信息,包括分组数量,平均距离、最大距离、分割值
  size  av_dist max_dist separation
1   84 2.102458 9.748136   3.368939
2   16 3.972920 9.576635   3.189891

convergence after 5 iterations                   # 5次迭代
sum of within cluster distances: 240.1732        # 聚类距离之和

我们比较2个不同包的k-means算法,所得到的分组数据都是一样的,中心点位置略有一点偏差。接下来,我们可以把聚类画图。

> plot(df, col = cl$cluster, main="Kmeans Cluster")
> points(cl$centers, col = 1:3, pch = 10, cex = 4) # 画出kmeans()函数效果

从上图中看到k-means的总分2组,每个组的中心点分别用红色十字圆圈和黑色十字圆圈表示,为组内的所有数据样本的均值。再叠加上kcca()函数聚类后的中心点画图。

> points(clk@centers, col = 3:4, pch = 10, cex = 4)  # 画出kcca()函数效果


新的中心点,分别用别用绿色十字圆圈和蓝色十字圆圈表示。虽然我们使用了相同的算法,分组个数也相同,但中心点还有一些不同的。

这里其实就要对聚类的稳定性进行判断了,有可能是聚类迭代次数过少,就会出现不同的聚类结果,就需要增加迭代次数,达到每次计算结果是一致的。也有可能是因为不同的包,实现的代码有所区别导致的。

k-means算法,也有一些缺点就是对于孤立点是敏感的,会被一些极端值影响聚类的效果。一种改进的算法是PAM,用于解决这个问题。PAM不使用分组平均值作为计算的参照点,而是直接使用每个组内最中心的对象作为中心点。

2. PAM实现

PAM(Partitioning Around Medoids),又叫k-medoids,它可以将数据分组为k个组,k为数量是要事前定义的。PAM与k-means一样,找到距离中心点最小点组成同一类。PAM对噪声和异常值更具鲁棒性,该算法的目标是最小化对象与其最接近的所选对象的平均差异。PAM可以支持混合的数据类型,不仅限于连续变量。

PAM算法分为两个阶段:

  1. 第1阶段BUILD,为初始集合S选择k个对象的集合。
  2. 第2阶段SWAP,尝试用未选择的对象,交换选定的中心点,来提高聚类的质量。

PAM的工作原理:

  1. 初始化数据集,选择k个对象作为中心。
  2. 遍历数据点,把每个数据点关联到最近中心点m。
  3. 随机选择一个非中心对象,与中心对象交换,计算交换后的距离成本
  4. 如果总成本增加,则撤销交换的动作。
  5. 上面2-4步,过程不断重复,直到函数收敛,中心不再改变为止。

优点与缺点:

  • 消除了k-means算法对于孤立点的敏感性。
  • 比k-means的计算的复杂度要高。
  • 与k-means一样,必须设置k的值。
  • 对小的数据集非常有效,对大数据集效率不高。

在R语言中,我们可以通过cluster包来使用pam算法函数。cluster包的安装很简单,一条命令就安装完了。


> install.packages("cluster")
> library(cluster)

pam()函数定义:


pam(x, k, diss = inherits(x, "dist"), metric = "euclidean",
    medoids = NULL, stand = FALSE, cluster.only = FALSE,
    do.swap = TRUE,
    keep.diss = !diss && !cluster.only && n < 100,
    keep.data = !diss && !cluster.only,
    pamonce = FALSE, trace.lev = 0)

参数列表:

  • x,数据框或矩阵,允许有空值(NA)
  • k,设置分组数量
  • diss,为TRUE时,x为距离矩阵;为FALSE时,x是变量矩阵。默认为FALSE
  • metric,设置距离算法,默认为euclidean,距离矩阵忽略此项
  • medoids,指定初始的中心,默认为不指定。
  • stand,为TRUE时进行标准化,距离矩阵忽略此项。
  • cluster.only,为TRUE时,仅计算聚类结果,默认为FALSE
  • do.swap,是否进行中心点交换,默认为TRUE;对于超大的数据集,可以不进行交换。
  • keep.diss,是否保存距离矩阵数据
  • keep.data,是否保存原始数据
  • pamonce,一种加速算法,接受值为TRUE,FALSE,0,1,2
  • trace.lev,日志打印,默认为0,不打印

我们使用上面已创建好的数据集df,进行pam聚类,设置k=2。

> kclus <- pam(df,2)

# 查看kclus对象
> kclus
Medoids:                                     # 中心点
     ID         x         y
[1,] 27 5.3859621 1.1469717
[2,] 89 0.4130217 0.4798659

Clustering vector:                           # 分组
  [1] 1 2 1 1 2 2 2 2 2 1 1 2 2 2 2 2 2 2 2 2 2 2 2 1 2 1 1 2 2 2 2 2 2 2 1 1 1 2 1 2 1 2 2 2 2 2 2 1 1 2
 [51] 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2

Objective function:                          # 目标函数的局部最小值
   build     swap                           
2.126918 2.124185 

Available components:                        # 聚类对象的属性
 [1] "medoids"    "id.med"     "clustering" "objective"  "isolation"  "clusinfo"   "silinfo"   
 [8] "diss"       "call"       "data"      

> kclus$clusinfo        # 聚类的分组数量,每个组的平均距离、最大距离、分割值
     size  max_diss  av_diss diameter separation
[1,]   15 10.397323 4.033095 17.35984   1.556862
[2,]   85  9.987604 1.787318 15.83646   1.556862

属性解读:

  • medoids,中心点的数据值
  • id.med,中心点的索引
  • clustering,每个点的分组
  • objective,目标函数的局部最小值
  • isolation,孤立的聚类(用L或L*表示)
  • clusinfo,每个组的基本信息
  • silinfo,存储各观测所属的类、其邻居类以及轮宽(silhouette)值
  • diss,不相似度
  • call,执行函数和参数
  • data,原始数据集

把聚类画图输出。

# 画图
> plot(df, col = kclus$clustering, main="Kmedoids Cluster")
> points(kclus$medoids, col = 1:3, pch = 10, cex = 4)

图中,PAM聚类后分为2组,红色一组,黑色一组,用十字圆圈表示2个中心点,可以清晰地看到中心点就是数据点。

我们可以在开始计算时,设置聚类的中心点,为索引1,2坐标点,打印聚类的日志,查看计算过程。


# 设置聚类的中心为1,2
> kclus2<-pam(df,2,medoids=c(1,2),trace.lev=20)
C pam(): computing 4951 dissimilarities from  100 x 2  matrix: [Ok]
pam()'s bswap(*, s=21.837, pamonce=0): medoids given
  after build: medoids are   1   2
  and min.dist dysma[1:n] are
      0      0   9.79   4.78   3.63   6.15   5.23  0.929   8.44   8.59
   2.29   2.69   4.48   1.19   1.98   2.81   5.39    4.2   3.72   4.56
   1.84   3.99    2.4    2.7   4.84   5.08  0.969   2.01   4.94   5.06
   1.94    7.4   5.19   1.62   3.94   3.12   3.51   0.65   4.46   4.61
   5.16   4.57   1.82   3.21   5.79   4.01   5.59   5.38   1.95    6.2
   2.41   2.09    2.2   2.43   2.24   2.26   2.09   2.39   2.21   2.33
   2.24   2.14   2.45   2.37    2.2   2.37   2.13   2.33   2.25   2.18
   2.38   2.19   2.15   2.14    2.1   2.39   2.24   2.24   2.12   2.14
   2.34   2.18   2.25   2.26   2.33   2.17   2.18   2.12   2.17   2.27
   2.29   2.26   2.38   2.12   2.25   2.33   2.09   2.21   2.24   2.13
   swp new  89 <->   2 old; decreasing diss. 306.742 by -93.214
   swp new  27 <->   1 old; decreasing diss. 213.528 by -1.10916
end{bswap()}, end{cstat()}

# 查看中心
> kclus2$id.med
[1] 27 89

通过日志查看,我们可以清楚地看到,2个中心的选择过程,分别用89替换1,距离成本减少93.214,用27替换2,距离成本减少1.1。

PAM作为k-means的一种改进算法,到底结果是否更合理,还要看最终哪种结果能够准确地表达业务的含义,被业务人员所认可,就需要不断地和业务人员来沟通。

3. 可视化和段剖面图

我们实现了聚类计算后,通常需要把复杂的数据逻辑,用简单的语言和图形来解释给业务人员,聚类的可视化就很重要的。如果数据量不太大,参与聚类的指标维度不太多的时候,我们可以用2维散点图,把指标两两画出来。

我们对iris数据集,进行k-means聚类分成3组,画出聚类后的2维散点图结果。

> res <- kmeans(iris[,1:4], centers=3)
> pairs(iris, col = res$cluster + 1)


每2个维度就会生成一张图, 我们可以全面直观的看到聚类的效果。

高级画图工具,使用GGally包中的ggpairs()函数。

> library(GGally)
> ggpairs(iris,columns = 1:5,mapping=aes(colour=as.character(res$cluster)))


图更漂亮了而且包含更多的信息,除了2维散点图,还包括了相关性检查,分布图,分箱图,频率图等。用这样的可视化效果图与业务人员沟通,一定会非常愉快的。

但是如果数据维度,不止3个而是30个,数据量也不是几百个点,而是几百万个点,再用2维散点图画出来就会很难看了,而且也表达不清,还会失去重点,计算的复杂度也是非常的高。

当数据量和数据维度多起来,我们就需要用段剖面图来做展示了,放弃个体特征,反应的群体特征和规律。

使用flexclust包中的barchart()函数,画出段剖面图,我们还是用iris数据集进行举例。


> library(flexclust)
> clk2 <- cclust(iris[,-5], k=3);clk2
kcca object of family ‘kmeans’ 

call:
cclust(x = iris[, -5], k = 3)

cluster sizes:
 1  2  3 
39 61 50 

# 画出段剖面图
> barchart(clk2,legend=TRUE)

如上图所示,每一区块是一个类别,每行是不同的指标。红点表示均值,柱状是这个类别每个指标的情况,透明色表示不重要指标。

查看段剖面图,可以清楚的看到,每个分组中特征是非常明显的。

  • Cluster1中,有39个数据点占26%,Sepal.Width指标在均值附近,其他指标都大于均值。
  • Cluster2中,有61个数据点占41%,Sepal.Width指标略小于均值,其他指标在均值附近。
  • Cluster3中,有50个数据点占33%,Sepal.Width略大于均值,其他指标都小于均值。

从段剖面图,我们可以一眼就能直观地发现数据聚类后的每个分组的总体特征,而不是每个分组中数据的个体特征,对于数据的解读是非常有帮助的。

对于段剖面图,原来我并不知道是什么效果。在和业务人员沟通中,发现他们使用SAS软件做出了很漂亮的段剖面图,而且他们都能理解,后来我发现R语言也有这个工具函数,图确实能极大地帮助进行数据解读,所以写了这篇文章记录一下。

本文介绍了k-means的聚类计算方法和具体的使用方法,也是对最近做了一个聚类模型的总结。作为数据分析师,我们不仅自己能发现数据的规律,还要让业务人员看明白你的思路,看懂数据的价值,这也是算法本身的价值。

转载请注明出处:
http://blog.fens.me/r-cluster-kmeans

打赏作者

用R语言实现信息度量

R的极客理想系列文章,涵盖了R的思想,使用,工具,创新等的一系列要点,以我个人的学习和体验去诠释R的强大。

R语言作为统计学一门语言,一直在小众领域闪耀着光芒。直到大数据的爆发,R语言变成了一门炙手可热的数据分析的利器。随着越来越多的工程背景的人的加入,R语言的社区在迅速扩大成长。现在已不仅仅是统计领域,教育,银行,电商,互联网….都在使用R语言。

要成为有理想的极客,我们不能停留在语法上,要掌握牢固的数学,概率,统计知识,同时还要有创新精神,把R语言发挥到各个领域。让我们一起动起来吧,开始R的极客理想。

关于作者:

  • 张丹(Conan), 程序员/Quant: Java,R,Nodejs
  • blog: http://blog.fens.me
  • email: bsspirit@gmail.com

转载请注明出处:
http://blog.fens.me/r-entropy

前言

香农的《通信的数学理论》是20世纪非常伟大的著作,被认为是现代信息论研究的开端。信息论定义了信息熵,用于把信息进行度量,以比特(bit)作为量纲单位,为如今发达的信息产业和互联网产业奠定了基础。本文接上一篇文章R语言实现46种距离算法,继续philentropy包的介绍,包括信息度量函数的使用。

目录

  1. 信息熵介绍
  2. 关键概念
  3. 信息度量函数
  4. 应用举例

1.信息熵介绍

信息论(Information Theory)是概率论与数理统计的一个分枝,用于研究信息处理、信息熵、通信系统、数据传输、率失真理论、密码学、信噪比、数据压缩等问题的应用数学学科。信息论将信息的传递作为一种统计现象来考虑,给出了估算通信信道容量的方法。信息传输和信息压缩是信息论研究中的两大领域。

香农被称为是“信息论之父”,香农于1948年10月发表的A Mathematical Theory of Communication,通信的数学理论(中文版),通常被认为是现代信息论研究的开端。

信息熵,是对信息随机性的量度,又指信息能被压缩的极限,用bit作为衡量信息的最小单位。一切信息所包含的信息量,都是1bit的正整数倍。计算机系统中常采用二进制编码,一个0或1就是1bit。

举例来说明一下信息熵的计算原理,假设小明最喜欢5种水果,苹果、香蕉、西瓜、草莓、樱桃中的一种,如果小明没有偏爱,选择每种水果的概率都是20%,那么这一信息的信息熵为

H(A) = -1*(0.2*log2(0.2)*5)
= 2.321928 bits

如果小明偏爱香蕉,选择这5种水果的概率分别是10%,20%,45%,15%,10%,那么这一信息信息熵为


H(B)=-1*(0.1*log2(0.1)+0.2*log2(0.2)+0.45*log2(0.45)+0.15*log2(0.15)+0.1*log2(0.1))
= 2.057717 bits

从结果得到H(A)大于H(B),信息熵越大表示越不确定。对于B的情况,对某一种水果的偏好,比A增加了确定性的因素,所以H(B)小于H(A)是符合对于信息熵的定义的。

2. 关键概念

我们从一幅图来认识信息熵,图中显示了随机变量X和Y的2个集合,在信息熵的概念里的所有可能逻辑关系。两个圆所包含的面积为联合熵H(X,Y), 左边的整个圆表示X的熵H(X),左边半圆是条件熵H(X|Y)。 右边的整个圆表示Y的熵H(Y),右边半圆条件熵H(Y|X),中间交集的部分是互信息I(X; Y)

信息熵(Entropy):是对信息随机性的量度,用于计算信息能被压缩的极限。对随机变量X,不确定性越大,X的信息熵H(X)也就越大。

公式定义:

H(x)的取值范围,0<=H(x)<=log(n), 其中n是随机变量x取值的种类数。需要注意的是,熵只依赖于随机变量的分布,与随机变量取值无关。

条件熵(Conditional Entropy):表示两个随机变量X和Y,在已知Y的情况下对随机变量X的不确定性,称之为条件熵H(X|Y),

公式定义:

联合熵(Joint Entropy):表示为两个随机事件X和Y的熵的并集,联合熵解决将一维随机变量分布推广到多维随机变量分布。

公式定义:

互信息(Mutual Information, 信息增益):两个随机变量X和Y,Y对X的互信息,为后验概率与先验概率比值的对数,即原始的熵H(X)和已知Y的情况下的条件熵H(X|Y)的比值的对数,信息增益越大表示条件Y对于确定性的贡献越大。互信息,也可以用来衡量相似性。

公式定义:

当MI(X,Y)=0时,表示两个事件X和Y完全不相关。决策树ID3算法就是使用信息增益来划分特征,信息增益大时,说明对数据划分帮助很大,优先选择该特征进行决策树的划分。

信息增益比率:是信息增益与该特征的信息熵之比,用于解决信息增益对多维度特征的选择,决策树C4.5算法使用信息增益比率进行特征划分。

KL散度(Kullback–Leibler Divergence, 相对熵):随机变量x取值的两个概率分布p和q,用来衡量这2个分布的差异,通常用p表示真实分布,用q表示预测分布。

公式定义:

n为事件的所有可能性,如果两个分布完全相同,那么它们的相关熵为0。如果相对熵KL越大,说明它们之间的差异越大,反之相对熵KL越小,说明它们之间的差异越小。

交叉熵(Cross Entropy):是对KL散度的一种变型,把KL散度log(p(x)/q(x))进行拆分,前面部分就是p的熵H(p),后面就是交叉熵H(p,q)。

公式定义:

交叉熵可以用来计算学习模型分布与训练分布之间的差异,一般在机器学习中直接用交叉熵做损失函数,用于评估模型。

信息论是通信理论的基础,也是xx的基础,关于信息论的理论,等后面有时时间再做分享,本文重要研究信息熵的函数计算问题。

3. 信息度量函数

philentropy包的函数,主要分为3种类别的函数,第一类是距离测量的函数,第二类是相关性分析,第三类是信息度量函数,本文重点介绍这些信息度量的函数。有关于距离测量函数和相关性分析函数,请参考文章R语言实现46种距离算法

我们来看一下,philentropy包里信息度量的函数:

  • H(): 香农熵, Shannon’s Entropy H(X)
  • JE() : 联合熵, Joint-Entropy H(X,Y)
  • CE() : 条件熵, Conditional-Entropy H(X|Y)
  • MI() : 互信息, Shannon’s Mutual Information I(X,Y)
  • KL() : KL散度, Kullback–Leibler Divergence
  • JSD() : JS散度,Jensen-Shannon Divergence
  • gJSD() : 通用JS散度,Generalized Jensen-Shannon Divergence

本文的系统环境为:

  • Win10 64bit
  • R: 3.4.2 x86_64-w64-mingw32

3.1 H()香农熵
H()函数,可用于快速计算任何给定概率向量的香农熵。

H()函数定义:

H (x, unit = "log2") 

参数列表:

  • x, 概率向量
  • unit,对数化的单位,默认为log2

函数使用:


# 创建数据x
> x<-1:10;x
 [1]  1  2  3  4  5  6  7  8  9 10
> x1<-x/sum(x);x1
 [1] 0.01818182 0.03636364 0.05454545 0.07272727
 [5] 0.09090909 0.10909091 0.12727273 0.14545455
 [9] 0.16363636 0.18181818

# 计算香农熵
> H(px)
[1] 3.103643

同样地,我们也可以用程序实现公式自己算一下。


# 创建数据x
> x<-1:10
#计算x的概率密度px
> px<-x/sum(x)  

# 根据公式计算香农熵
> -1*sum(px*log2(px))
[1] 3.103643

我们动手的计算结果,用于H()函数的计算结果是一致的。

3.2 CE()条件熵

CE()函数,基于给定的联合概率向量P(X,Y)和概率向量P(Y),根据公式 H(X|Y)= H(X,Y)-H(Y)计算香农的条件熵。

函数定义:

CE(xy, y, unit = "log2")

参数列表:

  • xy, 联合概率向量
  • y, 概率向量,必须是随机变量y的概率分布
  • unit,对数化的单位,默认为log2

函数使用:


> x3<- 1:10/sum(1:10)
> y3<- 30:40/sum(30:40)

# 计算条件熵
> CE(x3, y3)
[1] -0.3498852

3.3 JE()联合熵

JE()函数,基于给定的联合概率向量P(X,Y)计算香农的联合熵H(X,Y)。

JE()函数定义:

JE (x, unit = "log2") 

参数列表:

  • x, 联合概率向量
  • unit,对数化的单位,默认为log2

函数使用:

# 创建数据x
> x2 <- 1:100/sum(1:100)

# 联合熵
> JE(x2)
[1] 6.372236

3.4 MI()互信息
MI()函数,根据给定联合概率向量P(X,Y)、概率向量P(X)和概率向量P(X),按公式I(X,Y)= H(X)+ H(Y)-H(X,Y)计算。

函数定义:

MI(x, y, xy, unit = "log2")

参数列表:

  • x, 概率向量
  • x, 概率向量
  • xy, 联合概率向量
  • unit,对数化的单位,默认为log2

函数使用:


# 创建数据集
> x3 <- 1:10/sum(1:10)
> y3<- 20:29/sum(20:29)
> xy3 <- 1:10/sum(1:10)

# 计算互信息
> MI(x3, y3, xy3)
[1] 3.311973

3.5 KL()散度
KL()函数,计算两个概率分布P和Q的Kullback-Leibler散度。
函数定义:

KL(x, test.na = TRUE, unit = "log2", est.prob = NULL)

参数列表:

  • x, 概率向量或数据框
  • test.na, 是否检查NA值
  • unit,对数化的单位,默认为log2
  • est.prob, 用计数向量估计概率的方法,默认值NULL。

函数使用:


# 创建数据集
> df4 <- rbind(x3,y3);df4
         [,1]       [,2]       [,3]       [,4]       [,5]      [,6]      [,7]      [,8]      [,9]
x3 0.01818182 0.03636364 0.05454545 0.07272727 0.09090909 0.1090909 0.1272727 0.1454545 0.1636364
y3 0.08163265 0.08571429 0.08979592 0.09387755 0.09795918 0.1020408 0.1061224 0.1102041 0.1142857
       [,10]
x3 0.1818182
y3 0.1183673

# 计算KL散度 
> KL(df4, unit = "log2") # Default
kullback-leibler 
       0.1392629 
> KL(df4, unit = "log10")
kullback-leibler 
       0.0419223 
> KL(df4, unit = "log")
kullback-leibler 
      0.09652967 

3.5 JSD()散度

JSD()函数,基于具有相等权重的Jensen-Shannon散度,计算距离矩阵或距离值。

公式定义:

函数定义:

JSD(x, test.na = TRUE, unit = "log2", est.prob = NULL)

参数列表:

  • x, 概率向量或数据框
  • test.na, 是否检查NA值
  • unit, 对数化的单位,默认为log2
  • est.prob, 用计数向量估计概率的方法,默认值NULL。

# 创建数据
> x5 <- 1:10
> y5 <- 20:29
> df5 <- rbind(x5,y5)

# 计算JSD
> JSD(df5,unit='log2')
jensen-shannon 
      50.11323 
> JSD(df5,unit='log')
jensen-shannon 
      34.73585 
> JSD(df5,unit='log10')
jensen-shannon 
      15.08559 

# 计算JSD,满足est.prob
> JSD(df5, est.prob = "empirical")
jensen-shannon 
    0.03792749 

3.6 gJSD()散度

gJSD()函数,计算概率矩阵的广义Jensen-Shannon散度。

公式定义:

函数定义:

gJSD(x, unit = "log2", weights = NULL)

参数列表:

  • x, 概率矩阵
  • unit, 对数化的单位,默认为log2
  • weights, 指定x中每个值的权重,默认值NULL。

# 创建数据
> Prob <- rbind(1:10/sum(1:10), 20:29/sum(20:29), 30:39/sum(30:39))

# 计算gJSD
> gJSD(Prob)
[1] 0.023325

4. 应用举例

在我们了解了熵的公式原理和使用方法后,我们就可以做一个案例来试一下。我们定义一个场景的目标:通过用户的看书行为,预测用户是否爱玩游戏。通过我们一步一步地推倒,我们计算出熵,条件熵,联合熵,互信息等指标。

第一步,创建数据集为2列,X列用户看书的类型,包括旅游(Tourism)、美食(Food)、IT技术(IT),Y列用户是否喜欢打游戏,喜欢(Y),不喜欢(N)。


X,Y
Tourism,Y
Food,N
IT,Y
Tourism,N
Tourism,N
IT,Y
Food,N
Tourism,Y

第二步,建立联合概率矩阵,分别计算H(X),Y(X)。

X Y N p(X)
Tourism 2/8=0.25 2/8=0.25 0.25+0.25=0.5
Food 0/8=0 2/8=0.25 0+0.25=0.25
IT 2/8=0.25 0/8=0 0.25+0=0.25
p(Y) 0.25+0+0.25=0.5 0.25+0.25+0=0.5

计算过程


# 分别计算每种情况的概率
p(X=Tourism) = 2/8 + 2/8 = 0.5
p(X=Food) = 2/8 + 0/8 = 0.25
p(X=IT) = 0/8 + 2/8 = 0.25
p(Y=Y) = 4/8 = 0.5
p(Y=N) = 4/8 = 0.5

# 计算H(X)
H(X) = -∑p(xi)*log2(p(xi)) 
 = -p(X=Tourism)*log2(p(X=Tourism) ) -p(X=Food)*log2(p(X=Food) ) -p(X=IT)*log2(p(X=IT) ) 
 = -0.5*log(0.5) -0.25*log(0.25) - 0.25*log(0.25)
 = 1.5

# 计算H(Y)
H(Y) = -∑p(yi)*log2(p(yi)) 
 = -p(Y=Y)*log2(p(Y=Y)) -p(Y=N)*log2(p(Y=N))
 = -0.5*log(0.5) -0.5*log(0.5)
 = 1

第三步,计算每一项的条件熵,H(Y|X=Tourism),H(Y|X=Food),H(Y|X=IT)。


H(Y|X=Tourism) = -p(Y|X=Tourism)*log(p(Y|X=Tourism)) - p(N|X=Tourism)*log(p(N|X=Tourism))
 = -0.5*log(0.5) -0.5*log(0.5)
 = 1

H(Y|X=Food) = -p(Y|X=Food)*log(p(Y|X=Food)) -p(N|X=Food)*log(p(N|X=Food))
 = -0*log(0) -1*log(1)
 = 0

H(Y|X=IT) = -p(Y|X=IT)*log(p(Y|X=IT)) -p(N|X=IT)*log(p(N|X=IT))
 = -1*log(1) -0*log(0) 
 = 0

第四步,计算条件熵H(Y|X)


H(Y|X) = ∑p(xi)*H(Y|xi)
 = p(X=Tourism)*H(Y|X=Tourism) + p(X=Food)*H(Y|X=Food) + p(X=IT)*H(Y|X=IT)
 = 0.5*1 + 0.25*0 + 0.25*0
 = 0.5

第五步,计算联合熵H(X,Y)


H(X,Y) = −∑p(x,y)log(p(x,y))
 = H(X) + H(Y|X)
 = 1.5 + 0.5
 = 2

第六步,计算互信息I(X;Y)


I(X;Y) = H(Y) - H(Y|X)  = 1 - 0.5 = 0.5
 = H(X) + H(Y) - H(X,Y) = 1.5 + 1 - 2 = 0.5

我们把上面的推到过程,用程序来实现一下。


# 创建数据集
> X<-c('Tourism','Food','IT','Tourism','Tourism','IT','Food','Tourism')
> Y<-c('Y','N','Y','N','N','Y','N','Y') 
> df<-cbind(X,Y);df
     X         Y  
[1,] "Tourism" "Y"
[2,] "Food"    "N"
[3,] "IT"      "Y"
[4,] "Tourism" "N"
[5,] "Tourism" "N"
[6,] "IT"      "Y"
[7,] "Food"    "N"
[8,] "Tourism" "Y

变型为频率矩阵


> tf<-table(df[,1],df[,2]);tf
         
          N Y
  Food    2 0
  IT      0 2
  Tourism 2 2

计算概率矩阵


> pX<-margin.table(tf,1)/margin.table(tf);pX
Tourism    Food      IT 
   0.50    0.25    0.25 
> pY<-margin.table(tf,2)/margin.table(tf);pY
  Y   N 
0.5 0.5 
> pXY<-prop.table(tf);pXY
           Y    N
Tourism 0.25 0.25
Food    0.00 0.25
IT      0.25 0.00

计算熵


> H(pX)
[1] 1.5
> H(pY)
[1] 1

# 条件熵 
> CE(pX,pY)
[1] 0.5

# 联合熵 
> JE(pXY)
[1] 2

# 互信息
> MI(pX,pY,pXY)
[1] 0.5

计算原理是复杂的,用R语言的程序实现却是很简单的,几行代码就搞定了,

本文只是对的信息论的初探,重点还是在信息度量方法的R语言实现。信息熵作为信息度量的基本方法,对各种主流的机器学习的算法都有支撑,是我们必须要掌握的知识。了解本质才能发挥数据科学的潜力,学习的路上不断积累和前进。

转载请注明出处:
http://blog.fens.me/r-entropy

打赏作者

R语言实现46种距离算法

R的极客理想系列文章,涵盖了R的思想,使用,工具,创新等的一系列要点,以我个人的学习和体验去诠释R的强大。

R语言作为统计学一门语言,一直在小众领域闪耀着光芒。直到大数据的爆发,R语言变成了一门炙手可热的数据分析的利器。随着越来越多的工程背景的人的加入,R语言的社区在迅速扩大成长。现在已不仅仅是统计领域,教育,银行,电商,互联网….都在使用R语言。

要成为有理想的极客,我们不能停留在语法上,要掌握牢固的数学,概率,统计知识,同时还要有创新精神,把R语言发挥到各个领域。让我们一起动起来吧,开始R的极客理想。

关于作者:

  • 张丹(Conan), 程序员/Quant: Java,R,Nodejs
  • blog: http://blog.fens.me
  • email: bsspirit@gmail.com

转载请注明出处:
http://blog.fens.me/r-distance

前言

距离算法是做数据挖掘常用的一类算法,距离算法有很多种,比如欧式距离、马氏距离、皮尔逊距离,距离算法主要应用在计算数据集之间关系。本文用R语言来philentropy包,实现多种距离的算法,很多可能是大家完全没有听过的,让我们在开拓一下知识领域吧。

目录

  1. 距离算法包philentropy
  2. 46种距离算法详解
  3. 距离函数的使用

1.距离算法包philentropy

在做距离算法调研时,无意中发了philentropy包。它实现了46个不同距离算法和相似性度量,通过不同数据的相似度比较,为基础研究提供了科学基础。philentropy包,为聚类、分类、统计推断、拟合优度、非参数统计、信息理论和机器学习提供了核心的计算框架,支持基于单变量或者多变量的概率函数的计算。

philentropy包主要包括了2种度量的计算方法,距离度量和信息度量。本文介绍距离度量的使用,对于信息度量的使用,请参考文章R语言实现信息度量

philentropy项目github地址:https://github.com/HajkD/philentropy

本文的系统环境为:

  • Win10 64bit
  • R: 3.4.2 x86_64-w64-mingw32

安装philentropy包,非常简单,一条命令就可以了。

~ R
> install.packages("philentropy")
> library(philentropy)

查看距离算法列表

> getDistMethods()
 [1] "euclidean"         "manhattan"         "minkowski"         "chebyshev"        
 [5] "sorensen"          "gower"             "soergel"           "kulczynski_d"     
 [9] "canberra"          "lorentzian"        "intersection"      "non-intersection" 
[13] "wavehedges"        "czekanowski"       "motyka"            "kulczynski_s"     
[17] "tanimoto"          "ruzicka"           "inner_product"     "harmonic_mean"    
[21] "cosine"            "hassebrook"        "jaccard"           "dice"             
[25] "fidelity"          "bhattacharyya"     "hellinger"         "matusita"         
[29] "squared_chord"     "squared_euclidean" "pearson"           "neyman"           
[33] "squared_chi"       "prob_symm"         "divergence"        "clark"            
[37] "additive_symm"     "kullback-leibler"  "jeffreys"          "k_divergence"     
[41] "topsoe"            "jensen-shannon"    "jensen_difference" "taneja"           
[45] "kumar-johnson"     "avg"    

46个距离算法,有一些是我们常用的比如:euclidean,manhattan,minkowski,pearson, cosine,squared_chi, 其他的我也不知道,正好拓宽知识,好好学习一下。

philentropy包的函数,其实很简单,只有14个,大量的算法其实都已经被封装到distance()函数中,直接使用distance()函数就行完成各种算法的计算,让我们使用起来会非常方便。我们来看一下,函数列表:

  • distance(): 计算距离
  • getDistMethods(),获得距离算法列表
  • dist.diversity(),概率密度函数之间的距离差异
  • estimate.probability(),从计数向量估计概率向量
  • lin.cor(),线性相关性判断
  • H(): 香农熵, Shannon’s Entropy H(X)
  • JE() : 联合熵, Joint-Entropy H(X,Y)
  • CE() : 条件熵, Conditional-Entropy H(X|Y)
  • MI() : 互信息, Shannon’s Mutual Information I(X,Y)
  • KL() : KL散度, Kullback–Leibler Divergence
  • JSD() : JS散度,Jensen-Shannon Divergence
  • gJSD() : 通用JS散度,Generalized Jensen-Shannon Divergence
  • binned.kernel.est(),实现了KernSmooth包提供的核密度估计函数的接口

从函数列表来看,主要分为3种类别的函数,第一类是距离测量的函数,包括distance(),
getDistMethods(), dist.diversity(), lin.cor()和 estimate.probability()。第二类是相关性分析,包括lin.cor()函数。第三类是信息度量函数H(),JE(),CE(),MI(),KL(),JSD(),gJSD()。信息度量函数的使用,请参考文章R语言实现信息度量

2. 46种算法详解

接下来,就让我们深入每个算法吧,从名字到公式,再到函数使用,最后到使用场景。

距离算法列表:

  • euclidean:欧式距离,是一个通常采用的距离定义,在m维空间中两个点之间的真实距离,或者向量的自然长度(即该点到原点的距离)。
  • manhattan:曼哈顿距离,用于几何空间度量,表示两个点在标准坐标系上的绝对轴距距离总和。
  • minkowski:闵可夫斯基距离,是欧氏空间中的广义距离函数,其参数p值的不同代表着对空间不同的度量。
  • chebyshev:切比雪夫距离,是向量空间中的一种度量,二个点之间的距离定义是其各坐标数值差绝对值的最大值。
  • sorensen:测量每个样本单位,对单位总数的距离测量贡献度,广告用于生态学。
  • gower:高尔距离,将向量空间缩放为规范化空间,可计算逻辑值,数字,文本的距离,距离结果为0到1之间的数字。
  • soergel:测量每个样本单位,对最大值总数的距离测量贡献度。
  • kulczynski:与soergel相反,测量每个样本单位,对最小值总数的距离测量贡献度。
  • canberra:堪培拉距离,是矢量空间中的点对之间的距离的数值度量,它是L_1距离的加权版本。
  • lorentzian:洛伦兹距离,绝对的差异并应用自然对数。
  • intersection:交叉距离,最小轨道交叉距离,是天文学中用于评估天文物体之间潜在的近距离接近和碰撞风险的度量。它被定义为两个物体的密切轨道的最近点之间的距离。
  • non-intersection:非交叉距离
  • wavehedges:波浪距离,
  • czekanowski:
  • motyka:莫蒂卡方程,是czekanowski的一半。
  • kulczynski_s:
  • tanimoto:是标准化内积的另一种变体。
  • ruzicka:
  • inner_product:内部产品空间,计算两个向量的内积产生标量,有时称为标量积或点积。
  • harmonic_mean:调和平均值。
  • cosine:余弦距离,是用向量空间中两个向量夹角的余弦值作为衡量两个个体间差异的大小的度量。
  • hassebrook(PCE):利用P•Q来测量能量的峰值,简称PCE。
  • jaccard:杰卡德距离,用于计算样本间的相似度,分子是A和B的交集大小,分母是A和B的并集大小。
  • dice:骰子
  • fidelity:保真度,在量子信息理论中,保真度是两个量子态“接近”的度量。
  • bhattacharyya:巴氏距离,测量两个概率分布的相似性。
  • hellinger:海林格,用来度量两个概率分布的相似度,它是F散度的一种。
  • matusita:
  • squared_chord:
  • squared_euclidean:欧式距离的平方
  • pearson:皮尔森距离,分子是两个集合的交集大小,分母是两个集合大小的几何平均值,是余弦距离的一种变型。
  • neyman:奈曼,
  • squared_chi:
  • prob_symm:
  • divergence:散度,
  • clark:克拉克,
  • additive_symm:算术和几何平均散度.
  • kullback-leibler:KL散度,用于计算相熵或信息偏差,是衡量两个分布(P、Q)之间的距离,越小越相似。
  • jeffreys:杰弗里斯,J分歧。
  • k_divergence:K散度,
  • topsoe:托普索,是k_divergence加法的对称形式。
  • jensen-shannon:詹森香农,是topsoe距离的一半。
  • jensen_difference:
  • taneja:塔内加,计算算术和几何平均偏差。
  • kumar-johnson:库马尔-约翰逊,
  • avg:平均

由于精力和基础知识有限,对每一种算法还没有更深入的理解和使用,后面会继续补充。这些距离的详细解释,请参考文章 http://csis.pace.edu/ctappert/dps/d861-12/session4-p2.pdf

这么多种的距离算法,其实可以分成8大距离家族,每个家族中不同的算法思路是类似的,可以通过变形或参数不同赋值,进行算法的相互转换。

L_p Minkowski家族,通过对Minkowski 算法p值的不同赋值,可以转换成不同的算法,当p=1时Minkowski距离转为曼哈顿距离;当p=2变Minkowski距离转为欧氏距离;当p接近极限最大值时,Minkowski距离是转为切比雪夫距离。

L_1家族,用于准确的测量绝对差异的特征。

Intersection 交叉距离家族,用于交叉点之间的相似度变换。

Inter Product 家族,几何空间的相似性度量,用于特定的 P•Q 变量来计算。

Squared-chord 家族,在量子信息理论中,量子态“接近”的度量。

Squared L_2 家族( X^2 Squared 家族),以平方的欧几里得距离做为被除数。

香浓信息熵家族,信息熵偏差测量。

组合公式,利用多种算法思路,进行组合的距离测量方法。

3. 距离函数的使用

了解了这么多的距离算法后,让我们来使用一下philentropy包强大的功能函数,把算法落地。

3.1 distance()函数使用
distance()函数,用来计算两个概率密度函数之间的距离和相似度,上面所列出的所有的距离算法都被封装在了这个函数里。

distance()函数定义:

distance(x, method = "euclidean", p = NULL, test.na = TRUE, unit = "log", est.prob = NULL)

参数列表:

  • x, 数值类型的向量或数据集
  • method, 算法的名称
  • p, minkowski闵可夫斯基距离的p值,p=1为曼哈顿距离,p=2为欧氏距离,p取极限时是切比雪夫距离
  • test.na, 检测数据集是否有NA值,不检测为FALSE,计算会快。
  • unit,对数化的单位,依赖于日志计算的距离
  • est.prob 从计数估计概率,默认值为NULL

计算euclidean距离,用iris的数据集。

> library(magrittr)

# 查看iris数据集
> head(iris)
  Sepal.Length Sepal.Width Petal.Length Petal.Width Species
1          5.1         3.5          1.4         0.2  setosa
2          4.9         3.0          1.4         0.2  setosa
3          4.7         3.2          1.3         0.2  setosa
4          4.6         3.1          1.5         0.2  setosa
5          5.0         3.6          1.4         0.2  setosa
6          5.4         3.9          1.7         0.4  setosa

计算第1个点(第1行)和第2个点(第2行)的euclidean距离,分别使用philentropy包的distance(),Stats包的dist(),和自己通过公式计算。

# 使用distance()函数
> dat1<-iris[1:2,-5]
> distance(dat1, method="euclidean")
Metric: 'euclidean' using unit: 'log'.
euclidean 
0.5385165 

# 再使用系统自带的dist()函数
> dist(dat1)
          1
2 0.5385165

# 公式计算
> (dat1[1,]-dat1[2,])^2 %>% sum %>% sqrt
[1] 0.5385165

3种方法,计算的结果是完全一致。

接下来,我们构建一个iris的距离矩阵,为了展示清楚,我们选iris的前6个点来计算距离。分别使用distance()和dist()函数。


> dat2<-head(iris[,-5])

# 距离矩阵
> distance(dat2)
Metric: 'euclidean' using unit: 'log'.
          v1        v2       v3        v4        v5        v6
v1 0.0000000 0.5385165 0.509902 0.6480741 0.1414214 0.6164414
v2 0.5385165 0.0000000 0.300000 0.3316625 0.6082763 1.0908712
v3 0.5099020 0.3000000 0.000000 0.2449490 0.5099020 1.0862780
v4 0.6480741 0.3316625 0.244949 0.0000000 0.6480741 1.1661904
v5 0.1414214 0.6082763 0.509902 0.6480741 0.0000000 0.6164414
v6 0.6164414 1.0908712 1.086278 1.1661904 0.6164414 0.0000000

# 下三角距离矩阵
> dist(dat2)
          1         2         3         4         5
2 0.5385165                                        
3 0.5099020 0.3000000                              
4 0.6480741 0.3316625 0.2449490                    
5 0.1414214 0.6082763 0.5099020 0.6480741          
6 0.6164414 1.0908712 1.0862780 1.1661904 0.6164414

验证后,我们就可以放心使用distance()函数。通过对比实验,我们可以很快的学习并使用各种距离算法。

3.2 dist.diversity()函数
dist.diversity()函数,用来计算所有距离的值。由于有一些距离有对于数据集本身的要求,所以我们需要构建一个能适应所有距离算法的数据集。


# 生成数据集,2个点,10个维度
> P <- 1:10/sum(1:10)
> Q <- 20:29/sum(20:29)
> x <- rbind(P,Q)

# 打印数据集
> head(x)
        [,1]       [,2]       [,3]       [,4]       [,5]      [,6]      [,7]      [,8]
P 0.01818182 0.03636364 0.05454545 0.07272727 0.09090909 0.1090909 0.1272727 0.1454545
Q 0.08163265 0.08571429 0.08979592 0.09387755 0.09795918 0.1020408 0.1061224 0.1102041
       [,9]     [,10]
P 0.1636364 0.1818182
Q 0.1142857 0.1183673

使用dist.diversity()函数计算所有的距离。

> dist.diversity(x,p=2)
euclidean         manhattan         minkowski         chebyshev          sorensen 
       0.12807130        0.35250464        0.12807130        0.06345083        0.17625232 
            gower           soergel      kulczynski_d          canberra        lorentzian 
       0.03525046        0.29968454        0.42792793        2.09927095        0.34457827 
     intersection  non-intersection        wavehedges       czekanowski            motyka 
       0.82374768        0.17625232        3.16657887        0.17625232        0.58812616 
     kulczynski_s          tanimoto           ruzicka     inner_product     harmonic_mean 
       2.33684211        0.29968454        0.70031546        0.10612245        0.94948528 
           cosine        hassebrook           jaccard              dice          fidelity 
       0.93427641        0.86613103        0.13386897        0.07173611        0.97312397 
    bhattacharyya         hellinger          matusita     squared_chord squared_euclidean 
       0.02724379        0.32787819        0.23184489        0.05375205        0.01640226 
          pearson            neyman       squared_chi         prob_symm        divergence 
       0.16814418        0.36742465        0.10102943        0.20205886        1.49843905 
            clark     additive_symm  kullback-leibler          jeffreys      k_divergence 
       0.86557468        0.53556883        0.09652967        0.22015096        0.02922498 
           topsoe    jensen-shannon jensen_difference            taneja     kumar-johnson 
       0.05257867        0.02628933        0.02628933        0.02874841        0.62779644 
              avg 
       0.20797774 

3.3 estimate.probability()函数
estimate.probability()函数,采用数字计数来计算向量的估计概率。estimate.probability()函数方法实现,目前只有一个方法实现,计算每个值占合计的比率,其实就是一种数据标准归的计算方法。

> estimate.probability
function (x, method = "empirical") 
{
    if (!is.element(method, c("empirical"))) 
        stop("Please choose a valid probability estimation method.")
    if (method == "empirical") {
        return(x/sum(x))
    }
}
>environment: namespace:philentropy<

我们新建一个向量,用estimate.probability()函数,来计算向量的估计概率。

# 新建x1向量
> x1<-runif(100);head(x1)
[1] 0.6598775 0.2588441 0.5329965 0.5294842 0.8331355 0.3326702

# 计算估计概率
> x2<-estimate.probability(x1);head(x2)
[1] 0.013828675 0.005424447 0.011169702 0.011096097 0.017459543 0.006971580

# 打印统计概率
> summary(x2)
Min.   1st Qu.    Median      Mean   3rd Qu.      Max.
0.0002181 0.0044882 0.0096318 0.0100000 0.0153569 0.0206782

# 画散点图
> plot(x1,x2)

从图中看到,整个数据分布在对角线上,x1为均匀分布生成的向量,x2为x1的估计概率,仅仅做了做数据值域进行了缩放,并没有影响数据的分布变化和线性特征,其实就是对数据做了一个标准化的过程。

3.4 lin.cor()函数
lin.cor()函数,用来计算两个向量之间的线性相关,或计算矩阵的相关矩阵。

函数定义:

lin.cor(x, y = NULL, method = "pearson", test.na = FALSE)

参数列表:

  • x,变量1
  • y,变量2,与x进行比较
  • method,相关性算法的名称,默认为pearson距离算法,支持5种算法分为是pearson,pearson2,sq_pearson,kendall,spearman
  • test.na, 检测数据集是否有NA值,不检测为FALSE,计算会快。

相关性计算,最大值1为完全正相关,最小值-1为完全负相关,0为不相关。我们来创建数据集,进行相关性的测试。

# 创建向量x1,x2,x3
> x1<-runif(100)
> x2<-estimate.probability(x1)
> x3<-rnorm(100)

# 判断x1,x2的相关性,pearson 皮尔森相关系数
> lin.cor(x1,x2)
pearson 
      1 

# 判断x1,x3的相关性,pearson 皮尔森相关系数
> lin.cor(x1,x3)
  pearson 
0.0852527 

# 判断x1,x3的相关性,pearson2 皮尔森非集中的相关系数
> lin.cor(x1,x3,method = 'pearson2')
  pearson2 
0.01537887 

# 判断x1,x3的相关性,sq_pearson 皮尔森平方的相关系数
> lin.cor(x1,x3,method = 'sq_pearson')
sq_pearson 
0.00151915 

# 判断x1,x3的相关性,kendall 肯德尔相关系数
> lin.cor(x1,x3,method = 'kendall')
kendall 
      0 

# 判断x1,x3的相关性,spearman 斯皮尔曼相关系数
> lin.cor(x1,x3,method = 'spearman')
spearman 
       0 

通过lin.cor()函数,可以快速进行线性相关性的验证,非常方便。

本文重点介绍了philentropy包,对于距离算法的定义和距离测量的函数的使用。很多的距离算法我也是第一次学习,知识需要积累和总结,本文不完善的内容,后面我们找时间再进行补充。如果本文描述有不当的地方,也请各位朋友,给予指点,让我们一起把知识进行积累。

下一篇文章我们将介绍信息度量函数的使用和算法,请大家继续阅读文章用R语言实现信息度量

转载请注明出处:
http://blog.fens.me/r-distance

打赏作者

R语言轻巧的时间包hms

R的极客理想系列文章,涵盖了R的思想,使用,工具,创新等的一系列要点,以我个人的学习和体验去诠释R的强大。

R语言作为统计学一门语言,一直在小众领域闪耀着光芒。直到大数据的爆发,R语言变成了一门炙手可热的数据分析的利器。随着越来越多的工程背景的人的加入,R语言的社区在迅速扩大成长。现在已不仅仅是统计领域,教育,银行,电商,互联网….都在使用R语言。

要成为有理想的极客,我们不能停留在语法上,要掌握牢固的数学,概率,统计知识,同时还要有创新精神,把R语言发挥到各个领域。让我们一起动起来吧,开始R的极客理想。

关于作者:

  • 张丹(Conan), 程序员/Quant: Java,R,Nodejs
  • blog: http://blog.fens.me
  • email: bsspirit@gmail.com

转载请注明出处:
http://blog.fens.me/r-hms/

前言
时间是数据的基本维度,是在做数据处理的时候,必须要掌握的技术。根据时间周期的不同,通常把时间分为,年、月、日、时、分、秒、毫秒等。对于年月日的数据是最常见的,也有很多的处理工具,时分秒的数据通常也会用处理日期的工具,这样有时候就不太方便。

hms包,很小很轻,专注于时、分、秒的时间数据处理。

目录

  1. hms包介绍
  2. hms包的使用

1. hms包介绍

hms包,用于存储和格式化时间,基于difftime类型,使用S3的面向对象数据结构。

本文的系统环境为:

  • Win10 64bit
  • R: 3.4.2 x86_64-w64-mingw32

安装hms包,非常简单,一条命令就可以了。


~ R
> install.packages("hms")
> library(hms)

函数列表:

  • hms: 创建一个hms类型对象
  • is.hms: 判断是否是hms类型
  • parse_hm: 解析hm值
  • parse_hms: 解析hms值
  • round_hms:四舍五入对齐
  • trunc_hms:裁剪对齐
  • as.hms: hms泛型函数,S3类型,用于隐式调用它的继承函数
  • as.hms.character: character转型hms,用于as.hms的继承调用
  • as.hms.default: hms转型hms,用于as.hms的继承调用
  • as.hms.difftime:difftime转型hms,用于as.hms的继承调用
  • as.hms.numeric: numeric转型hms,用于as.hms的继承调用
  • as.hms.POSIXlt: POSIXlt转型hms,用于as.hms的继承调用
  • as.hms.POSIXt: POSIXt转型hms,用于as.hms的继承调用
  • as.character.hms: hms转型character,用于as.character的继承调用
  • as.data.frame.hms: hms转型data.frame,用于as.data.frame的继承调用
  • as.POSIXct.hms: hms转型POSIXct,用于as.POSIXct的继承调用
  • as.POSIXlt.hms: hms转型POSIXlt,用于as.POSIXlt的继承调用
  • format.hms: 格式化hms,用于format的继承调用
  • print.hms: 打印hms对像,用于print的继承调用

从函数列表可以看到,hms包的功能很单一,就在做数据类型和数据变型,是底层的数据结构包,设计思路与zoo包的设计思路一致。zoo包的详细介绍,请参考文章R语言时间序列基础库zoo

hms包中,有大量的as.xxx()函数、format.hms()函数和print.hms()函数,是被用于S3类型函数继承调用的,是不需要我们在写程序的时候显示调用的。S3数据结构详细介绍,请参考文章R语言基于S3的面向对象编程

2. hms包的使用

接下来,我们找几个重点函数进行介绍。

2.1 hms()函数
hms()函数,用于创建一个hms类型的对象。
函数定义:

hms(seconds = NULL, minutes = NULL, hours = NULL, days = NULL)

hms()函数,接收4个参数,分别对应秒,分,时,日。

创建hms对象


# 创建12:34:56的时间对象
> a1<-hms(56, 34, 12);a1
12:34:56

# 创建 10日12:34:56的时间对象
> a2<-hms(56, 34, 12,10);a2
252:34:56

打印结果的第一位252=10*24+12。

2.2 is.hms: 判断是否是hms类型


# 判断是否是hms类型
> is.hms(a1)
[1] TRUE

# 查看hms类型,父类是difftime类型
> class(a1)
[1] "hms"      "difftime"

# 查看hms的属性
> attributes(a1)
$units
[1] "secs"

$class
[1] "hms"      "difftime"

# 查看hms对象的静态数据结构
> str(a1)
Classes 'hms', 'difftime'  atomic [1:1] 45296
  ..- attr(*, "units")= chr "secs"

# 查看面向对象类型
> library(pryr)
> otype(a1)
[1] "S3"

2.3 as.xxx.hms:把hms转型到其他类型


# 默认转型
> as.hms(a1)
12:34:56

# hms转型character,实际会隐式调用as.character.hms()函数
> as.character(a1)
[1] "12:34:56"

# hms转型POSIXct
> as.POSIXct(a1)
[1] "1970-01-01 12:34:56 UTC"

# hms转型POSIXlt
> as.POSIXlt(a1)
[1] "1970-01-01 12:34:56 UTC"

由于我们没有定义as.Date.hms()函数,所以as.Date()函数,不能认识hms类型的转换。


# hms转型Date
> as.Date(a1)
Error in as.Date.default(a1) : 不知如何将'a1'转换成“Date”类别
Error during wrapup: cannot open the connection

自己定义一个as.Date.hms()函数,仅用于转型实验,没有实际业务意义。


# 函数定义
> as.Date.hms<-function(hms){
+   s<-paste(Sys.Date(),' ',hms,sep="")
+   as.Date(s)
+ }

# 显示调用函数
> as.Date.hms(a1)
[1] "2018-12-14"

# 隐式调用函数
> as.Date(a1)
[1] "2018-12-14"

2.4 as.hms.xxx:把其他类型转型到hms


# 把字符串转hms
> as.hms('19:13:14')
19:13:14
# 非法时间字符串转型
> as.hms('19:78:14')
NA

# 数字转型
> as.hms(111312)
30:55:12

# 时间转型
> as.hms(Sys.time())
14:22:59.462795

# 日期转型,同样发生了错误
> as.hms(Sys.Date())
Error: Can't convert object of class Date to hms.
Error during wrapup: cannot open the connection

2.5 parse_hms()/parse_hm()字符串解析

parse_hms对字符串进行转型,对比parse_hms()与as.hms()结果一样的。


# 执行parse_hms
> parse_hms("12:34:56.789")
12:34:56.789
> as.hms("12:34:56.789")
12:34:56.789

# 执行parse_hm
> parse_hm("12:34")
12:34:00
> as.hms("12:34")
NA

打印parse_hms 函数名,查看源代码实现。


> parse_hms 
function (x) {
as.hms(as.difftime(as.character(x), format = "%H:%M:%OS",
units = "secs"))
}
>environment: namespace:hms<

parse_hms()函数,实际就是调用了as.hms()函数。

2.6 round_hms/trunc_hms
round_hms()函数,是把时间进行四舍五入对齐。


# 按秒,以5的倍数进行对齐,四舍五入
> round_hms(as.hms("12:34:51"), 5)
12:34:50
> round_hms(as.hms("12:34:54"), 5)
12:34:55
> round_hms(as.hms("12:34:56"), 5)
12:34:55
> round_hms(as.hms("12:34:59"), 5)
12:35:00

# 按秒,以60的倍数对齐
> round_hms(as.hms("12:34:56"), 60)
12:35:00

trunc_hms()函数,是把时间进行裁剪对齐。


# 按秒去掉末位,以5的倍数进行对齐
> trunc_hms(as.hms("12:34:01"), 5)
12:34:00
> trunc_hms(as.hms("12:34:44"), 5)
12:34:40
> trunc_hms(as.hms("12:34:56"), 60)
12:34:00

2.7 在data.frame中插入hms列


# 创建data.frame
> df<-data.frame(hours = 1:3, hms = hms(hours = 1:3))
> df
  hours      hms
1     1 01:00:00
2     2 02:00:00
3     3 03:00:00

# 查看df的静态结构
> str(df)
'data.frame':	3 obs. of  2 variables:
 $ hours: int  1 2 3
 $ hms  :Classes 'hms', 'difftime'  atomic [1:3] 3600 7200 10800
  .. ..- attr(*, "units")= chr "secs"

hms包很轻巧很简单,但却可以快速提高帮助我们处理时分秒数据,这些基础函数库是需要我们完全掌握和熟练运用的。

转载请注明出处:
http://blog.fens.me/r-hms/

打赏作者