基于R语言实现Lasso回归分析

Python011

基于R语言实现Lasso回归分析,第1张

基于R语言实现Lasso回归分析

主要步骤:

数据存成csv格式,逗号分隔

在R中,读取数据,然后将数据转成矩阵形式

加载lars包,先安装

调用lars函数

确定Cp值最小的步数

确定筛选出的变量,并计算回归系数

具体代码如下:

需要注意的地方:

1、数据读取的方法,这里用的file.choose( ),这样做的好处是,会弹出窗口让你选择你要加载进来的文件,免去了输入路径的苦恼。

2、数据要转为矩阵形式

3、(la) 可以看到R方,这里为0.66,略低

4、图如何看? summary的结果里,第1步是Cp最小的,在图里,看到第1步与横轴0.0的交界处,只有变量1是非0的。所以筛选出的是nongyangungun

Ps: R语言只学习了数据输入,及一些简单的处理,图形可视化部分尚未学习,等论文写完了,再把这部分认真学习一下~~在这里立个flag

作者:任坤

链接: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估计

glmnet和lars一样都可以得到整个path,glmnet里面用的是CV选择的最优lambda,本身可以直接求解lasso估计,BIC直接根据其definition formula编写一个小的function来计算。你用glmnet得到的最优lambda不能直接用于计算adaptive lasso估计,因为两者对应的最优lambda不一定相同,都可以按照CV或者BIC来选择。