关于r:R语言之数值型描述分析

文章和代码曾经归档至【Github仓库:https://github.com/timerring/dive-into-AI 】或者公众号【AIShareLab】回复 R语言 也可获取。在剖析之前,先将数据集 birthwt 中的分类变量 low、race、smoke、ht 和 ui 转换成因子。 library(MASS)data(birthwt)str(birthwt)options(warn=-1)library(dplyr)birthwt <- birthwt %>% mutate(low = factor(low, labels = c("no", "yes")), race = factor(race, labels = c("white", "black", "other")), smoke = factor(smoke, labels = c("no", "yes")), ht = factor(ht, labels = c("no", "yes")), ui = factor(ui, labels = c("no", "yes")))str(birthwt)获取数据框里每个变量的罕用统计量是一种疾速摸索数据集的办法,这能够通过上面的一个命令实现。 summary(birthwt) 函数 summary( )能够对每个变量进行汇总统计。对于数值型变量,如 age、lwt、plt、ftv 和 bwt,函数 summary( )给出最小值、下四分位数、中位数、均值、上四分位数和最大值;对于分类变量,如 low、race、smoke、ht 和 ui,给出的则是频数统计表。 epiDisplay 包的函数 summ( )作用于数据框能够失去另一种格局的汇总输入,它将变量按行排列,把最小值和最大值放在最初两列以不便查看数据的全距。 library(epiDisplay)summ(birthwt)须要留神的是,对于因子型的变量,函数 summ( )把变量的各个程度当作数值计算统计量。 ...

September 1, 2023 · 2 min · jiezi

关于r:R语言之-ggplot-2-和其他图形

文章和代码曾经归档至【Github仓库:https://github.com/timerring/dive-into-AI 】或者公众号【AIShareLab】回复 R语言 也可获取。1. 初识 ggplot2 包ggplot2 包提供了一套基于图层语法的绘图零碎,它补救了 R 根底绘图零碎里的函数不足一致性的毛病,将 R 的绘图性能晋升到了一个全新的境界。ggplot2 中各种数据可视化的根本准则完全一致,它将数学空间映射到图形元素空间。设想有一张空白的画布,在画布上咱们须要定义可视化的数据(data),以及数据变量到图形属性的映射(mapping)。 上面应用数据集 mtcars 作图。 该数据集摘自 1974 年的美国《汽车趋势》杂志,蕴含 32 辆汽车的燃油耗费、设计和性能等方面的 11 个指标:mpg(耗油量)、cyl(气缸数)、disp(排量)、hp(总功率)、drat(后轴比)、wt(车重)、qsec(四分之一英里用时)、vs(发动机类型)、am(传动形式)、gear(后退挡个数)和 carb(化油器个数)。咱们首先来摸索车重和耗油量的关系,将变量 wt 映射到 x 轴,变量 mpg 映射到 y 轴。 library(ggplot2)p <- ggplot(data = mtcars, mapping = aes(x = wt, y = mpg)) 在下面的命令里,aes 代表美学(aesthetics)元素,咱们把须要映射的变量都放在这个函数中。间接运行 p 失去的只是一个空白的画布,还须要定义用什么样的图形来示意数据。 以 geom 结尾的一系列函数用于指定图形元素,包含点、线、面、多边形等。上面应用点(point)这种几何对象来展现数据,后果如下图所示。 p + geom_point() 除了坐标轴,还能够把变量映射到色彩(color)、大小(size)、形态(shape)等属性。 例如,为了展现不同传动形式下车重和耗油量的关系,咱们能够将变量 am 映射为色彩(下图左)或形态(下图右)。变量 am 在原数据集里是一个数值型变量(取值为 0 和 1),本质上它应该是一个分类变量,因而咱们先把它转换为一个二程度的因子。 library(gridExtra)mtcars$am <- factor(mtcars$am)p1 <- ggplot(data = mtcars, aes(x = wt, y = mpg, color = am)) + geom_point()p2 <- ggplot(data = mtcars, aes(x = wt, y = mpg, shape = am)) + geom_point()grid.arrange(p1, p2, nrow=1) ...

August 30, 2023 · 4 min · jiezi

关于r:R语言之基础绘图

文章和代码曾经归档至【Github仓库:https://github.com/timerring/dive-into-AI 】或者公众号【AIShareLab】回复 R语言 也可获取。R 的根底绘图零碎由 Ross Ihaka 编写,性能十分弱小,次要由 graphics 包和 grDevices 包组成,它们在启动 R 时会主动加载。根底绘图零碎中有两类函数,一类是高水平作图函数,另一类是低水平作图函数。 所谓高水平作图函数是用于间接产生图形的函数,包含 plot( )、hist( )、boxplot( )和 pairs( )等。低水平作图函数是用于在高水平作图函数所绘图形的根底上增加新的图形或元素的函数,包含 points( )、lines( )、text( )、title( )、legend( )和 axis( )等。 1. 函数 plot( )函数 plot( ) 是一个泛型函数,对于不同类型的数据,它能够绘制出不同的图形。例如,对于数值型数据,它能够绘制出散点图;对于分类数据,它能够绘制出箱线图;对于一些统计模型,它能够绘制出相应的图形,比方对于生存剖析,它能够绘制出生存曲线。因而,函数 plot( ) 的应用频率十分高,倡议能够关上它的帮忙文档查看其各种罕用参数的用法。 上面创立一个示例数据,示意某病病人对 2 种药物(drugA 和 drugB)、5 个剂量(dose)程度上的响应状况。 dose <- c(20, 30, 40, 45, 60)drugA <- c(16, 20, 27, 40, 60)drugB <- c(15, 18, 25, 31, 40)用下面的数据绘制药物 A 的剂量和响应关系的图形: plot(dose, drugA)plot(dose, drugA, type = "b")下面的命令创立了两幅图,函数 plot( ) 里的参数 type 默认为“p”(代表点),所以失去的第一张图是散点图。在第二行命令里,参数 type 改为了“b”(代表点和线),所以失去的第二张图是点线图。 ...

August 29, 2023 · 3 min · jiezi

关于r:R语言之处理大型数据集的策略

