首页 文章 精选 留言 我的

精选列表

搜索[Skill资产共创],共8446篇文章
优秀的个人博客,低调大师

桃源居牵手Oracle ERP云 共创云端财务管理新模式

【大咖・来了 第7期】10月24日晚8点观看《智能导购对话机器人实践》 当前,中国房地产行业风起云涌、瞬息万变。曾经的“暴利行业”,如今正因为土地成本提高、房地产调控加紧等原因,净利润率持续走低,“增收不增利”的现象,特别是在中小型地产公司中,日渐普遍。与地产巨头豪放式售地的经营模式不同,中小型地产公司规模有限、资金链紧绷,必须告别“暴利”时代,转向精细化经营,在行业洪流中寻找一隅安身之地。 桃源居集团创建于1993年,发展至今已成为一家以房地产开发为主业、教育是特色、公益是核心,物业管理是附加值的多元化综合性企业,业务范围涉及地产开发、物业管理、科技开发、体育发展、园林工程、基金会、公益事业及教育产业共八大领域。面对变化多端的市场挑战,规模有限的桃源居已率先走上转型之路。随着土地价格剧增,桃源居在单一的经营业态下营收受限,面临严峻的业务发展挑战;为了完善多元化的增收渠道,桃源居亟需一套科学先进的ERP管理系统,为提升经济效益、降低运营成本出谋划策。 为此,桃源居选择牵手甲骨文,甲骨文全面、可扩展的一体化ERP云解决方案,可有效帮助企业简化流程、加速决策、增强协作、提高成本控制效率。在Oracle ERP云的财务管理解决方案的帮助下,桃源居将进行精细化管理,迅速适应其在多元化增收业务中不断调整的需求变化,支持完成快速业态转型,打造财务管理新模式: 降低运维成本,实现管理精细化:桃源居正处于服务器更新换代之际,原来本地部署的财务系统耗费高昂的运维费用,重新购置服务器更是面临巨大的前期投资成本。从传统的本地部署到公有云的用户体验,Oracle ERP云借力SaaS运营,便捷地让数据 “腾云而上”,为企业从豪放式经营向精细化管理转型奠定基础:一次性投资,为桃源居节省系统搭建费用;规避重新在本地部署的持久战,大大缩短建设周期;减小运维压力,帮助桃源居缩减运维成本。 提升数据可用性,助推业态多元化:当地产行业迈向寡头垄断竞争时代,“大鱼吃小鱼”逐渐成为常态。为了应对不断加剧的市场竞争压力,桃源居采用多元化增收方式,进军教育、物业等领域,通过联手教育财团合办学校、接手楼盘物业管理等业务渠道,实现业态转型的目标。Oracle ERP云凭借调整迅速、实施周期短、更新快等优势,与桃源居业态转型需求保持同步,使其能够***时间从财务系统中掌握各方面的实时信息,获知企业的业绩表现和财务状况,提供极高可用性的数据,从而帮助CFO获得数据洞察,推动快速决策、科学决策。 简化财务流程,构建管理智慧化: 随着规模的扩大和海外布局的起步,桃源居亟需标准化的ERP系统适应组织结构调整和数据共享。Oracle ERP云提供全面、可拓展的一体化财务管理解决方案,其中的财务、预算等功能***契合地产领域的业务需求。从简化财务流程、统一财务标准,到提供实时、准确、清晰的财务数据,满足桃源居对于结构化财务系统的需求,帮助桃源居实现更精准的财务管控,为公司管理层的决策提供数据支撑,以配合公司开发新楼盘的业务需要;同时Oracle ERP云有效减少了账户管理时间,桃源居集团可以并将更多的时间投入到战略性决策制定中, 更加智慧地管理财务系统,将业务与财务进行匹配。 桃源居集团CIO古国坚十分看好双方的战略合作:“在与甲骨文的合作中,我们深刻体会到Oracle ERP云给企业财务管理工作带来的便利和优化升级。相较于其它竞品,甲骨文的财务管理应用拥有行业领先的功能广度和对管理决策的深度支持,尤其是在数据可用性方面上充分满足了我们日常工作中的切实需求。在企业迈向多元转型的关键节点,很高兴甲骨文成为我们强有力的云端后台,为我们提供更有力的运营管理新模式。” 大数据和云计算时代,桃源居集团前瞻性的战略布局视野促成了桃源居和甲骨文的通力合作。Oracle ERP云的一体化财务管理解决方案将帮助桃源居有效管控成本,进行科学决策,走向精细化的经营道路。秉持着“在中国,服务中国”的理念,甲骨文将继续以先进的云服务有效赋能各行业、各领域中国客户,支持其向云端的现代化道路进一步迈进。 # # # 【责任编辑: 赵立京 TEL:(010)68476606】

