• 设为首页
  • 点击收藏
  • 手机版
    手机扫一扫访问
    迪恩网络手机版
  • 关注官方公众号
    微信扫一扫关注
    公众号

数据分析,R语言

原作者: [db:作者] 来自: [db:来源] 收藏 邀请

数据结构

创建向量和矩阵

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)

汇总数据的解释:


鲜花

握手

雷人

路过

鸡蛋
该文章已有0人参与评论

请发表评论

全部评论

专题导读
上一篇:
R语言set.seed()函数发布时间:2022-07-18
下一篇:
R数据分析学习之R语言学习(1)发布时间:2022-07-18
热门推荐
热门话题
阅读排行榜

扫描微信二维码

查看手机版网站

随时了解更新最新资讯

139-2527-9053

在线客服(服务时间 9:00~18:00)

在线QQ客服
地址:深圳市南山区西丽大学城创智工业园
电邮:jeky_zhao#qq.com
移动电话:139-2527-9053

Powered by 互联科技 X3.4© 2001-2213 极客世界.|Sitemap