文章和代码曾经归档至【Github仓库:https://github.com/timerring/dive-into-AI 】或者公众号【AIShareLab】回复 R语言 也可获取。在理论的问题中,数据分析者面对的可能是有几十万条记录、几百个变量的数据集。解决这种大型的数据集须要耗费计算机比拟大的内存空间,所以尽可能应用 64 位的操作系统和内存比拟大的设施。否则,数据分析可能要花太长时间甚至无奈进行。此外,解决数据的无效策略能够在很大水平上进步剖析效率。 1. 清理工作空间为了在数据分析时取得尽可能大的内存空间,倡议在启动任何新的剖析我的项目时,首先清理工作空间。 # rm(list = ls(all = TRUE))函数 ls( ) 用于显示当前工作空间中的对象,其中参数 all 默认为 FALSE,这里设为 TRUE 是为革除包含暗藏对象在内的所有对象。 此外,在数据分析的过程中,对于长期对象和不再须要的对象,应用命令 rm(object1,object2, …) 及时将它们革除。 2. 疾速读取.csv 文件.csv 文件占用空间小,能够由 Excel 查看和生成,因而被宽泛使用于存储数据。在后面里介绍的函数 read.csv( ) 能够很不便地读取 .csv 文件。然而,对于大型数据集,该函数读取数据的速度太慢,有时甚至会报错。这时,能够应用 readr 包里的 read_csv( ) 函数或者 data.table 包里的 fread( ) 函数读入数据,其中后者的读取速度更快(大概为前者的两倍)。 data.table 包提供了一个数据框的高级版本,大大提高了数据处理的速度。该包尤其适宜那些须要在内存中解决大型数据集(比方 1GB~100GB)的用户。不过,这个包的操作形式与 R 中其余包相差较大,须要投入肯定的工夫学习。 3. 模仿一个大型数据集为了便于阐明,上面模仿一个大型数据集,该数据集蕴含 50000 条记录、200 个变量。 bigdata <- as.data.frame(matrix(rnorm(50000 * 200), ncol = 200))# 应用了嵌套的两个 for 循环语句和 R 的内置常量 letters(小写英文字母)为 200 个变量命名。varnames <- NULL# 里面一层循环语句构建变量名的第一个字符(a~t)for (i in letters[1:20]) {# 外面一层循环语句把数字 1~10 用 `_` 作为分隔符别离连贯到这些字母上。 for (j in 1:10) { # 函数 paste( ) 用于连贯字符串。 varnames <- c(varnames, paste(i, j, sep = "_")) }}names(bigdata) <- varnamesnames(bigdata)如果你不太想应用多个循环,能够思考: ...

August 28, 2023 · 2 min · jiezi

关于r:R语言之缺失值处理

文章和代码曾经归档至【Github仓库:https://github.com/timerring/dive-into-AI 】或者公众号【AIShareLab】回复 R语言 也可获取。缺失值解决在理论的数据分析中,缺失数据是经常遇到的。缺失值(missing values)通常是因为没有收集到数据或者没有录入数据。 例如,年龄的缺失可能是因为某人没有提供他(她)的年龄。大部分统计分析办法都假设解决的是残缺的数据集。因而,除了一些专业化的书籍,大多数统计学教科书很少波及这一问题。实际上,在进行正式的剖析之前,咱们须要在数据筹备阶段检查数据集是否存在缺失值,并通过一些办法补救因缺失值所造成的损失。 1. 辨认缺失值在 R 中,缺失值用 NA 示意,是“Not Available”的缩写。函数 is.na( ) 能够用于辨认缺失值,其返回后果是逻辑值 TRUE 或 FALSE。 height <- c(100, 150, NA, 160)height# 100 150 <NA> 160is.na(height)# FALSE FALSE TRUE FALSE如果数据很少,缺失值的个数间接能够数进去,比方下面的变量 height 只有一个缺失值。然而如果数据量很大,就须要借助函数 table( ) 了。 table(is.na(height))# FALSE TRUE # 3 1 须要留神的是,任何蕴含 NA 的计算结果都是 NA。例如: mean(height)# <NA>想要失去所有可参加计算的元素的平均值,应该先将 NA 从向量中移除。 mean(height, na.rm = TRUE)# 136.666666666667参数 na.rm 示意移除缺失值,其意义与用函数 na.omit( ) 把缺失值省略是一样的。 mean(na.omit(height))留神,这里 na.omit( ) 是一个独立的函数,它能疏忽输出对象中的缺失值,而 na.rm 只是计算描述性统计量的函数里的一个外部参数。函数 summary( ) 在计算向量的统计量时会主动疏忽缺失值,它会给出向量中缺失值的个数。例如: ...

August 27, 2023 · 2 min · jiezi

关于r:R语言之数据框的合并

文章和代码曾经归档至【Github仓库:https://github.com/timerring/dive-into-AI 】或者公众号【AIShareLab】回复 R语言 也可获取。有时数据集来自多个中央,咱们须要将两个或多个数据汇合并成一个数据集。合并数据框的操作包含纵向合并、横向合并和依照某个共有变量合并。 1.纵向合并:rbind( )要纵向合并两个数据框,能够应用 rbind( )函数。被合并的两个数据框必须领有雷同的变量,这种合并通常用于向数据框中增加观测。例如: data1 <- data.frame(id = 1:5, sex = c("female", "male", "male", "female", "male"), age = c(32, 46, 25, 42, 29))data1 data2 <- data.frame(id = 6:10, sex = c("male", "female", "male", "male", "female"), age = c(52, 36, 28, 34, 26))data2 rbind(data1, data2)2. 横向合并:cbind ( )要横向合并两个数据框,能够应用 cbind( ) 函数。用于合并的两个数据框必须领有雷同的行数,而且要以雷同的顺序排列。这种合并通常用于向数据框中增加变量。例如: data3 <- data.frame(days = c(28, 57, 15, 7, 19), outcome = c("discharge", "dead", "discharge", "transfer", "discharge"))data3cbind(data1, data3)3. 依照某个共有变量合并:merge( )有时咱们有多个相干的数据集,这些数据集有一个或多个共有变量,咱们想把它们依照共有变量合并成一个大的数据集。函数 merge( ) 能够实现这个性能,例如: ...