优秀的个人博客,低调大师

IBM慕尼黑物联网总部启用 整合技术、人才共创工业4.0愿景

IBM在2016年为强化华生(Watson)计算机物联网(IoT)业务发展,在德国慕尼黑(Munich)投资2亿美元兴建华生物联网全球总部(Watson IoT Global Headquarters)双子星大楼,号称是全球最先进的华生认知运算与物联网技术中心。 如今这座总部已启用,进驻1,000名IBM员工及多家全球知名合作厂商共同脑力激荡下世代物联网产品,显示IBM欲藉华生计算机启动新兴物联网及工业4.0时代变革的企图心。 据Ioti网站等媒体报导,这是IBM在欧洲规模最大的投资案,为该公司30亿美元物联网发展全球投资计划一部分,目标将华生运算能力与物联网进行整合,总部占地共1.5万平方公尺,至今共已有超过6,000家客户及合作伙伴与IBM物联网总部进行合作,欲透过物联网业务提升华生计算机更强大的竞争优势。 这些合作客户包括全球第二大电梯制造商通力电梯(Kone)、德国博世(Bosch)、西门子(Siemens)、BMW、日本理光(Ricoh)、募资平台Indiegogo、全球最大电子零组件经销商Arrow、汽车零组件生产商Schaeffler、法国铁路公司SNCF、空中巴士(Airbus)、Visa以及AT&T等业者。 上述各产业领域大厂均进驻IBM慕尼黑物联网总部,与IBM共商如何运用华生计算机提升其产品技术水平及优势,俨然让慕尼黑总部成为全球物联网生态体系创新中心。 以通力电梯为例,该公司便于此与IBM员工共同开发下世代基于华生物联网技术的电梯及电扶梯产品,如透过华生物联网技术协助预测电梯何时可能故障来最大化电梯运行年限,并可事先呼叫维修人员前来进行维修等。 其他合作的大型业,还包含三星电子(Samsung Electronics)所收购的美国汽车零组件供货商Harman,以及家电大厂惠而浦(Whirlpool)等。 IBM目标要让华生计算机可采集内嵌于机器、无人机、汽车、医院等领域传感器的资料,共同开发相关领域的物联网解决方案及商业模式。整体而言如IBM华生物联网总经理Harriet Green所言,就是希望藉由这座总部的设立来创造IBM客户与IBM员工间的合作。 不仅如此,慕尼黑总部所采用的建筑材料,部分也是与先进物联网技术相关的材料,如飞利浦(Philips)的智慧连网照明以及通力的电梯等,其中电梯能够与搭乘者进行简易英文对话,照明应用也能提供客制化的照明服务、并可从众多IBM员工中辨识出访客。 在于拉斯韦加斯举行的IBM Interconnect 2017大会上,除可见IBM发表多款产品,约2.2万名与会者更展现出IBM合作客户与合作伙伴庞大数量的惊人实力,IBM执行官Ginni Rometty于会中将IBM定位为云端运算平台一大选择,俨然将亚马逊网络服务(AWS)及微软(Microsoft) Azure视为IBM全球云端领域主要竞争者。 本文转自d1net(转载)

优秀的个人博客,低调大师

资产交易所系统架构设计

