《R语言初学指南》一2.6 本章小结

2.6 本章小结

R语言初学指南
在上例中,由于向量t、principal.paid.month.t、interest.paid.month.t及principal.remaining都包含360(或m)个元素,它们在控制台显示时会出现大片的数字。若能将它们组织成某种表格,使之能更好地呈现出来就好了。同样,还需要几种能将大型数据表格输入到R中的方法。在第5章中将会讨论数据的输入及输出。

在之前给出的脚本中,函数sum()可能会令人好奇,它可对任一向量中的所有元素求和。R中有很多这样的函数,在第3章中会介绍其中一部分。同样在第3章中还可学到如何写自定义的函数,或许更重要的是,可学到为什么要写自定义的函数!

到这里可能已经有人注意到,R脚本与计算机学家所讲的计算机程序极为相似,写脚本几乎就是将计算机程序组织到一起。是的,就是这样的。你就是极客!要习惯你的新身份。

这里将会从零开始,讲解什么是贷款方程!看上去好像需要很多代数计算才能得出这个方程,但实际上每一个步骤都很简单(且这些代数方法会多次用到)。若只想继续完成这个例子,可接受这个方程并跳过这部分内容。若决定继续研究这个推导,先停一下去买几份铅笔公司的股票吧。

在开始推导贷款方程之前,先介绍一下等比级数公式,这一巧妙的数学结论对推出方程很有帮助。任取一个非零实数r,将它前k次幂累加,其中k为任意正整数:

这个求和表达式即为等比级数,其中的1表示r0。下面,用(1−r)/(1−r)乘以整个表达式,即将表达式与1相乘,故求和表达式的值不变。这个结果可写成分数形式:

看一下分子上的乘积会是怎样:等比级数中的每一项分别乘以1和−r。

别忘了分母上的(1−r)项,这样,对r的各阶幂的和得到了一个十分简单的表达式:

这个公式即为等比级数公式,它经常出现在各种金融及科学计算中。一定要好好记住它(记在大脑的硬盘里,而不是RAM中)。

下面回到之前的抵押贷款问题中。在分析每月还款额时以月为时间单位,故在这个案例中共有30×12=360份还款。年利率也是这个计算中的一部分,这里采用0.05作为年利率,则月利率为0.05/12=0.00417(近似值)。

每月应偿还一部分本金,并当月支付本金余额的利息。其中每月偿还的本金额度是不等的,将其分别记为x_1 ,x_2 ,x_3 , cdots ,x_{359} ,x_{360} ,且每个值都是未知的。但现在已知将所有的值相加之后,其和必须等于贷款的本金额度:

同样,这里还知道每月还款情况的一些信息。第1个月的还款为本金x1与利息(0.00417)×(25000)之和。第2个月的还款为本金x2加上利息(0.00417)×(25000−x1)。在每月还款的过程中,由于已还本金的累加,未偿还本金会不断减少:

同样,这里还希望每月的总还款额均相等。在上面所列出的表达式中,找出第1个月和第2个月的表达式,并将两者相减。若两月的还款额相等,则相减后的值为0。通过相减还可找到x1与x2之间的关系:

这个等式是不是看上去眼熟?本金的偿还额度是呈指数增长的,与第1章中计算的银行存单类似。在任意给定的第t月中,须偿还的本金额度可用第1个月的本金偿还额度表示:

这里只需知道第1个月的偿还额,就可计算出其他所有月份的偿还额。别忘了,所有月份的偿还额的总和要与本金总额(所有借款额)相等:

故,第t个月偿还的本金为:

1.R脚本是一个预先准备好的R命令集合,从头到尾按顺序运行。在Windows和Mac版本的R中,可使用R自带的R编辑器来编写、保存以及运行脚本。在现有的Unix版本的R中,可使用任意的外部文本编辑器来编写及保存脚本。

2.在“File”菜单中可按下面路径找到R编辑器:File→New script可打开一个空白的编辑器来编写新的脚本;File→Open script可打开一个已存在的脚本。

3.在“File”菜单中可将R编辑器中的脚本保存为文件:File→Save可保存对已存在文件的修改;File→Save as…可另存为新脚本。对包含R脚本的文件,其文件名后缀一般为“.R”。在第一次保存文件时,R编辑器不会自动添加该后缀。