August 26, 2023 · 2 min · jiezi

关于r:R语言之-dplyr-包

文章和代码曾经归档至【Github仓库:https://github.com/timerring/dive-into-AI 】或者公众号【AIShareLab】回复 R语言 也可获取。这个包以一种对立的标准更高效地解决数据框。dplyr 包里解决数据框的所有函数的第一个参数都是数据框名。 上面以 MASS 包里的 birthwt 数据集为例,介绍 dplyr 包里罕用函数的用法。该数据集来自一项对于新生儿低体重危险因素的病例对照钻研。首先加载该数据集并查看其相干信息。 library(dplyr)data(birthwt, package = "MASS")# ??birthwt数据集 birthwt 里一共蕴含 189 个钻研对象、10 个变量。其中后果变量 bwt 是新生儿的体重(单位:g),变量 low 是将 bwt 的取值以 2500g 为分点转换成的一个二分类变量。其余 8 个变量均为预测变量,包含孕妇的年龄(age)、种族(race)、吸烟情况(smoke)、高血压史(ht)等。 1.应用 filter( ) 和 slice( ) 筛选行函数 filter() 能够基于观测值筛选数据框的一个子集。第一个参数是数据框名,第二个参数以及随后的参数是用来筛选数据框的表达式。 例如,筛选数据框里年龄大于 35 岁的对象的所有记录: filter(birthwt, age > 35)函数 filter ( ) 里能够用逗号分隔多个条件。应用上面的命令将会抉择抉择年龄大于 35 岁,并且出世体重小于 2500g 或者大于 4000g 的所有记录,因为记录较多,这里只显示了前 10 行。 head(filter(birthwt, age > 35, bwt < 2500 | bwt > 4000),10)函数 slice( ) 能够依照行号抉择指定的行。例如,上面的命令抉择数据集外面的第 2 行到第 5 行。 ...

August 25, 2023 · 4 min · jiezi

关于r:R语言之基本包

文章和代码曾经归档至【Github仓库:https://github.com/timerring/dive-into-AI 】或者公众号【AIShareLab】回复 R语言 也可获取。用 R 根本包在理论的数据分析中,剖析者往往须要破费大量的精力在数据的筹备上,将数据转换为剖析所须要的模式。遗憾的是,大多数统计学教材很少波及这一重要问题。整顿数据是统计学的工作之一。咱们开始关注 R 中最罕用的数据格式——数据框的基本操作。咱们将首先应用根本包解决数据框。 先加载 epiDisplay 包里的一个小型数据集 Familydata。 library(epiDisplay)data("Familydata")1.查看数据框里的内容如果数据框较小,比方本例(只有 6 个变量,11 条记录),只需输出数据框名即可查看其全部内容,这等价于调用函数 print( ) 显示对象的内容。 # 输出数据框名即可查看其全部内容,这等价于调用函数 print( ) 显示对象的内容。Familydata# 用函数 `head( )` 只显示其前几行head(Familydata)# 用函数 `tail( )` 显示其最初几行tail(Familydata)# 能够加参数指定到底几行tail(Familydata,7) # 显示尾7行# 列出所有变量名(列名)names(Familydata) 另一个能够用来不便地摸索数据框构造的函数是 str( )。 str(Familydata)# ==============显示后果=============# 首先给出了对象的类型(这里是数据框“data.frame”)、观测数和变量的个数;'data.frame': 11 obs. of 6 variables:# 接着给出了数据框中每个变量的变量名和类型,以及变量的前几个取值 $ code : chr "K" "J" "A" "I" ... $ age : int 6 16 80 18 69 72 46 42 58 47 ... $ ht : int 120 172 163 158 153 148 160 163 170 155 ... $ wt : int 22 52 71 51 51 60 50 55 67 53 ... $ money: int 5 50 100 200 300 500 500 600 2000 2000 ... # 对于因子型变量还给出了因子的程度; $ sex : Factor w/ 2 levels "F","M": 1 2 2 1 1 1 1 1 2 1 ... # 最初给出了数据框的一些属性: # 数据标签(“datalabel”) - attr(*, "datalabel")= chr "Anthropometric and financial data of a hypothetical family" - # 数据建设工夫(“time.stamp”) - attr(*, "time.stamp")= chr "23 Nov 2006 17:15" - attr(*, "formats")= chr [1:6] "%9s" "%8.0g" "%8.0g" "%8.0g" ... - attr(*, "types")= int [1:6] 128 98 105 98 105 108 # 变量标签(“var.labels”) - attr(*, "val.labels")= chr [1:6] "" "" "" "" ... - attr(*, "var.labels")= chr [1:6] "" "Age(yr)" "Ht(cm.)" "Wt(kg.)" ... # 版本号(“version”) - attr(*, "version")= int 7 - attr(*, "label.table")=List of 6 ..$ sex1: Named num [1:2] 1 2 .. ..- attr(*, "names")= chr [1:2] "F" "M" ..$ : NULL ..$ : NULL ..$ : NULL ..$ : NULL ..$ : NULL这些属性能够加强用户对数据集的了解。要想显示数据框属性的全副信息,能够应用 attributes( ) 函数,该函数的输入是一个列表。 ...

August 24, 2023 · 3 min · jiezi

关于r:R语言之数据导出

文章和代码曾经归档至【Github仓库:https://github.com/timerring/dive-into-AI 】或者公众号【AIShareLab】回复 R语言 也可获取。1. 导出数据因为 R 次要用于数据分析,导入文件比导出文件更罕用,但有时咱们也须要将数据或剖析后果导出。函数 write.table( ) 和 write.csv( ) 能够别离将数据导出到一个 .txt 文件和 .csv 文件。 此外,函数 save( ) 能够将工作空间中的指定对象保留为以 .rdata 为扩展名的 R 数据文件。例如: ID <- 1:5sex <- c("male", "female", "male", "female", "male")age <- c(25, 34, 38, 28, 52)pain <- c(1, 3, 2, 2, 3) pain.f <- factor(pain, levels = 1:3, labels = c("mild", "medium", "severe")) patients <- data.frame(ID, sex, age, pain.f)save(patients, file = "patients.rdata")# 导入数据load("patients.rdata")rdata 格式文件占用空间小,用 R 读入速度很快。因而,倡议用户在导入其余格局的数据并整顿好后,将其保留为 rdata 格局。要导入这种格局的数据,只需调用 load( ) 函数。 ...