本文介绍一个实际开发并上线的加密货币交易所项目的逻辑架构设计,其中包括撮合服务、做市服务、用户服务、市场数据服务、钱包服务、报表服务等核心组件,并采用了基于AKKA集群的微服务架构。 加密交易所的逻辑架构图如下所示: 如果希望快速掌握区块链应用的开发,推荐汇智网的区块链应用开发系列教程,内容涵盖比特币、以太坊、eos、Hyperledger fabric和tendermint等多种区块链,以及java、c#、go、nodejs、python、php、dart等多种开发语言。 1、订单服务 订单服务(Order Service)包含了负责匹配委托单并生成市场数据的撮合引擎(matching engine)。在加密货币交易所中,委托单按交易对进行撮合匹配,因此一个ETH/BTC的买单永远不会匹配到一个ETH/USDT的卖单。通常认为每一个交易对的订单匹配是依次进行的,例如,撮合进程必须是单线程的(每个交易对一个线程)。不过实际上还是有办法让这个流程中的某些环节实现并行化以便提高系统的吞吐量。订单处理过程包括以下步骤: 订单验证。这包括确认交易对处于可交易状态、校验订单的价格与数量等符合最低要求等等。 资金检查。目的是确保用户的账户中有足额资金用于下单。 风险检查,以避免异常的交易行为 确定该委托单的挂单(Maker)费率和吃单(Taker)费率,所依据的规则可能设计交易对、订单数量、用户等级等等。 创建用于撮合处理的订单对象,冻结下单用户账户中可能会用到的最大数量的资金。 在交易委托账本中匹配该新订单,匹配的结果可能是:无匹配、部分成交或全部成交。当 部分成交或全部成交时,可能在交易委托账本中存在一个或多个匹配的订单。 更新并持久化成交订单用户的账户余额,更新交易委托账本。 持久化由订单撮合成功而触发的其他数据,例如:订单执行记录、资金交易日志等等。 生成市场数据,并将更新的数据发布到前台服务器(Front Server) 假设从第1步到第5步需要5ms,第6步到第7步需要2ms,第8步需要2ms,第9步需要2ms。如果系统几乎同时接收到9个委托订单,使用单线程来执行上述全部步骤需要 9 x (5 + 2 + 2 + 2) = 99ms。然而,在上面的步骤中,其实只有第6步和第7步是真正需要单线程的。如果我们为第1步到第5步使用3个Actor,第6步到第7步使用1个actor以确保这两个步骤单线程执行,第8步和第9步使用1个actor,那么处理流程就变成了这样: 现在全部9个订单的总处理时间就缩短到了25ms,相对于前面的全串行处理所需的99ms,这是不小的改善。 订单服务(Order Service)是一个使用Akka和Spring框架开发的独立应用。它作为一个节点加入Akka集群,然后集群中的前台服务器(Front Server)节点就可以发现它。当启动订单服务实例时,我们可以在命令行参数中指定需要处理哪些交易对。我们可以使用单一的订单服务节点来处理所有的交易对,也可以使用多个订单服务节点分别处理不同的交易对集合。这意味着订单服务支持按交易对进行分片(sharding)。由于Akka系统actor的位置透明特性,前台服务节点并不需要关心订单服务是运行在一个节点还是多个节点上,这使得撮合引擎具备了水平扩展(Scale Out)的能力。 如果在集群中针对一个交易对(Trading Pair)存在多个订单服务节点,前台服务节点将始终访问最近加入集群的节点。我们可以启动一个订单服务节点A来处理BTC/USDT交易对,然后启动第二个订单服务节点B也来处理BTC/USDT交易对。前台服务器会始终将消息发送给最后加入集群的订单服务节点,因此集群中所有的前台服务节点都会发送BTC/USDT订单消息给节点B。如果之后的某个时间,节点B从集群中被移除,那么所有的前台服务节点将会得到Akka集群的通知,之后就会将BTC/USDT订单消息发送给节点A了。 我们使用这个用于前台服务节点和订单服务节点之间的简单的服务发现及路由协议,来实现订单服务的热备份(Hot Standby)高可用性。这个简单协议使得订单服务的水平扩展和升级非常容易。例如,当有一个新的订单服务需要部署时,我们可以先让老版本节点继续运行,然后启动新版本的节点。一旦新版本上线,前台服务节点将自动使用最新加入的节点而非之前的老版本节点,接下来我们只需要关掉老版本节点就可以了。 为了尽可能缩短订单匹配的时间,订单服务需要在内存中缓存(Cache)整个交易委托账本。当系统中存在多个处理相同交易对的订单服务节点时,就会在不同的节点上缓存交易委托账本的完全一致的多个拷贝。我们设计了一个简单但有效的方法来校验并同步多个节点上的内存委托账本。 订单服务还负责生成以下市场数据: K线数据,间隔分别为:1分钟、5分钟、15分钟、30分钟、1小时、2小时、4小时、6小时、12小时、 1天、1周、1月 所有交易对的市场深度(market depth)数据 所有交易对的最新出价 最近成交的交易对 订单服务将这些市场数据存入Redis服务中,并通过Redis的复制机制同步到前台集群中的redis服务器上,然后由前台服务器载入并推送给订阅该数据的用户。 2、做市服务 做市(Market making)对于加密货币交易所 —— 尤其是对于一个新创办的加密交易所 —— 的成功至关重要。如果交易所没有足够的交易人,那么买卖价差(bid-ask spread)通常要大于那些具有较好流动性的加密货币交易所。做市商(Market maker)为交易所增加了流动性,缩小了买卖价差,同时也为交易委托账本增加了深度,这些因素同时也会更加吸引交易人的加入。 做市商可以来自交易所的外部,他们使用交易所提供的API向交易委托账本中挂买单(Bid)和卖单(Ask)。对于一个刚创立的加密交易所而言,其本身也需要为某些交易对提供流动性,从而承担了做市商的角色。 一个基本的做市策略包括同时挂买单和卖单,这样当两方的订单都被市场吃掉后就挣到了买卖价差。由于加密货币的价格剧烈不稳定性,当市场价格向一个方向持续运动时,使用这种策略的做市商有可能损失惨重。例如,做市商挂买单以300 USDT的价格买1 ETH,同时挂另一个卖单以301 USDT的价格卖1 ETH。如果这两个订单都成交了,那么做市商就赚了1 USDT。如果卖单成交,价格继续上涨至310USDT,那么做市商的买单就没有机会在短期内成交,这导致做市商面临一个潜在的9 USDT的亏损。 做市模块使用订单服务以及外部交易所的交易委托账本、做市商的有效资金等作为输入,生成一系列不同价位的卖单和卖单。当任何输入发生变化,输出的做市委托单也会相应地变化,从而引起交易委托账本的相应变化。出于性能方面的考虑,订单服务内置了做市支持能力。订单服务将区别对待来自普通用户的委托单以及来自做市模块的委托单 —— 这些做市委托单只需要很少的资源,因此更加具有动态性。它们可以作为一个整体加入交易委托账本,或者进行一些调整,乃至从账本中整体移除,而不需要像普通用户的委托单那样必须逐一对待。同时,这些做市委托单也可以与用户单成交,如果任何用户的委托能够匹配这些做市单,那么接下来的执行和普通委托单是一致的。 除了向交易委托账本中添加订单,做市模块还能够向外部交易所下单,并且监视外部交易所中的订单执行状态,以实现自动化的对冲(Hedging)。 做市模块是使用Akka和Spring框架开发的一个独立应用。它连接到集群中的订单服务节点,看起来像订单服务的扩展模块 —— 订单服务的运行不需要做市模块。 3、用户服务 用户服务是一个用Akka和spring框架开发的独立应用,它为前台服务器提供用户相关的服务,例如用户注册、用户身份验证、KYC提交、密码管理、API密钥管理、充值地址管理等等。 当用户服务实例启动时,它会加入Akka集群,前台服务节点将会自动发现用户服务。我们可以在集群中启动多个用户服务节点。在这种情况下,前台服务器以轮询调度方式(round robin)将消息发送给所有的存活用户服务节点,从而保证了用户服务模块的可扩展性及高可用性。 用户服务可以直接访问核心数据库以及redis集群。它使用钱包服务节点提供的服务来创建新的区块链地址。 4、钱包服务 与逻辑架构图中的其他模块不同,钱包服务不是一个单一的独立应用,而是由多个应用组成。这主要是基于安全方面的考虑。作为一个整理,钱包服务: 为用户账户生成新的区块链地址以用于接收充值 管理交易所持有的热钱包地址私钥 创建提币交易,签名并提交到区块链网络 连接到多个区块链网络,搜索处理充值交易,跟踪提币交易的执行状态 在某些情况下,归集散落在众多用户地址中的加密货币到交易所的中心热/冷钱包。 校验交易所数据库中的资金数目,确保与区块链上的数据一致。 上述这些功能,有些是由用户服务模块通过REST接口调用,有些则需要接入区块链网络,而另一些则不需要接入区块链网络或其他模块,甚至不需要网络接入。我们将钱包服务基于其连接性与安全需求等拆分为多个应用。 5、Maria DB及ETL 在核心站点中包含一个Maria DB Galera集群。集群中的主(Master)数据库实例由应用直接使用,同时在集群中创建了两级从(Slave)数据库: 一个从集群中直接复制的数据库是复制中转库(replication staging database)。它作为边缘站点中的主库提供服务。当从核心数据库集群中复制时,它会过滤掉前台服务和web服务不使用的数据表,这可以避免泄漏敏感数据,同时减少了需要复制到边缘站点的数据量。 另一个直接从集群中复制的数据库是报表库实例。在这个MariaDB从库实例上创建有两个库,一个用于从核心集群中复制,另一个服务于管理服务器的报表功能。我们使用多维数据模型,并且在报表数据库中实现分析报表的生成。新的数据每个几秒钟就从复制库中抽取、转换并载入,以便保证管理服务器的数据时效。 出于安全及报表目的,每个30分钟或1个小时,系统制作一个所有用户状态的快照,包括账户余额、订单、交易执行等等。快照是活的,因为所有的历史快照都可以直接从报表数据库中查询并加以利用。当制作快照时,ETL流程将临时停止复制过程,以确保复制库处于静止状态。 6、REdis 核心站点中的Redis用于保存订单服务生成的市场数据,并通过复制机制推送到前端站点。我们之前在Part 2中已经详细介绍了redis的复制机制。 7、管理服务器和ETL 管理服务器是一个J2EE web应用,使用spring框架和spring mvc开发。Tomcat作为管理服务模块的应用服务器。Nginx置于Tomcat之前以启用HTTPS以及内容缓存。 管理服务器为交易所内部员工提供后台管理系统。采用基于角色的权限分配机制,用户可以分配不同的角色,而不同的角色则可以访问系统中的不同功能。管理服务器可以对每个用户的每个操作都生成审计日志。 我们使用ELK栈作为准实时分析子系统的基础。Logstash负责从各种来源(例如前台服务器和web服务器)采集日志并存入Elasticsearch数据库。验证过身份的交易所员工可以使用Kibana来查看预定义的报表,或者在ElasticSearch上执行任意的查询。我们也在管理服务器上构建了一些查询Elasticsearch数据的报表,这样大部分员工就不用同时访问管理服务器和Kibana了。 原文链接:加密货币交易所微服务架构设计 —— 汇智网