4.“运行”一个脚本是指将R命令发送到控制台并运行。在R编辑器中,可用“Edit”菜单运行脚本:Edit→Run all。在Unix中,可将整个R脚本复制并粘贴到R控制台的提示符处,再运行脚本,或者将文件路径及文件名输入到命令source("")引号里面,在控制台中运行。

5.通过在R编辑器中选中并高亮部分脚本并利用“Edit”菜单可以实现部分命令的运行:Edit→Run line or selection。在Unix中,可将部分脚本复制并粘贴到控制台的提示符处。

6.由于输入错误和(或)其他失误,在运行刚编写好的R脚本进行计算时,可能会出现一些问题或“bug”。从头到尾一行行地运行脚本,可有效地查找bug。某些bug可能会导致脚本中后续的一些R语句出错,故有时修正一个bug可同时解决后面的几个bug。

7.R脚本中不参与运行的命令行称为注释。注释可提供有价值的解释并能辅助回忆脚本的功能,故建议大量使用注释。注释的标识符为“#”,每行中该符号右侧的内容都会被识别为注释,它们不参与运行。

例如:

# Here.is.an.illustration of element-by-element vector
#  multiplication in R.
x=c(1,2,3)    # x.is.defined.as.the.vector.with.elements
         # 1, 2, 3.
y=c(−1,−2,−3) # y.is.definedas.the.vector.with.elements
         # −1, −2, −3.
z=x*y      # z is defined as the vector containing.the
         # elements of x multiplied by the
         # corresponding elements of y.
z         # Print z to the console.
时间: 2024-10-26 13:26:22

《R语言初学指南》一2.6 本章小结的相关文章

《区块链原理、设计与应用》一导读

前 言 区块链和机器学习被誉为未来十年内最有可能提高人类社会生产力的两大创新科技.如果说机器学习的兴起依赖于新型芯片技术的发展,那么区块链技术的出现,则是来自商业.金融.信息.安全等多个领域众多科技成果和业务创新的共同推动. 比特币网络自横空出世,以前所未有的新型理念支持了前所未有的交易模式:以太坊项目站在前人肩膀上,引入图灵完备的智能合约机制,进一步释放了区块链技术的应用威力:众多商业.科技巨头,集合来自大型企业的应用需求和最先进的技术成果,打造出支持权限管理的联盟式分布式账本平台--超级账本

《区块链原理、设计与应用》一2.1 定义与原理

2.1 定义与原理 1.?定义 公认的最早关于区块链的描述性文献是中本聪所撰写的文章<Bitcoin:A Peer-to Peer Electronic Cach System>,但该文献重点在于讨论比特币系统,实际上并没有明确提出区块链的定义和概念,在其中指出,区块链是用于记录比特币交易账目历史的数据结构. 另外,Wikipedia 上给出的定义中,将区块链类比为一种分布式数据库技术,通过维护数据块的链式结构,可以维持持续增长的.不可篡改的数据记录. 区块链技术最早的应用出现在比特币项目中.

《区块链原理、设计与应用》一2.6 本章小结

2.6 本章小结 本章剖析了区块链的相关核心技术,包括其定义.工作原理.技术分类.关键问题和认识上的误区等.通过本章的学习,读者可以对区块链的相关核心技术形成整体上的认识,并对区块链在整个信息科技产业中的位置和发展趋势形成更清晰的认知. 除了数字货币应用外,现在业界越来越看重区块链技术可能带来的面向商业应用场景的计算能力.开源社区发起的开放的"以太坊"和"超级账本"等项目,让用户可以使用它们来快速设计复杂的分布式账本应用. 有理由相信,随着更多商业应用场景的出现,区

《区块链原理、设计与应用》一3.2 金融服务

3.2 金融服务 自有人类社会以来,金融交易就是必不可少的经济活动,涉及货币.证券.保险.抵押.捐赠等诸多行业.交易角色和交易功能的不同,反映出不同的生产关系.通过金融交易,可以优化社会运转效率,实现资源价值的最大化.可以说,人类社会的文明发展,离不开交易形式的演变. 传统交易本质上交换的是物品价值的所属权.为了完成一些贵重商品的交易(例如房屋.车辆的所属权),往往需要十分繁琐的中间环节,同时需要中介和担保机构参与其中.这是因为,交易双方往往存在着不能充分互信的情况.一方面,要证实合法的价值所属