August 23, 2023 · 2 min · jiezi

关于r:R语言之数据获取操作

文章和代码曾经归档至【Github仓库:https://github.com/timerring/dive-into-AI 】或者公众号【AIShareLab】回复 R语言 也可获取。实际上,R 中有大量的内置数据集可用于剖析和实际,咱们也能够在R 中创立模仿特定散布的数据。而在理论工作中,数据分析者更多时候面对的是来自多种数据源的内部数据,即各式各样扩展名的数据文件,如 .txt、.csv、.xlsx、.xls 等。不同扩展名的文件代表不同的文件格式,这经常会给剖析者带来困扰。 R 提供了适用范围宽泛的数据导入工具。 1.获取内置数据集R 中的内置数据集存在于各个包中,其中根本包 datasets 里只有数据集,没有函数。这个包提供了近 100 个数据集,涵盖医学、天然、社会学等各个领域。 你能够用上面的命令进行查看: data(package = "datasets")如果想要调用某个数据集,能够应用 data( ) 函数。运行上面的命令,R 会加载数据集 iris 到工作空间。 data(iris)除了 datasets 包,R 中很多其余的包也带有数据集。如果不是运行 R 后主动加载的根本包,咱们须要装置和加载这些包当前能力应用其中的数据。上面以 MASS 包里的数据集 bacteria 为例阐明数据的调用过程: library(MASS)data(bacteria)2. 模仿特定散布的数据R 提供了一系列能够用于数值模仿的函数。这些函数以 r 结尾,罕用的有:rnorm( )、runif( )、rbinom( )和 rpois( ) 等。例如: # 后续可视化局部会具体介绍直方图r1 <- rnorm(n = 100, mean = 0, sd = 1)# head(r1) # 取前 5 个值看看hist(r1)r2 <- runif(n = 10000, min = 0, max = 100)hist(r2)r3 <- rbinom(n = 80, size = 100, prob = 0.1)hist(r3)r4 <- rpois(n = 50, lambda = 1)hist(r4)3. 获取其余格局的数据3.1 txt 与csv 格局如果数据起源是一个用 Windows 记事本或其余纯文本编辑器所创立的 ASCII 格式文件,咱们能够应用函数 read.table( ) 读取其中的数据,返回的是一个数据框。 ...

August 22, 2023 · 2 min · jiezi

关于r:R语言的数据结构与转换

文章和代码曾经归档至【Github仓库:https://github.com/timerring/dive-into-AI 】或者公众号【AIShareLab】回复 R语言 也可获取。任何数据分析的第一步都是依照所须要的格局创立数据集。在 R 中,这个工作包含两个步骤:首先抉择一种数据结构来存储数据,而后将数据输出或者导入这个数据结构中。上面介绍 R 中用于存储数据的多种数据结构。 R 的数据结构在大多数状况下,结构化的数据是一个由很多行和很多列组成的数据集。在 R 中,这种数据集被称为数据框。在学习数据框之前,咱们先来意识一些用于存储数据的数据结构:向量、因子、矩阵、数组和列表。1.1 向量向量(vector)是用于存储数值型、字符型、逻辑型数据的一维数组。标量能够看作是只含有一个元素的向量。函数 c( ) 可用来创立向量,例如: x1 <- c(2, 4, 1, -2, 5)x2 <- c("one", "two", "three")x3 <- c(TRUE, FALSE, TRUE, FALSE)这里 x1 是数值型向量,x2 是字符型向量,而 x3 是逻辑型向量。每一个向量中的数据类型必须统一。如果想创立有法则的向量,R 提供了一些简便的操作和函数,例如: x4 <- 1:5 # 等价于x4 <- c(1, 2, 3, 4, 5)x5 <- seq(from = 2, to = 10, by = 2) # 等价于x5 <- c(2, 4, 6, 8, 10)x6 <- rep("a", times = 4) # 等价于x6 <- c("a", "a", "a", "a")有时候咱们只想应用向量中的某个局部,即选取向量的子集。假如有一个从 3 到 100 的步长为 7 的整数向量,那么第 5 个数的值是多少呢? ...

August 18, 2023 · 3 min · jiezi

关于r:R-语言入门与介绍

文章和代码曾经归档至【Github仓库:https://github.com/timerring/dive-into-AI 】或者公众号【AIShareLab】回复 R语言 也可获取。罕用算术运算符运算符形容+加法−减法*乘法/除法^或**求幂\%\%求余\%/%整数除法留神,R 辨别大小写。 罕用数学函数abs(x)sqrt(x)sin(x)、cos(x)、tan(x)asin(x)、acos(x)、atan(x)exp(x)log(x)、log2(x)、log10(x)round(x, 保留位数)ceiling(x)floor(x)trunc(x):截取 x 的整数局部R 包中的大多数函数都附带例子,函数 example ( ) 用于运行示例代码。R 对象在 R 语言中,“所有皆对象”。数据分析包含很多步骤,从数据整顿、摸索、建模到可视化,每个步骤都须要解决不同的对象,例如向量、矩阵、函数、模型等。 a = 3 + 5# 能够写成a <- 3 + 5倡议应用 <- 赋值符号,防止与比拟操作符 == 相混同b <- sqrt(36) #b=6a + b# 也能够在右边计算它的值,而后通过右赋值“->”把后果赋给一个新的对象;这个写法并不常见a + 3*b -> cc对象的名字能够由一个或一个以上的字符组成。对象名个别 只能以字母结尾 ,能够蕴含数字、点“.”和下划线“_”。 罕用的关系和逻辑运算符><==!=>=<=&|!工作空间治理工作空间(workspace)就是 R 的工作环境,所有创立的对象都被长期保留在工作空间(也可称为全局环境,.GlobalEnv)中。 咱们能够用函数 ls( ) 列出当前工作空间中的所有对象。 ls()工作目录(working directory)是 R 用来读取文件和保留后果的一个文件夹。咱们能够应用函数 getwd( ) 来查看以后的工作目录,也能够应用函数 setwd( ) 设定以后的工作目录。把某个剖析我的项目的所有文件保留在一个文件夹里会给项目管理带来便当,进步剖析效率。因而,在一个代码脚本文件的第一行,通常能够先设定工作目录。 getwd() # 获取工作目录门路setwd("/home/project/myprojects/project1") # 批改工作目录门路# 想要把当前工作空间保留到一个指定的文件,能够在退出时输出save.image("MyFile.Rdata")# 输入后能够刷新右侧文件树,右键复制文件门路,或者下载下次咱们只需应用函数 load( ) 就能够载入保留的工作空间并持续进行该项目标剖析工作。在工作量较大时,能够很好地进步工作效率。 ...