优秀的个人博客,低调大师

[python skill]基于python的bootstrap analysis方法

上回书说到(惊堂木!)Dr. Semmelweis and the discovery of handwashing案例中的第8步中使用了bootstrap分析方法(Bootstrap analysis of Semmelweis handwashing data),其实小弟内心写起来是有一丢丢心虚的,因为本身不是相关专业出身没有系统学习过概率学的方法,加之互联网时代大家皮糙肉厚,其实没太多时间仔细研究某一种具体的方式方法(可能只有我一个人这样)。碰巧,今天datacamp里面学习的一章节内容就是根据bootstrap analysis方法展开的。所以趁着工作室打烊前的小空隙,总结一下今天下午的学习成果。 所谓bootstrap analysis: 在统计学中,自助法(Bootstrap Method,Bootstrapping或自助抽样法)是一种从给定训练集中有放回的均匀抽样,也就是说,每当选中一个样本,它等可能地被再次选中并被再次添加到训练集中。自助法由Bradley Efron于1979年在《Annals of Statistics》上发表。当样本来自总体,能以正态分布来描述,其抽样分布(Sampling Distribution)为正态分布(The Normal Distribution);但当样本来自的总体无法以正态分布来描述,则以渐进分析法、自助法等来分析。采用随机可置换抽样(random sampling with replacement)。对于小数据集,自助法效果很好。 via wikihttps://zh.wikipedia.org/wiki/%E8%87%AA%E5%8A%A9%E6%B3%95 测试一下你对上文阅读理解能力: Q:What is abootstrap replicate? A:A single value of a statistic computed from a bootstrap sample. Q:How many unique bootstrap samples can be drawn (e.g.,[-1, 0, 1]and[1, 0, -1]areunique), and what is the maximum mean you can get from a bootstrap sample? A:There are 27 unique samples, and the maximum mean is 1. 为了更方便大家理解datacamp的老师们以谢菲尔德气象站从1883年到2015年的气象数据(伦敦的降雨情况)(导入numpy的rainfall中)为例作以分析: for i in range(50):#做50次实验 # Generate bootstrap sample: bs_sample bs_sample = np.random.choice(rainfall, size=len(rainfall))#每次有放回地抽取一个和rainfall一样长的样本bs_sample # Compute and plot ECDF from bootstrap sample x, y = ecdf(bs_sample)#为bs_sample生成一个CDF(累计密度函数),返回x值是降雨量,y值是小于这个x值的概率 _ = plt.plot(x, y, marker='.', linestyle='none', c='gray', alpha=0.1)#将这次循环中的bs_sample(i)画在图上 # Compute and plot ECDF from original data x, y = ecdf(rainfall)#为真实值生成一个CDF _ = plt.plot(x, y, marker='.')#也画在图上 # Make margins and label axes plt.margins(0.02) _ = plt.xlabel('yearly rainfall (mm)') _ = plt.ylabel('ECDF') # Show the plot plt.show() output: 看见那些模模糊糊的小黑影了吗,这些是你经过bootstrap replicate出来的结果,可以看出replicate出来的数据在一定程度上符合真实数据的概率分布,这就为我们下一步开展工作奠定了基础。 By graphically displaying the bootstrap samples with an ECDF, you can get a feel for how bootstrap sampling allows probabilistic descriptions of data. 可是这些sample真的可信吗?我们继续分析: 为了后面应用方便,我们定义下面函数: def bootstrap_replicate_1d(data,func): bs_sample=np.random.choice(data,len(data)) return func(bs_sample) #产生一次bootstrap sample,并对这个sample进行一次func操作 def draw_bs_reps(data,func,size=1): bs_replicates=np.empty(size) for i in range(size): bs_replicates[i]=bootstrap_replicate_1d(data,func) return bs_replicates #重复size次bootstrap_replicate_1d 从函数bootstrap_replicate_1d的功能上看,它sample了一个样本,而后返回了对这个样本的某种处理(func) draw_bs_reps函数则是对bootstrap sample进行重复,并将返回值记录在案,绳之以法,并最终返回案底。 那么这两个函数(实际上是draw_bs_reps)怎么用呢? # Take 10,000 bootstrap replicates of the mean: bs_replicates bs_replicates = draw_bs_reps(rainfall,np.mean,size=10000)#将rainfall做bootstrap sample,并将结果均值,重复10000次 # Compute and print SEM sem = np.std(rainfall) / np.sqrt(len(rainfall))#求出rainfall真实值的标准差 print(sem) # Compute and print standard deviation of bootstrap replicates bs_std = np.std(bs_replicates)#输出10000次平均值的标准差 print(bs_std) # Make a histogram of the results _ = plt.hist(bs_replicates, bins=50, normed=True)#做10000次实验的概率直方图 _ = plt.xlabel('mean annual rainfall (mm)') _ = plt.ylabel('PDF') # Show the plot plt.show() output: 10.5105491505 10.4659270712 可以看出真实值的离散程度和做10000次实验得出的平均值的离散程度是非常接近的。 而且当做100000次实验的时候,两者的离散程度就愈发接近了。 10.5105491505 10.5062818229 这能说明什么呢? 当我们做一个统计计算时,经常会发现无法收集到全部的样本数据(从盘古开天辟地到宇宙大撕裂的降雨情况),出于这种无奈,我们只好退而求其次地相信选取其中的某一段数据(1883年到2015年),经过反复的bootstrap replicate(相当于无限重复抽样的次数,以弥补我们在客观现实世界中无法发无限次重复实验的遗憾),得到一系列的样本,从中认为这就是最接近客观世界的样本。 If we repeated measurements over and over again,p% of the observed values would lie within the p%confidence interval. 如果我们依次便吹牛逼说自己得到了某一个准确的值,它便是客观世界中(从盘古开天辟地到宇宙大撕裂的时期的)降雨的平均值(或者方差,或者其他统计数据),那确实显得有点扯了。于使统计学家们经过不懈努力定义了一个置信区间,认为如果在这种抽样操作不变的情况下,再进行的所有抽样,其平均值(或者其他统计数据)落在这个区间内的是有一定可能性的(95%,或者其他)。 np.percentile(bs_replicates,[2.5,97.5]) emergency!!!(存疑) 今天刚查了一下percentile的用法,发现它只是取数据在升序排列后位于2.5%位置和97.5%位置的,并不是我们传统意义上的对正态分布(或小样本T分布所求的置信区间)。 应用scipy求一个小样本的T分布置信区间代码如下: import numpy as np from scipy import stats X1=np.array([14.65,14.95,8.49,9.51,10.23,2.75]) Xmean=X1.mean() Xstd=X1.std(ddof=1) interval=stats.t.interval(0.95,len(X1-1),Xmean,Xstd) print("置信区间为:",interval) https://blog.csdn.net/brucewong0516/article/details/80205422 回复上面的疑问!!!!!! 刚刚跟大神聊了一下,得到的回复如下: 基于t分布的均值置信区间估计是在正态总体假设下才能用的,而百分位法没这个限制,这也和Bootstrap法不假设样本的分布类型相匹配 并且还得知: 是的,Bootstrsp方法只能缩减置信区间,无法更加准确的估计客观真实值,这是小样本的根本缺陷,如果想更加准确的估计客观真实值,就只能增大样本容量。 而且Bootstrap方法得到的置信区间是用百分位法得到的,和正态总体假设的t分布法不一样 恍然大悟啊有木有! output: array([ 779.76992481, 820.95043233]) 置信区间参考:https://www.zhihu.com/question/26419030 我认为这个解释是最为靠谱的: 然后我们用同样的方法对方差进行了估计: # Generate 10,000 bootstrap replicates of the variance: bs_replicates bs_replicates = draw_bs_reps(rainfall,np.var,10000)#对10000次实验求方差 # Put the variance in units of square centimeters bs_replicates=bs_replicates/100 # Make a histogram of the results _ = plt.hist(bs_replicates, bins=50, normed=True) _ = plt.xlabel('variance of annual rainfall (sq. cm)') _ = plt.ylabel('PDF') # Show the plot plt.show() output: 当然也可以对其他案例进行分析,案例暂且不表,只贴出一下结果: # Draw bootstrap replicates of the mean no-hitter time (equal to tau): bs_replicates bs_replicates = draw_bs_reps(nohitter_times,np.mean,10000) # Compute the 95% confidence interval: conf_int conf_int = np.percentile(bs_replicates,[2.5,97.5]) # Print the confidence interval print('95% confidence interval =', conf_int, 'games') # Plot the histogram of the replicates _ = plt.hist(bs_replicates, bins=50, normed=True) _ = plt.xlabel(r'$\tau$ (games)') _ = plt.ylabel('PDF') # Show the plot plt.show() output: 95% confidence interval = [ 660.67280876 871.63077689] games 以上的分析为均为一种nonparametric inference(非参数估计,Make no assumptions about the model orprobability distribution underlying the data,参考:https://blog.csdn.net/drrlalala/article/details/45533821 ,已知样本所属的类别,但未知总体概率密度函数的形式,要求我们直接推断概率密度函数本身。非参数估计也有人将其称之为无参密度估计,它是一种对先验知识要求最少,完全依靠训练数据进行估计,而且可以用于任意形状密度估计的方法。)下面介绍一些参数估计的方法,还是二维参数(paris bootstrap)。 这个例子是关于奥巴马2008年大选(2008 US swing state election results),我们要完成的是将各个洲的选票数与奥巴马的得票比作以拟合(从而实现预测?maybe)。 与之前不同之处是,变量从前一个例子中的单一变量(降雨量)变成了两个变量(选票数与得票比),而np.random.choice只能针对单一变量进行抽样,而数据是成对(in pair)出现的,这意味着我们不能像之前一样sample得简单粗暴。看一看这个案例中我们是如何进行抽样的: def draw_bs_pairs_linreg(x, y, size=1): """Perform pairs bootstrap for linear regression.""" # Set up array of indices to sample from: inds inds = np.arange(len(x))#选用pair中的一个变量长度作为指数 # Initialize replicates: bs_slope_reps, bs_intercept_reps bs_slope_reps = np.empty(size)#初始化两个空list用于存储每次实验得到的参数 bs_intercept_reps = np.empty(size) # Generate replicates for i in range(size):#重复size次实验 bs_inds = np.random.choice(inds, size=len(inds))#抽取和变量长度相当个数的指数 bs_x, bs_y = x[bs_inds], y[bs_inds]#依据指数选取成对的变量 bs_slope_reps[i], bs_intercept_reps[i] = np.polyfit(bs_x,bs_y,1)#用选取到的变量进行线性拟合 return bs_slope_reps, bs_intercept_reps#返回斜率和截距 案例中利用新定义的指数作为抽取哪些变量的计量,完成了bootstrap sample的过程。 然鹅,datacamp的老师并没有继续使用奥巴马的案例完成后面的工作,而是选用了之前妇女生育率和文盲率的案例进行分析(- - 我也没看懂),不过代码大致是相同的: # Generate replicates of slope and intercept using pairs bootstrap bs_slope_reps, bs_intercept_reps = draw_bs_pairs_linreg(illiteracy,fertility,1000) # Compute and print 95% CI for slope print(np.percentile(bs_slope_reps, [2.5,97.5])) # Plot the histogram _ = plt.hist(bs_slope_reps, bins=50, normed=True) _ = plt.xlabel('slope') _ = plt.ylabel('PDF') plt.show() output: [ 0.04378061 0.0551616 ] # Generate array of x-values for bootstrap lines: x x = np.array([0,100]) # Plot the bootstrap lines for i in range(100): _ = plt.plot(x, bs_slope_reps[i]*x + bs_intercept_reps[i], linewidth=0.5, alpha=0.2, color='red') # Plot the data _ = plt.plot(illiteracy,fertility,marker='.',linestyle='none') # Label axes, set the margins, and show the plot _ = plt.xlabel('illiteracy') _ = plt.ylabel('fertility') plt.margins(0.02) plt.show() output: thats all thank you~ 数据和方案来自:https://campus.datacamp.com/courses/statistical-thinking-in-python-part-2/bootstrap-confidence-intervals?ex=1 课程讲义:https://github.com/chenchutong/DESOLATION_ROW/blob/master/slides/ch2_slides.pdf

