r语言cox分析相加交互作用 cox r语言_r语言rep


原创 HANSEN老师 汉森定理
R语言是世界上最广泛使用的统计编程语言。本文的目的是使得读者快速上手R语言编程。


r语言cox分析相加交互作用 cox r语言_r语言rep_02


1 R语言概述
R语言是世界上最广泛使用的统计编程语言。有人认为,它是数据科学家的第一选择(人生苦短,我选Python),并由一个充满活力和有才华的贡献者(包括Hansen老师)社区支持。
R语言综合档案库CRAN(The Comprehensive R Archive Network) 包含了大量开发者贡献的扩展包,截至2020年5月30日,总共有15707个包,涉及统计分析、数值计算、量化投资、金融分析、数据挖掘、机器学习、生物信息学、生物制药、全球地理科学、数据可视化等各个领域。
2013年以来,R包的数量以每月以3.9%的速度快速增长(下图是Hansen老师从CRAN上爬取的最新数据,并用ggplot2绘制)。


r语言cox分析相加交互作用 cox r语言_r intersect()_03


R语言作为一门编程语言是非常容易入门的,但想深入掌握R语言,必须具备基础的数学知识,主要包括初等数学,高等数学,线性代数,概率论,统计学等。2 环境设置
从R语言官方网址https://cran.r-project.org/ 下载最新版本的R语言解释器。然后下载一个IDE(集成开发环境),R有专门的IDE,即Rstudio,这应该是大家最常用的。微软的Visual Studio,VS code也可以配置R语言编程环境,我自己多年来一直在用Visual Studio。另外 jupter,Pycharm也支持R语言的开发,力推Pycharm,同时支持R与python在一个环境中使用。3 R对象的类型
尽管R对象有多种类型,但经常使用的是:

  • 向量(vector)
  • 列表(list)
  • 矩阵(matrix)
  • 数组(array)
  • 因子(factor)
  • 数据框(data.frame)

x = pi*10^2 #pi是圆周率
class (x) #x的class
typeof (x) #x的type3.1 标量 scalar
最简单的R数据类型是标量,主要有6种:逻辑型logical(TRUE,FALSE)、数值型numeric(1.22)、整型integer(12)、字符型character("good","bad","叫爸爸")、原型raw(48 65 6c 6c 6f)、复数complex(4i+1)。
最常用的是前四种。3.2 向量 vector向量是用于存储数值型、字符型、逻辑型元素的集合,向量是1维的,同一向量中无法混杂不同类型的元素
在R中,向量是R的最基本的数据类型。向量化计算是R语言特有的一种并行计算方式,即当你对一个向量进行操作时,程序会对向量中每个元素进行分别计算,计算结果以向量的形式返回。向量化计算,在R中有很广泛的应用场景,基本可以取代循环计算,高效的完成计算任务。
使用c()函数将元素组合成向量。











函数含义min(x)最小值max(x)最大值which.min(x)显示最小值所在位置which.max(x)显示最大值所在位置sum(x)加和length(x)x的长度mean(x)均值median(x)中值var(x)方差sd(x)标准差sqrt(x)平方根abs(x)取绝对值unique(x)去冗余intersect(x)取交集union(x,y)取并集setdiff(x,y)差集setequal(x,y)判断两向量是否相同(对顺序无要求)identical(x,y)判断两向量是否相同(对顺序有要求)3.3 列表 list