August 17, 2023 · 1 min · jiezi

关于r:六一双倍的快乐ggplot2绘制双y轴图

双y轴图的目标,是想要在同一坐标系中画两组数据,然而他们值范畴差很多,比方一组数据是1-10,另一组是10-100,那么能够对第一组数据做数据变动,比方第一组数据乘以 10,而后在对应的y轴上写上1-10,尽管第一组的数据曾经变成了10-100。这种数据变换叫做归一化(Normalization,又称Min-Max Scaling)把数值型某一特色缩放到最大值和最小值在某个范畴,在sklearn中应用MinMaxScaler能够归一化解决特色矩阵。from sklearn.preprocessing import MinMaxScalera = np.arange(1,11).reshape(-1,1)scaler = MinMaxScaler(feature_range=(10,100)) #实例化scaler = scaler.fit(a) #fit,在这里实质是生成min(x)和max(x)scaler.transform(a) #通过接口导出后果 数学计算过程xi′=xi−min(x)max(x)−min(x)x_i'=\frac{x_i-min(x)}{max(x)-min(x)}xi′=max(x)−min(x)xi−min(x)在R中能够应用scales::rescale函数把某一组数据变动到某一范畴。using(scales)a=1:10scales::rescale(a,c(10,100)) 画图想要模拟文献中的最左边的双坐标图(barplot+lineplot) 演示数据 R P1: -0.5186650 3.3632052: -0.5033615 3.1681503: 0.4924422 3.0344394: -0.4785956 2.8711165: -0.4725588 2.8020146: -0.4591719 2.6531647: 0.4565071 2.6242378: 0.4556375 2.6148489: -0.4548278 2.60612710: -0.4533324 2.59007511: -0.4529072 2.58552412: 0.4527432 2.58377013: -0.4521214 2.57712914: -0.4510678 2.56590315: -0.4478618 2.53195916: 0.4413370 2.46386917: -0.4411496 2.46193318: -0.4392941 2.44282019: 0.4379135 2.42866620: -0.4378894 2.428420实例数据中R得范畴是[-0.5186650,0.4924422],所以能够把坐标轴的范畴设置为x_min_max=[-0.6,0.5]。在ggplot2图形映射中(geom_line、geom_point),都把P列的范畴放缩到x_min_max这个范畴,然而在坐标轴上标出实在的值范畴p_min_max。细调,coord_flip反转x轴和y轴,在theme中批改axis.title的色彩r_min_max <- range(plot_data$R)p_min_max <- range(plot_data$P)x_min_max <- c(-0.6,0.5)r_color <- "tan"r_colorp_color <- "skyblue"ggplot(plot_data,aes(x = Pathway)) + ...

June 1, 2023 · 1 min · jiezi

关于r:ALLUVIAL-DIAGRAM冲积图详解和R语言实现实例

全文链接:http://tecdat.cn/?p=1770冲积图是最后开发用来示意随工夫变动的网络结构的一种流程图。为了兼顾它们的视觉外观和对流动的器重,冲积图是以流水沉积的土壤天然造成的冲积扇命名的。变量调配给平行的垂直轴。值由每个轴上的块示意。块的高度示意簇的大小,并且流域的高度示意由流域连贯的两个块中蕴含的组件的大小。 例子

November 30, 2022 · 1 min · jiezi

关于r:解决Rstudio启动时报错normalizePath文件名目录名或卷标语法不正确

问题形容最近从新装了win11零碎,也重新配置了R和Rstudio环境,然而发现每次关上Rstudio会报错: Warning message:In normalizePath(path.expand(path), winslash, mustWork) : path[1]="C:/Users/xxx/OneDrive/??": 文件名、目录名或卷标语法不正确。 这个问题在我间接运行R.exe (Rgui.exe)时候并不会呈现。通过一番钻研,是因为R.exe能够反对中文门路,然而Rstudio不反对。在装置R的时候,R默认把一些零碎环境变量指定成了OneDrive下的“文档”文件夹中,导致Rstudio无奈辨认。能够用如下办法验证: > Sys.getenv()会看到有几个变量被指定成了中文门路: # R.exe (Rgui.exe)中:HOME C:\Users\xxx\OneDrive\文档R_USER C:\Users\xxx\OneDrive\文档# Rstudio中:HOME C:/Users/linhe/OneDrive/??R_USER C:/Users/linhe/OneDrive/??解决方案经钻研,次要是R_USER这个变量出了问题。在windows零碎变量中增加一个新的R_USER变量即可解决问题。 进入 此电脑右键->属性->高级零碎设置->环境变量...->零碎变量下点击新建...->变量名: R_USER; 变量值: 你轻易指定一个门路截图如下: 确定后,重启Rstudio,世界都喧扰了! 网上的有效方法包含但不限于: 在R装置门路下的\R\R-4.2.1\library\base\R\Rprofile增加R_USER="D:\\R"在R工作目录下新建.Rprofile文件并增加.libPaths("C:/R/win-library/3.3")在以上两个文件中增加R_LIBS_SITE="C:\\Program Files\\R\\R-4.1.1\\library"以上都试过了,对我有效。帮到你的话给我个赞哦:)

October 13, 2022 · 1 min · jiezi

关于r:R语言学习笔记丨因子和数据框基础知识