资源下载

更多资源
Spring

Spring

Spring框架(Spring Framework)是由Rod Johnson于2002年提出的开源Java企业级应用框架,旨在通过使用JavaBean替代传统EJB实现方式降低企业级编程开发的复杂性。该框架基于简单性、可测试性和松耦合性设计理念,提供核心容器、应用上下文、数据访问集成等模块,支持整合Hibernate、Struts等第三方框架,其适用范围不仅限于服务器端开发,绝大多数Java应用均可从中受益。

Rocky Linux

Rocky Linux

Rocky Linux(中文名:洛基)是由Gregory Kurtzer于2020年12月发起的企业级Linux发行版,作为CentOS稳定版停止维护后与RHEL(Red Hat Enterprise Linux)完全兼容的开源替代方案,由社区拥有并管理,支持x86_64、aarch64等架构。其通过重新编译RHEL源代码提供长期稳定性,采用模块化包装和SELinux安全架构,默认包含GNOME桌面环境及XFS文件系统,支持十年生命周期更新。

Sublime Text

Sublime Text

Sublime Text具有漂亮的用户界面和强大的功能,例如代码缩略图,Python的插件,代码段等。还可自定义键绑定,菜单和工具栏。Sublime Text 的主要功能包括:拼写检查,书签,完整的 Python API , Goto 功能,即时项目切换,多选择,多窗口等等。Sublime Text 是一个跨平台的编辑器,同时支持Windows、Linux、Mac OS X等操作系统。

WebStorm

WebStorm

WebStorm 是jetbrains公司旗下一款JavaScript 开发工具。目前已经被广大中国JS开发者誉为“Web前端开发神器”、“最强大的HTML5编辑器”、“最智能的JavaScript IDE”等。与IntelliJ IDEA同源,继承了IntelliJ IDEA强大的JS部分的功能。

用户登录
用户注册