list可以是任何对象(包括list本身)的集合。
z = list(1:3,m=c(1:2,a=list ("R",letters [1:5]),w="hi!"))
z[[1]]
z[[2]]
z$m
z$m$a2
z$m[[3]]
z$m$w3.4 矩阵 matrix
矩阵是2维数的,同一矩阵中也无法混杂不同类型的元素
x=matrix(1:20,4,5);x #矩阵的构造
x=matrix (1:20,4,5, byrow=TRUE) ;
x#矩阵的构造,按行排列
t(x) #矩阵转置
x=matrix(sample(1:100,20),4,5)
2*x
x+5
y=matrix(sample(1:100,20),5,4)
x+t(y)#矩阵之间相加
(z=x%*%y) #矩阵乘法
zl = solve(z) # solve(a,b)可以解ax=b方程
#应该是单位向量,但浮点运算不可能得到干净的0
round (zl%*%z, 14) #四舍五入
b=solve(z,1:4);
b #解联立方程nrow(x) ;ncol(x) ;dim(x)#行列数目
x=matrix(rnorm(24),4,6)
x[c(2,1),]# 第2和第 1行
x[,c(1,3)] #第1 和第3列
x[2,1] #第[2,1]元素
x[x[,1]>0,1] #第1列大于0的元素
sum(x[,1]>0) #第1列大于0的元素的个数
sum(x[,1]<=0) #第1列不大于0的元素的个数
x[,-c(1,3)]#没有第1、3列的x.
diag(x) #x的对角线元素
diag(1:5) #以1:5为对角线,其他元素为0的对角线矩阵
diag(5) #5维单位矩阵
x[-2,-c(1,3)] #没有第2行、第1、3列的x
x[x[,1]>0 & x[,3]<= 1,1] #第1列>0并且第3列<2的第1列元素
x[x[,2]>0 | x[,1]<0.51,1]#第[列<0.51或者第2列>0的第1列元素
x[!x[,2]<0.51,1]#第1列中相应于第2列中>=0.51的元素
apply (x, 1, mean) #对行(第一维)求均值
apply (x, 2, sum)#对列(第二维)求和
x=matrix(norm(24) ,4,6)
x[lower.tri(x) ] = 0;
x #得到上三角阵,
#为得到下三角阵,用
x[upper.tri(x)] = 03.5 高维数组 array
矩阵限制为二维,数组可以具有任何数量的维度。
x=array(runif(24),c(4,3,2))
x#从24个均匀分布的样本点构造4乘3乘2的三维数组
is.matrix(x)
dim(x) #得到维数(4,3,2)
is.matrix(x [1,,] )#部分三维数组是矩阵
x=array(1:24,c(4,3,2))
x[c(1,3),,]
x=array(1:24,c(4,3,2))
apply (x,1, mean)#可以对部分维做均值运算
apply(x,1:2,sum) #可以对部分维做求和运算
apply(x,c(1,3), prod) #可以对部分维做求乘积运算3.6 数据框 Data Frames
数据框也是二维的表格数据对象。与矩阵的不同在于,其每列可以包含不同的数据类型。数据框可以看做是等长度的向量的列表。
install.packages("creditmodel")
library(creditmodel)
class(UCICreditCard) #UCICreditCard 是credtimodel包默认数据集
typeof(UCICreditCard) #UCICreditCard的type
str(UCICreditCard) # 查看UCICreditCard的数据结构
names(UCICreditCard) #UCICreditCard数据的变量名字
summary (UCICreditCard) #UCICreditCard 的汇总
head(UCICreditCard)#UCICreditCard的头几行数据,和UCICreditCard[1:6,]相同
tail(UCICreditCard) #UCICreditCard的最后几行数据
row.names(UCICreditCard) #行名字4 数据的输入和输出
r支持各种格式数据文件,如excelcsvtxtspsssasstatanetcdfhdf5等。但最为方便的还是csv或txt文件,将数据文件放到工作目录直接读取。
第一步:设置工作目录,注意路径要用反斜杠"/"或者双斜杠"":
setwd("C:/work")
第二步:使用creditmodel包的read_data函数读取数据
library(creditmodel)
#读取一个文件
raw_dat = read_data("query-hive-366149.csv", encoding = "UTF-8")
#读取多个文件
raw_dat_list = read_data(path = getwd(), "query-hive", encoding = "UTF-8")
raw_dat_1 = raw_dat_list[1]
raw_dat_2 = raw_dat_list[2]
第三步:使用creditmodel包的save_data函数保持数据到工作目录
#保存一个文件
save_data(raw_dat)
#保存多个文件
save_data(raw_dat_1, raw_dat_2 )

未完待续......