链接:http://www.zhihu.com/question/21792740/answer/27104765
来源:知乎
著作权归作者所有。商业转载请联系作者获得授权,非商业转载请注明出处。
reshape2 横向、纵向做数据变换,例如把纵向堆叠在数据库中的证券行情数据转换成一个按照不同证券代码横向排列,按照时间纵向排列收盘价的数据表
stringr 方便地用正则表达式做批量字符串操作,可做检测、匹配、替换、计数等等
lubridate 方便地做日期/时间操作,各种标准化时间和时区的处理
plyr 轻松地在vector, list, data.frame之间做分组变换,实现拆分、变换、合并的操作
dplyr 轻松地处理data.frame, data.table以及多种数据库为基础的数据,实现选择、变换、分组等等,速度很快
RODBC 连接ODBC数据库接口
RSQLite 连接轻量级SQLite数据库连接
jsonlite 读写json文件
yaml 读写yaml文件,实现灵活的程序外部配置
Rcpp, Rcpp11 写C++03/11代码直接编译后给R调用,大幅提升算法性能
data.table 快速处理较大数据表
ggplot2 高级绘图,一套统一的语法实现复杂图像组合绘制
zoo 时间序列数据的预处理,比如滚动平均等等
rmarkdown 用Markdown写文档并可方便地运行R代码与绘图
knitr 自动文档生成
devtools 扩展包开发必备,在线安装托管的扩展包,检查扩展包是否符合CRAN标准等等
testthat 扩展包自动测试
pipeR 自己写的高性能、低损耗、分工明确的管道操作(pipeline operator)扩展包,使得数据变换流程化
=== 专业领域(数值计算) ===
rootSolve 非线性方程求根、ODE均衡状态解
Rsolnp 非线性优化
=== 专业领域(计量和统计学习) ===
sde 随机微分方程模拟和统计推断
KernSmooth 非参数平滑与分布估计
cpm Change Point Detection 实时分布或者统计关系变化检测
stats4 可用来方便地做MLE估计
可以利用as.factor 函数,将该列转换为factor数据类型,在使用summary来看数据信息:如列表命名为 raw.data
summary(as.factor(raw.data$subject))
就可以了。举一个列子:
a<-c("a","a","b","c")
summary(as.factor(a))
一般地, TOPSIS综合评价法 主要包含两个步骤:计算权重和计算相对接近度。如需详细了解 TOPSIS综合评价法 的原理和方法,请自行百度,网上有许多非常详尽的原理说明和案例讲解。
根据熵权法确定各个指标的权重;计算各指标信息熵,指标的信息熵越小,则该指标表达信息的不确定性小,在综合评价中对决策的帮助更大,即应该有较大的权重。熵权法是一种客观的赋予权重的方法,它通过各个指标所提供的信息不确定性来确定各指标的权重
根据权重加权规范化指标属性矩阵后,确定正理想方案Amax和负理想方案 Amin,计算各备选方案与Amax 、Amin的距离,以评估与正负理想方案的接近程度,根据相对接近度确定优先次序。其中计算距离一般使用欧式距离。
按照惯例,导入需要使用的包 data.table 、 plyr 。然后载入使用的数据,我们简单看一下案例数据情况。
其中的字段target即为目标字段,我们需要对其含有的8个方案(A~H)进行综合评价排序,选择其中的最优方案。该数据集中的指标均为正向指标。正向指标表示指标的数值越高越好,负向指标则表示指标的数值越低越好,这决定了该指标在进行权重计算时的处理方式。
计算权重的第一步是计算各个指标的熵值,由于我们用到的指标均是正向指标,所以选择自定义函数 entropy_positive 即可。如果指标既存在正向指标又存在负向指标,则可分开进行计算。自定义函数情况如下:
调用函数并完成权重的计算,x1~x8的权重依次为:11.10%、6.61%、28.19%、7.08%、11.88%、8.11%、11.94%、15.09%,计算过程如下:
在将指标向量规范化后,利用熵值法得到的权重计算得到加权标准化矩阵,然后提取正理想方案和负理想方案并计算出各个方案距离正负理想方案的距离,最终根据计算得到距离比值进行排序。具体计算过程如下:
至此,我们就完成了用 TOPSIS综合评价法 进行多对象多指标的最优对象选择,输出的结果如下,显然在这八个方案中,方案A为最优方案。