《区块链原理、设计与应用》一2.4 趋势与展望

2.4 趋势与展望 关于区块链技术发展趋势的探讨和争论,自其诞生之日起就从未停息.或许,读者从计算技术的演变历史中能得到一些启发. 计算技术的发展历史如图2-3所示. 以云计算为代表的现代计算技术,其发展历史上有若干重要的时间点和事件: 1969--ARPANet(Advanced Research Projects Agency Network):现代互联网的前身,由美国高级研究计划署(Advanced Research Project Agency)提出,其使用 NCP 协议,核心缺陷之一是

《区块链原理、设计与应用》一2.2 技术的演化与分类

2.2 技术的演化与分类 区块链技术自比特币网络设计中被大家发掘关注,从最初服务数字货币系统,到今天在分布式账本场景下发挥着越来越大的技术潜力. 1.?区块链的演化 比特币区块链已经支持了简单的脚本计算,但仅限于数字货币相关的处理.除了支持数字货币外,还可以将区块链上执行的处理过程进一步泛化,即提供智能合约(smart contract).智能合约可以提供除了货币交易功能外更灵活的合约功能,执行更为复杂的操作. 这样,扩展之后的区块链已经超越了单纯数据记录的功能,实际上带有一点"智能计算&quo

《区块链原理、设计与应用》一1.3 了不起的社会学实验

1.3 了不起的社会学实验 1.比特币的诞生 2008 年 10 月 31 日,一位化名 Satoshi Nakamoto (中本聪) 的人在metzdowd 密码学邮件列表中提出了比特币(Bitcoin)的设计白皮书<Bitcoin: A Peer-to-Peer Electronic Cash System>,并在 2009 年公开了最初的实现代码.首个比特币于 UTC 时间 2009 年 1 月 3 日 18∶15∶05 生成.但比特币真正流行开来并被人们所关注则是至少两年以后了. 作为

《区块链原理、设计与应用》一第2章 核心技术概览

第2章 核心技术概览 运用之妙夺造化,存乎一心胜天工. 有人可能会遇到这样的问题: 跨境商贸合作中签订的合同,怎么确保对方能严格遵守和及时执行? 酒店宣称刚打捞上来的三文鱼,怎么追踪捕捞和运输过程中的时间和卫生? 现代数字世界里,怎么证明你是谁?怎么证明某个资产属于你? 经典囚徒困境中的两个人,怎样才能达成利益的最大化? 宇宙不同文明之间的"黑暗森林"猜疑链,有没有可能被彻底打破? 这些看似很难解决的问题,在区块链的世界里已经有了初步的答案.本章将带领大家探索区块链的核心技术,包括其定

《区块链原理、设计与应用》一2.5 认识上的误区

2.5 认识上的误区 目前,由于区块链自身仍是一种相对年轻的技术,不少人对区块链的认识还存在一些误区.下面是需要注意的一些问题: 首先,区块链不等于比特币.虽说区块链的基本思想诞生于比特币的设计中,但发展到今日,比特币和区块链已经俨然成为了两个不太相关的技术.前者更侧重从数字货币角度发掘比特币的实验性意义:后者则从技术层面探讨和研究可能带来的商业系统价值,试图在更多的场景下释放智能合约和分布式账本带来的科技潜力. 其次,区块链不等于数据库.虽然区块链也可以用来存储数据,但它要解决的核心问题是多方

《区块链原理、设计与应用》一3.1 应用场景概览

3.1 应用场景概览 区块链技术已经从单纯的技术探讨走向了应用落地的阶段.国内外已经出现大量与之相关的企业和团队.有些企业已经结合自身业务摸索出了颇具特色的应用场景,更多的企业还处于不断探索和验证的阶段. 实际上,要找到合适的应用场景,还是要从区块链技术自身的特性出发进行分析. 区块链在不引入第三方中介机构的前提下,可以提供去中心化.不可篡改.安全可靠等特性保证.因此,所有直接或间接依赖于第三方担保机构的活动,均可能从区块链技术中获益. 区块链自身维护着一个按时间顺序持续增长.不可篡改的数据记录