数据结构
创建向量和矩阵
1
|
函数 c (), length (), mode (), rbind (), cbind () |
求平均值,和,连乘,最值,方差,标准差
1
|
函数 mean (), sum (), min (), max (), var (), sd (), prod () |
帮助文档
1
|
函数 help () |
生成向量
1
|
seq () |
生成字母序列letters
新建向量
1
|
Which ()函数, rev ()函数, sort ()函数 |
生成矩阵
1
|
函数 matrix () |
矩阵运算
1
|
函数 t (),矩阵加减 |
矩阵运算
1
|
矩阵相乘,函数 diag () |
矩阵求逆,函数rnorm(),solve()
解线性方程组
1
|
函数 solve (a,b) |
矩阵的特征值与特征向量
1
|
函数 eigen () |
数据的R语言表示——数据框
矩阵形式,但列可以不同数据类型
每列是一个变量,每行是一个观测值
作图
画散点图
1
|
函数 plot () |
对x1进行直方图分析
1
2
|
绘制直方图函数 hist () hist (x$x1) |
探索各科成绩的关联
列联表分析
1
2
|
列联函数 table (),柱状图绘制函数 barplot () barplot ( table (x$x1)) |
饼图
1
2
|
饼图绘制函数 pie () pie ( table (x$x1)) |
箱尾图
1
2
3
4
5
|
箱子的上下横线为样本的25%和75%分位数 箱子中间的横线为样本的中位数 上下延伸的直线为尾线,尾线的尽头为最高值和最低值 异常值 boxplot (x$x1,x$x2,x$x3) |
箱线图
1
2
3
4
|
boxplot (x[2:4],col = c ( "red" , "green" , "blue" ,notch=T)) 水平放置的箱尾图 boxplot (x$x1,x$x2,x$x3,horizontal = T) |
星相图
1
2
3
4
|
每个观测单位的数值表示一个图形 每个图形的每个角落表示一个变量,字符串类型会标注在图的下方 角线的长度表示值的大小 stars (x[ c ( "x1" , "x2" , "x3" )],full = T,draw.segments = T) |
脸谱图
1
2
3
4
5
|
安装aplpack包 faces (x[ c ( "x1" , "x2" , "x3" )]) 用五官的宽度和高度来描绘数值 人对脸谱高度敏感和强记忆 适合较少样本的情况 |
其他脸谱图
1
2
|
安装TeachingDemos包 faces2 (x) |
茎叶图
1
|
stem (x$x1) |
QQ图
1
2
3
4
5
6
7
|
可用于判断是否正态分布 直线的斜率是标准差,截距是均值 点的散步越接近直线,则越接近正态分布 qqnorm (x1) qqline (x1) qqnorm (x3) qqline (x3) |
散点图的进一步设置
1
|
plot (x$x1,x$x2,main = "数学分析与线性代数成绩的关系" ,xlab = "数学分析" ,ylab = "线性代数" ,xlim = c (0,100),ylim = c (0,100),xaxs= "i" ,yaxs= "i" ,col = "red" ,pch = 19) |
连线图
1
2
3
|
a = c (2,3,4,5,6) b = c (4,7,8,9,12) plot (a,b,type = "l" ) |
多条曲线的效果
1
2
3
4
|
plot (rain$Tokyo,type = "l" ,col = "red" ,ylim = c (0,300),main = "Monthly Rainfall in major cities" , xlab = "Month of Year" , ylab = "Rainfall(mm)" , lwd = 2) lines (rain$NewYork,type = "l" ,col = "blue" , lwd = 2) lines (rain$London,type = "l" ,col = "green" , lwd = 2) lines (rain$Berlin,type = "l" ,col = "orange" , lwd = 2) |
密度图
1
2
|
函数 density () plot ( density ( rnorm (1000))) |
R内置数据集
函数data()列出内置数据
热力图
1
2
3
4
5
6
7
8
|
利用内置的mtcars数据集绘制 data ( "mtcars" ) heatmap ( as.matrix (mtcars),Rowv = NA ,Colv = NA ,col = heat.colors (256),scale = "column" ,margins = c (2,8),main = "Car characteristics by Model" ) Iris(鸢尾花)数据集 Sepal 花萼 Petal 花瓣 Species 种属 |
向日葵散点图
1
2
3
|
用来克服散点图中数据点重叠问题 在有重叠的地方用一朵“向日葵花”的花瓣数目来表示重叠数据的个数 sunflowerplot (iris[,3:4],col = "gold" ,seg.col = "gold" ) |
散点图集
1
2
3
4
5
6
7
8
9
10
11
12
13
|
遍历样本中全部的变量配对画出二元图 直观地了解所有变量之间的关系 pairs (iris[,1:4]) 用plot也可以实现同样的效果 plot (iris[,1:4],main = "Relationship between characteristics of iris flowers" ,pch = 19,col = "blue" ,cex = 0.9) 利用 par ()在同一个device输出多个散点图 Par命令博大精深,用于设置绘图参数, help (par) par (mfrow= c (3,1)) plot (x1,x2) plot (x2,x3) plot (x3,x1) |
关于绘图参数
1
2
3
4
5
|
Help (par) 有哪些颜色? Colors () 关于绘图参数 绘图设备 |
位置控制参数
Main参数:
Oma参数:
三维散点图
1
2
|
安装scatterplot3d包 scatterplot3d (x[2:4]) |
三维作图
1
2
3
4
5
|
x <- y <- seq (-2* pi ,2* pi , pi /15) f <- function (x,y) sin (x) * sin (y) z <- outer (x,y,f) contour (x,y,z,col= "blue" ) persp (x,y,z,theta = 30,phi = 30,expand = 0.7,col = "lightblue" ) |
调和曲线图
1
2
3
4
5
|
unison.r的代码 自定义函数 调和曲线用于聚类判断非常方便 source ( "d:/Rfile/unison.R" ) unison (x[2:4]) |
地图
1
2
3
4
|
安装maps包 map ( "state" ,interior = F) map ( "state" ,boundary = F,col = "red" ,add = T) map ( \'world\' ,fill = T,col = heat.colors (10)) |
R实验:社交数据可视化
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
|
先下载安装maps包和geosphere包并加载 画出美国地图 map ( "state" ) 画出世界地图 map ( "world" ) 通过设置坐标范围使焦点集中在美国周边,并且设置一些有关颜色 xlim <- c (-171.738281,-56.601563) ylim <- c (12.039321,71.856229) map ( "world" ,col = "#f2f2f2" ,fill = T,bg= "white" ,lwd = 0.05,xlim = xlim,ylim = ylim) 画一条弧线连线,表示社交关系 lat_ca <- 39.164141 lon_ca <- -121.64062 lat_me <- 45.21300 lon_me <- -68.906250 inter <- gcIntermediate ( c (lon_ca,lat_ca), c (lon_me,lat_me),n=50,addStartEnd = T) lines (inter) 继续画弧线 lat_tx <- 29.954935 lon_tx <- -98.701172 inter2 <- gcIntermediate ( c (lon_ca,lat_ca), c (lon_tx,lat_tx),n=50,addStartEnd = T) lines (inter2,col = "red" ) |
装载数据
1
2
|
airports <- read.csv ( "http://datasets.flowingdata.com/tuts/maparcs/airports.csv" ,header = T) flights <- read.csv ( "http://datasets.flowingdata.com/tuts/maparcs/flights.csv" ,header = T,as.is = T) |
画出多重联系
1
2
3
4
5
6
7
8
9
|
fsub <- flights[flights$airline == "AA" ,] for (j in 1: length (fsub$airline)) { air1 <- airports[airports$iata == fsub[j,]$airport1,] air2 <- airports[airports$iata == fsub[j,]$airport2,] inter <- gcIntermediate ( c (air1[1,]$long,air1[1,]$lat), c (air2[1,]$long,air2[1,]$lat),n=100,addStartEnd = T) lines (inter,col = "black" , lwd = 0.8) } |
数据操作
读取文本文件数据
1
2
|
先设置工作目录,把文本文件放于该目录下 (x = read.table ( "123.txt" )) |
读取剪贴板
文本或excel的数据均可通过剪贴板操作
读取excel文件数据
方法1:先把excel另存为空格分隔的prn文本格式再读取
合并数据框并保存到本地硬盘
1
2
3
4
5
6
7
8
9
10
|
#生成随机序列 num = seq (10378001,10378100) x1 = round ( runif (100,min = 80,max = 100)) x2 = round ( rnorm (100,mean = 80,sd = 7)) x3 = round ( rnorm (100,mean = 83,sd = 18)) x3[ which (x3>100)] = 100 #合并成数据框 x = data.frame (num,x1,x2,x3) #保存到本地硬盘 write.table (x,file = "G:/whj/Rfile/factor/mark.txt" ,col.names = F,row.names=F,sep = " " ) |
计算各科平均分
1
2
3
4
|
函数 mean (), colMeans (), apply () mean (x) colMeans (x)[ c ( "x1" , "x2" , "x3" )] apply (x, 2, mean) |
求各科最高最低分
1
2
3
|
函数 max (), min (), apply () apply (x, 2, max) apply (x, 2, min) |
求每人总分
1
|
apply (x[ c ( "x1" , "x2" , "x3" )], 1, sum) |
求总分最高
1
2
|
which.max ( apply (x[ c ( "x1" , "x2" , "x3" )], 1, sum)) x$num[ which.max ( apply (x[ c ( "x1" , "x2" , "x3" )], 1, sum))] |
统计模型
R语言的各种分布函数
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
|
n = 10 rnorm (n,mean = 0,sd=1) #高斯(正态) rexp (n,rate = 1) #指数 rgamma (n,shape,scale = 1) #γ分布 rpois (n,lambda) #Poisson分布 rweibull (n,shape,scale = 1) #Weibull分布 rcauchy (n,location = 0,scale = 1) #Cauchy分布 rbeta (n,shape1,shape2) #β分布 rt (n,df) #t分布 rf (n,df1,df2) #F分布 rchisq (n,df) #χ2分布 rbinom (n,size,prob) #二项 rgeom (n,prob) #几何 rhyper (nn,m,n,k) #超几何 rlogis (n,location = 0,scale = 1) #logistic分布 rlnorm (n,meanlog = 0,sdlog = 1) #对数正态 rnbinom (n,size,prob) #负二项分布 runif (n,min = 0,max = 1) #均匀分布 rwilcox (nn,m,n) #Wilcoxon分布 rsignrank (nn,n) |
总体与抽样
大数定理与中心极限定理
常用统计量:样本均值,样本方差,标准差,众数,最小值,最大值,分位数,中位数,上下四分位数
常见的数据描述性分析
中位数 median()
百分位数 quantile()
正态性检验:函数shapiro.text()
P > 0.05,正态性分布
多元数据的数据特征
方差与协方差、相关系数
协方差与相关系数计算
函数cov()和cor()
相关分析与回归分析
相关分析的例子
1
2
3
4
5
6
7
8
9
10
11
12
|
Iris数据集 目测相关性 plot (iris[1,2]) 分离种属 i1 = iris[ which (iris$Species == "setosa" ),1:2] plot (i1) 求相关系数 相关系数是否显著,不能只根据值的大小还需要进行假设检验 cor (i1[1],i1[2]) |
相关系数显著性的假设检验
1
2
3
|
假设r0为总体相关系数,r0=0则说明没有相关系数,建立假设H0:r0=0,H1:r0<> 0 (alpha=0.05) 计算相关系数r的T值和P值 cor.test (i1$Sepal.Length,i1$Sepal.Width) |
一元线性回归分析
原理,最小二乘法
步骤:建立回归模型,求解回归模型中的参数,对回归模型进行检验
数据:身高—体重
1
2
3
|
h = c (171,175,159,155,152,158,154,164,168,166,159,164) w = c (57,64,41,38,35,44,41,51,57,49,47,46) plot (w~h+1) |
自定义函数
1
2
3
4
5
6
7
8
9
10
11
|
lxy <- function (x,y){ n = length (x); sum (x * y) - sum (x) * sum (y)/n } 假设w = a + bh 则有 b = lxy (h,w)/ lxy (h,h) a = mean (w) - b * mean (h) 作回归直线 lines (h,a + b * h) |
回归系数的假设检验
1
2
3
4
5
|
建立线性模型 a = lm (w~1 + h) 线性模型的归总数据,t检验, summary ()函数 summary (a) |
汇总数据的解释:
全部评论
请发表评论