明天的笔记内容是R语言中因子和数据框的根底介绍和应用办法。更多笔记关注公众号:生信剖析笔记R语言 因子因子能够用来存储不同类别的数据类型,R 语言创立因子应用 factor() 函数,向量作为输出参数。 factor() 函数语法格局: factor(x = character(), #向量levels, #指定各程度值labels = levels, #程度标签exclude = NA, #剔除的字符ordered = is.ordered(x), #逻辑值,指定是否排序 nmax = NA) #程度的下限创立因子依照如下形式可能创立一个简略的因子,含有大和小两个程度。 > x <- c("大", "小", "大")> yinzi <- factor(x)> print(yinzi)[1] 大 小 大Levels: 大 小> print(is.factor(yinzi)) # 判断是不是因子[1] TRUE增加程度标签首先,设置因子程度(共两个程度“大”、“小”),具体形式如下: > # 因子程度标签> x <- c("大", "小", "大",levels=c("大","小"))> yinzi <- factor(x)> print(yinzi) levels1 levels2 大 小 大 大 小 Levels: 大 小应用 labels 参数为每个因子程度增加标签,labels 参数的字符程序,要和 levels 参数的字符程序保持一致。 ...

September 21, 2022 · 2 min · jiezi

关于r:RRstudio安装与配置

R和python,如此像,彼此交融。应用Rstudio是能够间接运行python代码,并且交融十分好。 R的装置非常简单下载之后装置,但有一点倡议,在装置时这个message translation最好不要勾选。否则报错让你看的一脸懵逼。 最重要的一点 R的装置目录不能用中文,只能用英文,否则会莫名其妙各种报错比方E:\360驱动巨匠目录\驱动备份目录 F:\教程\Netlify都是禁止应用的Rstudio装置没有任何阻碍,间接下一步下一步同样界面抉择英文的 关上Rstudio第一件事是设置国内镜像 Tools--global options--packages--change(个别抉择中科大镜像mirrors.ustc.edu.cn)第二步,设置python解释器 Tools--global options--Python--select装置rticulate包在Rstudio点击install即可 Try it在console输出plot(cars) 新建一个R Markdown插入python代码块(chunk)运行个代码试试? Python 之禅import this

November 2, 2021 · 1 min · jiezi

关于r:dplyr

arrange(.data, ..., .by_group = FALSE)msleep%>%group_by(vore)%>%arrange(sleep_total)%>%write_csv("C:/Users/panda/Desktop/R-result/arrange0.csv")msleep%>%group_by(vore)%>%arrange(sleep_total,.by_group=TRUE)%>%write_csv("C:/Users/panda/Desktop/R-result/arrange1.csv")第一次执行组存在但表中看不出 count(x, ..., wt = NULL, sort = FALSE, name = NULL)tally(x, wt = NULL, sort = FALSE, name = NULL)add_count(x, ..., wt = NULL, sort = FALSE, name = NULL, .drop = deprecated())add_tally(x, wt = NULL, sort = FALSE, name = NULL)msleep%>%count(vore,sort=TRUE,name='n')%>%write_csv("C:/Users/panda/Desktop/R-result/count0.csv")msleep%>%count(vore,wt=sleep_total,sort=TRUE,name='n')%>%write_csv("C:/Users/panda/Desktop/R-result/count1.csv")msleep%>%group_by(vore)%>%tally(sort=TRUE,name='n')%>%write_csv("C:/Users/panda/Desktop/R-result/tally.csv")msleep%>%add_count(vore,sort=TRUE,name='n')%>%write_csv("C:/Users/panda/Desktop/R-result/add_count.csv")msleep%>%add_tally(wt=sleep_total,sort=TRUE,name='n')%>%write_csv("C:/Users/panda/Desktop/R-result/add_tally.csv")<font color=red> .drop = deprecated()</font> count(列名)==group_by(列名)%>%tally() add_保留原数据并增加新列(新列反复项必定多) wt如果是数值型数据新列是sum的后果 distinct(.data, ..., .keep_all = FALSE)msleep%>%distinct(vore,.keep_all=TRUE)%>%write_csv("C:/Users/panda/Desktop/R-result/distinct0.csv")msleep%>%distinct(vore)%>%write_csv("C:/Users/panda/Desktop/R-result/distinct1.csv").keep_all = TRUE保留所有列并反复时抉择第一行 filter(.data, ..., .preserve = FALSE)msleep%>%group_by(vore)%>%filter(sleep_total>10)%>%write_csv("C:/Users/panda/Desktop/R-result/filter0.csv").preserve = FALSE组的数量可能会缩小,当在某组没有满足条件的行 mutate( .data, ..., .keep = c("all", "used", "unused", "none"), .before = NULL, .after = NULL)transmute(.data, ...)msleep%>%mutate(test=sleep_total*2,.keep='none')%>%write_csv("C:/Users/panda/Desktop/R-result/mutate.csv")msleep%>%transmute(test=sleep_total*2)%>%write_csv("C:/Users/panda/Desktop/R-result/transmute.csv")mutate(.data,.keep = "none")==transmute(.data) ...

August 18, 2021 · 2 min · jiezi

关于r:R语言有状态依赖强度的非线性多变量跳跃扩散过程模型似然推断分析股票价格波动

原文链接:http://tecdat.cn/?p=23010 跳跃扩散过程为间断演化过程中的偏差提供了一种建模伎俩。然而,跳跃扩散过程的微积分使其难以剖析非线性模型。本文开发了一种办法,用于迫近具备依赖性或随机强度的多变量跳跃扩散的转移密度。通过推导摆布过程时变的方程组,咱们可能通过密度因子化来近似转移密度,将跳跃扩散的动静与无跳跃扩散的动静进行比照。在这个框架内,咱们开发了一类二次跳跃扩散,咱们能够计算出对似然函数的准确近似。随后,咱们剖析了谷歌股票稳定率的一些非线性跳跃扩散模型,在各种漂移、扩散和跳跃机制之间进行。在此过程中,咱们发现了周期性漂移和依赖状态的跳跃机制的根据。 简介事实世界的过程常常受到许多随机输出源的影响,导致各种随机行为,造成过程轨迹的一个组成部分。因而,在对这种景象进行建模时,模型方程必须思考到过程动静的各种随机性起源。 只管扩散过程在间断过程的建模中被宽泛应用,但通常假如布朗运动作为过程随机演变的驱动机制。如果布朗运动不够,能够对模型过程进行概括,使其利用更加理论。 一个这样的概括是在模型过程的轨迹中包含随机产生的 "跳跃"。这种批改次要是在金融背景下进行的,其中扩散模型被用来形容价格/资产过程的动静,这些价格/资产过程在察看到的工夫序列中会呈现看似自发的频繁跳动。例如,人们通常假如一个给定的股票价格过程的对数收益为正态分布。通过假如股票价格过程的动态变化遵循几何布朗运动,这一假如能够很容易地被纳入随机微分方程中。 其中Xt示意工夫t的股票价格,由此可见,对数(Xt)-对数(Xs)∼N((-2/2)(t-s), 2(t-s)),对于t>s。然而,股票价格收益率的正态性长期以来始终受到争议,教训证据表明,收益率往往体现出正态分布不能很好复制的特色。其中最广为人知的是模型过程中显著不足重尾的景象。这一点能够通过计算描述性的统计数据来证实,比方察看到的收益率序列的偏度和峰度,随后能够与正态分布下的相应统计数据进行比照。在扩散过程的背景下,这种差别通常是通过建设随机稳定率模型来补救的,其中收益过程的扩散系数自身被视为一个随机过程。也就是说,批改后的过程能够采取以下模式: 其中a( 2 t , t)和b( 2 t , t)别离示意方差过程的漂移和扩散,B (1) t和B (2) t是相干的布朗运动。随机稳定率模型通过容许对数收益的方差随工夫变动,更精确地捕获股票价格收益的尾部行为。 然而,在解释随机稳定率机制时须要留神。事实上,当 B (1) t 和 B (2) t 不相干时,对数收益过程的边际散布是以方差过程的已知初始值为条件的(即Xt|Xs, 2 s for t > s),依然是正态分布,即存在强相干,在这种状况下,对数收益的边际散布可能是偏斜的,尾部比正态分布下预测的略厚,由此产生的转移密度可能没有足够的leptokurtic来解释短转移期内的极其收益事件。 为了阐明这一点,思考对规范普尔500指数(S&P 500)的每日对数收益的滚动预计。让Xti示意规范普尔500指数在工夫ti的值,而后用带宽h定义一个峰度滚动估计值。  图形容了峰度的滚动预计和时间差预计,计算为{K(ti, h) - K(ti-1, h) : i = h, h + 1, . . N},在1990-01-01至2015-12-31的时间段内应用h=250天的带宽。在这个带宽下,差分序列代表了将滚动估计值向前挪动一天所引起的预计峰度的变动,即(大概)过来一年的数据。此外,咱们还将峰度的总体估计值(在整个时间段内计算)与正态分布的估计值叠加在一起。 依据总体预计,样本的峰度显著超过了正态分布的预计。然而,一年的滚动预计显示,只管对数收益系列的峰度通常高于正态分布的峰度,但总体预计的规模可归因于一些极其收益事件的产生。这些事件体现为峰度的滚动估计值中忽然呈现的尖峰,在时间差的估计值中能够分明地看到。 为了解释这种极其事件,Merton(1976)提出在扩散轨迹中退出跳跃,以便建设一个比几何布朗运动的间断门路所预测的更准确的资产价格回报模型,在这种状况下,批改后的随机微分方程(SDE)的模式为 其中zt示意正态分布的跳跃随机变量,Nt是强度恒定的泊松过程,即Nt-Ns∼Poi((t - s))。在这种表述下,极其事件被明确地蕴含在随机微分方程中,作为扩散轨迹中随机产生的不间断跳跃。因而,察看到的对数收益的尾部行为和布朗运动的尾部行为之间的差别,通过退出跳跃机制失去了缓解。在此基础上,咱们能够扩大该模型,以建设一个带有跳跃的随机稳定率模型,例如: 其中跳跃同时影响着收益率和稳定率。利用这一点,能够保留随机稳定率的有用个性,同时间接阐明极其收益事件和稳定率的跳跃。 标量的例子为了证实矩量方程在剖析跳跃扩散模型中的利用,咱们思考一个具备随机强度的非线性、工夫不均一的跳跃扩散。设 (Xt, rt, t) = rt,其中强度参数rt的动态变化由间断工夫马尔科夫链(CTMC)给出。  ...

July 8, 2021 · 1 min · jiezi

关于r:考虑投影坐标系的空间计算shapely-pyproj

空间数据的坐标应用经纬度,空间计算心愿依照"米"解决,该怎么办? 如果对投影坐标系不理解,咱们只能对上述需要做个近似,用度来迫近米。假如地球为一个球体,对于赤道和经度圈,360度对应4万km,所以1度对应111km。因而咱们能够用“度”和“米”的近似换算来达成上述目标。不过这个简化存在一些问题,在纬度圈上不实用,纬度越大,1度对应的公里数越小。比方,咱们心愿对一个空间对象外扩50m的范畴,那么在货色方向上,理论的外扩范畴,黑龙江 < 北京 < 广东。 那么如果心愿能准确依照米做空间计算呢?这就须要引入投影坐标系(相干概念请参考我的另一篇文章《瓦片地图原理》)。Python中能够用pyproj实现这个性能,将WGS84的经纬度坐标系投影到UTM的米制坐标系。上面给一个代码示例: from shapely.geometry import LineStringfrom shapely.ops import transformimport pyprojwgs84 = pyproj.CRS('EPSG:4326')utm = pyproj.CRS('EPSG:32618')line = LineString([[126.631021,45.7443], [126.631021,45.74138], [126.635699,45.74138]])degree_buffer = line.buffer(0.00050, cap_style=2)project = pyproj.Transformer.from_crs(wgs84, utm, always_xy=True).transformdistline = transform(project, line)dist_buffer = distline.buffer(55.5, cap_style=2)reverse = pyproj.Transformer.from_crs(utm, wgs84, always_xy=True).transformdist_buffer = transform(reverse, dist_buffer)print lineprint degree_bufferprint dist_buffer将数据可视化后,成果如下: 绿色为按“米”准确开的范畴,红色为按“度”开的范畴。能够看到在东西向上,用“度”近似的办法范畴偏小,南北向上范畴准确。

March 5, 2021 · 1 min · jiezi

关于r:Rstudio在Win10系统下terminal没有啦

Rstudio下的terminal是2017年推出的性能,还是挺实用的,然而新装置的Rstudio可能会呈现找不到的问题。比方这样: 没有bash还能够了解,然而没有powershell就有点诡异。其实问题出在设置那里。点击Tools-->Global Options-->Terminal 默认值是custome,抉择Windows PowerShell,就成为惯例的powershell 然而如果咱们想用bash的话,怎么办?其实能够装置Git,而后应用Git Bash即可。

January 7, 2021 · 1 min · jiezi

关于r:译-解密-Google-的营销归因模型最佳实践

假如你是一个市场营销人员,你在进行一个市场营销流动。你想晓得这个流动实际上的成果如何。能够看的指标比如说,你的网站流量,注册,转化率,或者任何你心愿进步的货色。 或者,让咱们假如你是一个产品人,而后你想晓得一个特定的性能或者产品公布实际上是如何影响用户流动的,他们在产品上破费的均匀工夫,等等。 这听起来很简略,因为你只须要比拟流动前后的测量值(如营销流动) ,或者比拟两组测量值(如 A/B 测试)。然而,实际上很难在事实世界中掂量这种影响,因为有许多属性能够影响后果(例如页面浏览量)。这就是所谓的乐音。 谷歌也遇到了同样的问题,Kay Brodersen 和谷歌的团队建设了这个叫做“因果影响”的算法来解决这个问题,并将其作为一个 r 包开源。 基本上,它建设了一个基于多个可比对照组(或市场)的贝叶斯构造工夫序列模型,并应用该模型来预测(或预测)事件产生后时间段的一系列基准值。 所以,假如咱们的网站在日本有如下独特的页面浏览量。 红色圆圈代表咱们进行营销流动时的页面视图。这就是咱们所说的影响事件,它能够是一个公关布告,一个新版本产品的公布等等。 当初,通过因果影响算法,咱们能够基于其余国家的页面视图数据建设一个模型,来预测同一时间段的一系列预期值,假如这些国家没有产生这样的影响事件。这是一个基线,表明了如果没有这次事件,咱们在日本的预期数字。如上面的橙色线所示。 一旦咱们失去了这个基线,咱们就能够计算两行之间的差别,理论值(蓝线)和预期值(橙线) ,并将这些差别作为事件的理论影响。上面的绿线代表实在的影响。 咱们能够累积自事件产生以来所有受影响的值,并查看任何给定点以内的总受影响值。上面的紫色线条示意这个。 这样,咱们就能够更好地掂量此类流动(例如市场推广流动)的投资回报率(ROI) ,即便咱们不确定该流动是否是惟一的影响起源。因果影响算法帮忙您疾速取得这些信息,以便您能够充满信心地及时调整您的口头。 通过 Exploratory v3.5,咱们在营销影响剖析中增加了这个因果影响算法反对,以便咱们的用户可能快速访问这个算法,并以统计的形式考察这些事件的影响。 首先让咱们看一下因果影响算法,而后咱们能够看一下如何在 Exploratory 外部拜访它。我将持续应用市场营销流动作为一个例子,以使它更容易了解,但当然,这个算法能够用于不仅仅是评估市场营销成果。 因果影响算法简介对于因果影响算法是如何工作的,有一些事件须要理解。 如前所述,该算法的外围是建设一个基于多个控制组的贝叶斯构造工夫序列模型,并在调整控制组和测试组之间的大小差别后结构一个综合工夫序列基线。 那么什么是对照组和测试组呢?为了简化这个问题,能够将 Group 看作市场,如日本、美国、西班牙等。 对照组 vs. 测试组控制组是咱们没有事件,如营销流动,因而咱们不心愿看到任何影响,掂量咱们的趣味的事件。 测试组是咱们举办这次流动的中央,并且冀望在肯定水平上对咱们趣味的掂量产生影响。 例如,如果咱们在日本进行营销流动,咱们想晓得这个流动对页面浏览量有什么影响,那么日本是测试组(或市场) ,其余国家如美国、西班牙等是控制组(或市场)。 基线那么,什么是“综合工夫序列基线”呢? 这基本上是一系列咱们冀望的没有影响事件的值。为了预测这些数值,与其余典型的预测/预测算法不同,这些算法会依据测试组自身过来的数据建设预测模型,该算法基于对照组预先时间段的理论数据建设模型,并预测基线值。 这意味着,控制组须要与测试组类似或相干,以便算法可能以牢靠的形式预测测试组的基线值。 相干对照组那么如何抉择“类似或相干”的对照组呢? 因果影响算法能够通过在回归系数上搁置一个尖峰和平板先验散布,从给定的数据中主动挑选出最有用的组。 然而 Kim Larsen@Uber 在他的 MarketMatching R包页面 上介绍了一个更好的办法。留神,这并不是要替换因果影响算法的控制组抉择逻辑,而是通过增加额定的抉择步骤作为预处理来补充它。 假如咱们有日本和美国的独特页面访问量数据,如下所示。 咱们能够简略地运行相干算法来计算这两个组之间的相关性,然而这会疏忽大小。咱们能够做的另一种办法是计算线之间的欧几里德间隔。然而,在工夫序列数据上计算这些数据可能有点辣手,因为有一种称为“长期移位”的景象,这种景象常常产生在工夫序列数据上。简略地计算这样的间隔就能够疏忽这样的变动,并假如它是更远的间隔。 看看上面的图表。 这两条线并没有在完全相同的工夫上的起伏,然而通过观察它们,咱们能够看到两条线之间的一些相似之处。上面曲线(彩色)的高和低比上方曲线(红色)的来得晚一点。因而,依据一对一的映射来计算间隔,也就是同一时间轴点上两个数据点之间的差别,能够疏忽这种“长期移位” ,并且能够将这两条线标记为“不同”而不是“类似”。 ...

November 15, 2020 · 1 min · jiezi