R语言中的defaults包是干什么用的

Python020

R语言中的defaults包是干什么用的,第1张

1. 列出包所在库的路径

.libPaths()

[1] "C:/Program Files/R/R-3.0.2/library"

2. 安装包,括号里面包的名称要加英文引号,在列出的CRAN镜像站点列表中选择一个进行下载,我一般选的是China(Hefei)

install.packages()

例如,install.packages("ggplot2")

3. 包的载入library()或require(),安装完包后,需要加载才能使用其中的函数,此时括号中不使用引号。两者的不同之处在于library()载入之后不返回任何信息,而require()载入后则会返回TRUE,因此require()适合用于程序的书写。

例如

library(ggplto2)

>require(foreign)

Loading required package: foreign

>is.logical(require(foreign))

[1] TRUE

4. 包的更新

update.packages()

5. 包的帮助信息 格式如下,可以查看包中的函数以及说明

help(package="ggplot2")

6. 查看本地的包

6.1 查看默认加载的包,忽略基本的包

getOption("defaultPackages")

>getOption("defaultPackages")

[1] "datasets" "utils" "grDevices" "graphics" "stats" "methods"

[7] "ggplot2"

6.2 查看当前已经加载过的包

(.packages())

[1] "ggplot2" "stats" "graphics" "grDevices" "utils" "datasets" "methods" "base"

6.3 要显示所有可用的包

(.packages(all.available=TRUE))

>(.packages(all.available=TRUE))

[1] "abind" "agricolae" "aplpack" "base" "bitops"

[6] "boot" "car" "caTools" "class" "cluster"

[11] "codetools" "colorRamps" "colorspace" "compiler" "datasets"

[16] "Defaults" "devtools" "dichromat" "digest" "doBy"

[21] "e1071" "effects" "ellipse" "evaluate" "foreign"

[26] "formatR" "Formula" "gdata" "ggplot2" "ggthemes"

[31] "gmodels" "gplots" "graphics" "grDevices" "grid"

[36] "gtable" "gtools" "highr" "Hmisc" "httr"

[41] "KernSmooth" "knitr" "labeling" "lattice" "latticeExtra"

[46] "leaps" "lme4" "lmtest" "LSD" "manipulate"

[51] "markdown" "MASS" "Matrix" "matrixcalc" "memoise"

[56] "methods" "mgcv" "minqa" "multcomp" "munsell"

[61] "mvtnorm" "nlme" "nnet" "nortest" "parallel"

[66] "pixmap" "plyr" "proto" "psych" "quantmod"

[71] "Rcmdr" "RColorBrewer" "Rcpp" "RcppEigen" "RCurl"

[76] "relimp" "reshape2" "rgl" "rJava" "RODBC"

[81] "rpart" "rstudio" "samplesize" "sandwich" "scales"

[86] "schoolmath" "sciplot" "sem" "spatial" "splines"

[91] "stats" "stats4" "stringr" "survival" "tcltk"

[96] "tcltk2" "TH.data" "tools" "TTR" "utils"

[101] "VennDiagram" "whisker" "XLConnect" "xts" "zoo"

7. 卸载包detach(),这是library()的反向操作,此操作主要是为了避免某些包中的函数名称相同,造成冲突,注意与library()的参数不同,detach()参数为detach(package:包的名称),library(包的名称)。

例如

>library(ggplot2) #加载包

>(.packages()) #列出当前已经加载的包

[1] "ggplot2" "stats" "graphics" "grDevices" "utils" "datasets"

[7] "methods" "base"

>detach(package:ggplot2) # 卸载ggplot2包

>(.packages()) #列出当前已经加载的包

[1] "stats" "graphics" "grDevices" "utils" "datasets" "methods"

[7] "base"

8. 自定义启动时候的加载包

如果需要长期使用某个包的话,每次开启都需要输入library(),比较麻烦,因此可以让R启动时自动加载某些包。在R的安装目录/etc/Rprofile.site加入下载语句:

例如让R启动时自动加载ggplot2包

local({old <- getOption("defaultPackages")

options(defaultPackages = c(old, "ggplot2"))})

9. 在文章中引用R软件包,例如引用ggplot2包:

citation(package="ggplot2")

To cite ggplot2 in publications, please use:

H. Wickham. ggplot2: elegant graphics for data analysis. Springer New

York, 2009.

A BibTeX entry for LaTeX users is

@Book{,

author = {Hadley Wickham},

title = {ggplot2: elegant graphics for data analysis},

publisher = {Springer New York},

year = {2009},

isbn = {978-0-387-98140-6},

url = {http://had.co.nz/ggplot2/book},

}

前几天写了一篇直接在PowerBI里面使用度量值做一元回归的内容,虽然灵活性很高,但是实际中对一个结果影响的因素是很多的,还是使用多元回归的场景更多。而且我们借助统计分析包不仅可以计算出回归参数,还可以看看一些衡量模型的重要指标,比如R2/调整的R2,还可以通过置信区间的设置来求出预测区间。

我们这次的案例是有四个影响GMV值得因素,UV访客数、推广费用的投入、整体商品降价水平(优惠力度)和客服的服务评分,通过计算这四个因素的具体影响值来求出预测GMV,本次使用的是在PowerBI数据集的基础上调用R script来实现,下次再来用Python实现。数据和模型会放在最后供下载学习使用,数据如下↓

下面开始实现,首先在PowerQuery里面加载数据,加载的数据和我们原始数据内容一样,当然如果是订单明细数据,只需要进行一下按日期Group by就行了。

这就是我们需要处理的数据样式,就是表格,在R语言里面叫做数据框,然后我们需要在PowerQuery里面调用R语言脚本,在Transform菜单下面最后一列↓

点击后就会出现R语言脚本的编辑器,这里就不介绍R语言如何实现多元线性回归模型的了,我记得之前R语言的集合里面有详细介绍《R语言_018回归》,有兴趣的可以翻去看看。主要就是使用lm拟合多个参数,然后我们这里再把拟合的结果求出来就行了,代码也很简单,如下↓

fit <- lm(gmv ~ uv + promotion_exp + price_diff + service_score,

data=dataset)

df<- data.frame(coef(fit))

names(df)[names(df)=="coef.fit."] <- "coefficients"

df['variables'] <- row.names(df)

再多说一句,不管是调用R语言还是Python,不管PowerQuery里面当前的流程是怎么命名的,在脚本编辑器里面的数据集都是用dataset命名的。最后运行结果如下↓

于是我们已经得到了我们最需要的几个参数,根据我们的历史数据,得出来的截距是-41045,uv的影响是12.62(每新增100个用户就会带来1262的GMV),费用投入影响是24.21(每投入100元带来2421的GMV),降价影响1074(每降价1元带来1074GMV),服务评分影响是8855(评分每增加0.1分GMV增加885)。总体看来各项因素对GMV都有一定的影响,在此基础上,我们如果想要达到目标的GMV,就可以从这几方面入手了。

然后回到PowerBI,我们把这几个参数用度量值写下来,再把公式写出来,DAX语句和结果如下↓

Intercept = CALCULATE(SUM('回归系数'[coefficients]),'回归系数'[variables]="(Intercept)")

UV = CALCULATE(SUM('回归系数'[coefficients]),'回归系数'[variables]="uv")

promotion_exp = CALCULATE(SUM('回归系数'[coefficients]),'回归系数'[variables]="promotion_exp")

price_diff = CALCULATE(SUM('回归系数'[coefficients]),'回归系数'[variables]="price_diff")

service_score = CALCULATE(SUM('回归系数'[coefficients]),'回归系数'[variables]="service_score")

关键值和预测GMV的公式我们都有了,我们就可以带入相关值进行预测了,只需要新建四个参数就行了,然后新建一个预测的度量值就行了,度量值和结果如下↓

预测公式 =

"预计GMV公式 = " &UNICHAR(10) &

FORMAT([Intercept],"#0") &

" + UV*" &FORMAT([UV],"#0.00") &

" + 费用*" &FORMAT([promotion_exp],"#0.00") &

" + 降价*" &FORMAT([price_diff],"#0") &

" + 服务分*" &FORMAT([service_score],"#0")

当然我们还没有结束,前面说过我们我们还可以加入很多值来判断这个模型的好坏,其中一个很重要的指标就是R2和调整的R2,当然我们还可以检验线性关系、共线性等问题。这里我们以R2举例,还是在PowerQuery里面来实现,只需要把R语言代码改一下就行了,代码和结果如下↓

fit <- lm(gmv ~ uv + promotion_exp + price_diff + service_score,

data=dataset)

s1 <- summary(fit)

df <- data.frame(name = c("R2","R2ajd"),

values = c(s1$r.squared,s1$adj.r.squared))

得到了R2和调整的R2,0.78,说明这个多元线性回归模型还是相当的不错,如果在真实场景中有这么高的R2,就烧高香把。简单说明前面的4个因素就已经能够解释78%的结果了,价值非常高,再去找找其他因素整个模型就越来越完美了,然后我们照例把度量值建立起来,等一下放在图里面,DAX语句如下↓

R2 = CALCULATE(SUM([values]),'R2'[name]="R2")

R2ajd = CALCULATE(SUM([values]),'R2'[name]="R2ajd")

上面我们是进行点预测的,就是影响参数值固定的,变量后预测的结果是一个固定的值,有时候我们还想看看预测的区间,看看整个区间我们能不能够接受,这里我们就可以调用R语言里面回归拟合结果的置信区间范围值了,默认是95%的置信区间,我们就选用默认值,然后会求出区间两界限的参数值,R语言代码和结果如下↓

fit <- lm(gmv ~ uv + promotion_exp + price_diff + service_score,

data=dataset)

dfc <- confint(fit)#提供模型参数的置信区间(默认95%)

dfcd <- data.frame(name = c("Intercept","uv","promotion_exp","price_diff","service_score"),

pct2.5 = dfc[,1],

pct97.5 = dfc[,2])

从结果我们就可以很清晰的看到上界和下界参数值了,然后我们再在PowerBI里面把各参数的度量值写出来,DAX语句如下↓

p25 Intercept = CALCULATE(SUM([pct2.5]),'置信区间'[name]="Intercept")

p25 price_diff = CALCULATE(SUM([pct2.5]),'置信区间'[name]="price_diff")

p25 promotion_exp = CALCULATE(SUM([pct2.5]),'置信区间'[name]="promotion_exp")

p25 service_score = CALCULATE(SUM([pct2.5]),'置信区间'[name]="service_score")

p25 UV = CALCULATE(SUM([pct2.5]),'置信区间'[name]="uv")

p97 Intercept = CALCULATE(SUM([pct97.5]),'置信区间'[name]="Intercept")

p97 price_diff = CALCULATE(SUM([pct97.5]),'置信区间'[name]="price_diff")

p97 promotion_exp = CALCULATE(SUM([pct97.5]),'置信区间'[name]="promotion_exp")

p97 service_score = CALCULATE(SUM([pct97.5]),'置信区间'[name]="service_score")

p97 UV = CALCULATE(SUM([pct97.5]),'置信区间'[name]="uv")

然后根据度量值,把上下界的GMV预测函数写出来,顺便把合并的区间写出来,DAX语句如下↓

预计GMV上线 =

[p97 Intercept] + [p97 UV]*[UV Value] + [p97 promotion_exp]*[推广费用 Value] + [p97 price_diff]*[价格降低 Value] + [p97 service_score]*[服务评分 Value]

预计GMV下线 =

[p25 Intercept] + [p25 UV]*[UV Value] + [p25 promotion_exp]*[推广费用 Value] + [p25 price_diff]*[价格降低 Value] + [p25 service_score]*[服务评分 Value]

预计GMV区间 = "[" &FORMAT([预计GMV下线],"#,##0") &" - " &FORMAT([预计GMV上线],"#,##0") &"]"

最后我们把所有度量值,点预测和区间预测结果,R2值放在一起,只需要进行参数调整就可以来进行数据预测了↓

当然这里我们不能够选择历史数据的范围,如果我们需要调整历史数据的范围,我们只能在PowerQuery里面进行调整,或者我们可以写固定的日期值,比如我们可以固定最近90天或者180天的数据,这里每天数据就会自动滚动变化了,用最新的只预测效果应该也会更好,我们这里使用90天的数据来看一下结果↓

可以看到结果还是有所差异的,不过R2还是很不错,说明这个模型还是不错的,今天写的有点多了,过两天再来用Python实现一下。

ggplot2包可以用来绘图,其中的geom_text函数可以设置标签:

library(plyr)

library(ggplot2)

library(scales)

dtf <- data.frame(x = c("ETB", "PMA", "PER", "KON", "TRA",

"DDR", "BUM", "MAT", "HED", "EXP"),

y = c(.02, .11, -.01, -.03, -.03, .02, .1, -.01, -.02, 0.06))

ggplot(dtf, aes(x, y)) +

geom_bar(stat = "identity", aes(fill = x)) +

geom_text(aes(label = paste(y * 100, "%"),

vjust = ifelse(y >= 0, 0, 1))) +

scale_y_continuous("Anteil in Prozent", labels = percent_format())