【R语言入门与数据分析-4】 R函数
使用过程中发现自己的R语言基础太差了,回头补课。P41-P50
所学视频:
https://www.bilibili.com/video/BV19x411X7C6?p=31&spm_id_from=pageDriver
面向纯小白的R语言入门,我看过的最棒教材。授课老师平平无奇的东北口音、该死的幽默,扶我起来,我还可以再肝!
选项参数
函数常用选项
函数常用选项
-
参数调节
不同R包的函数不一样,可以查看文档
参数调节
接受哪些参数
数学统计函数
d 概率密度函数
p 分布函数
q 分布函数的反函数
r 产生相同分布的随机数
dnorm 正态概率密度函数
pnorm正态分布函数
qnorm 正态分位数函数
rnorm正态分布的随机数函数
概率分布
image.png
rnorm(n =100, mean =15, sd = 2)
runif(50)#50个 0~1之间的数
runif(50, min = 1, max =100)#
set.seed()#生成相同的随机数
描述性统计函数
summary(mtcars)
fivenum(mtcars$hp)
install.packages('Hmisc')
library(Hmisc)
myvars <- c('mpg','hp','wt')
describe(mtcars[myvars])
install.packages('pastecs')
library(pastecs)
stat.desc(mtcars[myvars])
stat.desc(mtcars[myvars], desc = T)
install.packages('psych')
library(psych)
psych::describe(mtcars[myvars],trim = 0.1)#去掉最高最低的10%
# describe函数,以最新载入的包为主
分组函数aggregate
一次只能使用一个函数
aggregate(Cars93[c('Min.Price','Max.Price','MPG.city')],by = list(Origin = Cars93$Origin),mean)
Origin Min.Price Max.Price MPG.city
1 USA 16.53542 20.62708 20.95833
2 non-USA 17.75556 23.25556 23.86667
aggregate(Cars93[c('Min.Price','Max.Price','MPG.city')],by = list(Origin = Cars93$Origin,Manufacturer = Cars93$Manufacturer),mean)
Origin Manufacturer Min.Price Max.Price MPG.city
1 non-USA Acura 21.05000 28.750 21.50000
2 non-USA Audi 28.35000 38.450 19.50000
3 non-USA BMW 23.70000 36.200 22.00000
4 USA Buick 20.75000 22.550 19.00000
5 USA Cadillac 35.25000 39.500 16.00000
6 USA Chevrolet 16.08750 20.325 19.62500
7 USA Chrylser 18.40000 18.400 20.00000
8 USA Chrysler 22.00000 23.300 21.50000
9 USA Dodge 12.51667 18.900 21.66667
10 USA Eagle 12.70000 18.850 24.50000
11 USA Ford 12.43750 17.500 22.00000
12 non-USA Geo 9.10000 11.750 38.00000
13 non-USA Honda 13.06667 19.900 30.00000
14 non-USA Hyundai 9.32500 11.625 24.25000
15 non-USA Infiniti 45.40000 50.400 17.00000
16 non-USA Lexus 31.10000 32.000 18.00000
17 USA Lincoln 33.85000 36.550 17.50000
18 non-USA Mazda 16.34000 18.860 23.60000
19 non-USA Mercedes-Benz 36.40000 57.450 19.50000
20 USA Mercury 14.10000 14.950 21.00000
21 non-USA Mitsubishi 15.05000 21.400 23.50000
22 non-USA Nissan 14.85000 19.175 22.75000
23 USA Oldsmobile 16.55000 18.450 21.00000
24 USA Plymouth 11.40000 17.400 23.00000
25 USA Pontiac 13.28000 19.020 22.20000
26 non-USA Saab 20.30000 37.100 20.00000
27 USA Saturn 9.20000 12.900 28.00000
28 non-USA Subaru 11.36667 14.500 27.00000
29 non-USA Suzuki 7.30000 10.000 39.00000
30 non-USA Toyota 14.02500 20.550 24.25000
31 non-USA Volkswagen 16.45000 19.575 20.25000
32 non-USA Volvo 23.30000 26.000 20.50000
- 分组返回多个统计值
library(doBy)
summaryBy(mpg +hp + wt ~am ,data = mtcars, FUN = mystats)#函数可以自定义
summaryBy(mpg +hp + wt ~am ,data = mtcars, FUN = mean)
psych::describe.by(mtcars[myvars],list(am = mtcars$am))#无法使用自定义函数
频数统计函数
因子专门用来分组,之后才能进行分组频数统计
mtcars$cyl <- as.factor(mtcars$cyl)
split(mtcars,mtcars$cyl)
#不明显的分组,cut分隔
cut(mtcars$mpg,c(seq(10,50,10)))
table(mtcars$cyl)#table 后直接接因子,统计频数
table(cut(mtcars$mpg,c(seq(10,50,10))))
prop.table(table(mtcars$cyl))#计算频率函数
#二维的频率怎么整
library(vcd)
Arthritis
table(Arthritis$Treatment,Arthritis$Improved)
#变量太多,可以用with,attach提前加载数据
with(data = Arthritis,table(Treatment,Improved))#with 加载数据
Improved
Treatment None Some Marked
Placebo 29 7 7
Treated 13 7 21
- 处理二维列联表,xtabs函数更合适
xtabs(~Treatment+Improved,data= Arthritis )
Improved
Treatment None Some Marked
Placebo 29 7 7
Treated 13 7 21
#边际频率/比例? 单独按照行或者列
margin.table
x <- xtabs(~Treatment+Improved,data= Arthritis )
margin.table(x,1)
margin.table(x,1)
Treatment
Placebo Treated
43 41
prop.table(x,1)
Improved
Treatment None Some Marked
Placebo 0.6744186 0.1627907 0.1627907
Treated 0.3170732 0.1707317 0.5121951
#三维列联表
ftable(xtabs(~Treatment+Improved+Sex,data= Arthritis ))#转换成平铺式的
Sex Female Male
Treatment Improved
Placebo None 19 10
Some 7 0
Marked 6 1
Treated None 6 7
Some 5 2
Marked 16 5
独立性检验函数
变量之间独立、没有关系/反之就是相关性
- 卡方检验
- Fisher 检验
- Cochran-Mantel- Haenszel 检验
假设检验
原假设----没有事情发生
备择假设----发生了
p-value,原假设为真时,得到的最大的或者超出所得到的的检验统计量值的 概率。
一般将p值设为0.05, p<- 0.05拒绝原假设,p>0.05,不拒绝原假设
#看 Treatment与Improved与之间,是否独立,独立,表明改善与治疗没有关系
#卡方检验
mytable <- table(Arthritis$Treatment,Arthritis$Improved)
chisq.test(mytable)#卡方独立性检验,非独立, 有关系
my <- table(Arthritis$Improved,Arthritis$Sex)#顺序不影响
chisq.test(my)#两变量是独立的,没有关系
#Fisher 精确检验
fisher.test(mytable) #不独立,相关
mtable <- xtabs(~Treatment+Improved+Sex,data= Arthritis)#顺序有差
mantelhaen.test(mtable)#假设原理:两个名义变量在第三个变量每一层中都条件独立
R还有其他包进行独立性检验
相关性分析函数
相关性分析是指对两个或者多个具备相关性的变量元素进行分析,从而衡量两个变量因素的相关密切程度。相关性的元素之间需要存在一定的联系或者概率才可以进行相关性分析。
- Pearson相关系数
- spearman相关系数
- kendall相关系数
- 偏相关系数
- polychoric 多分格相关系数
- polyserial多系列相关系数
cor() # Pearson相关系数(默认), spearman相关系数,kendall相关系数# 相关系数在0~1之间,数值越大,相关性越大
state.x77#矩阵
View(cor(state.x77))
cov() #协方差,衡量两个变量的总体误差
cov(state.x77)
x <- state.x77[,c(1,2,3,6)]
y <- state.x77[,c(4,5)]
cor(x,y)
Life Exp Murder
Population -0.06805195 0.3436428
Income 0.34025534 -0.2300776
Illiteracy -0.58847793 0.7029752
HS Grad 0.58221620 -0.4879710
- 其他扩展包
library(ggm)
colnames(state.x77)
pcor(c(1,5,2,3,6),cov(state.x77))#偏相关系数
#控制一个变量时,剩余变量之间的相互关系
相关性检验函数
- 置信区间 confidence interval
样本统计量所构造的总体参数的估计区间。统计学中农,一个概率样本的置信区间是对这个样本的某个总体参数的区间估计。置信区间展现的是这个参数的真实值有一定概率落在测量结果的周围的程度。置信区间给出的是被测量参数的测量值可信程度
cor.test()# two.sided,正负相关; greater,正相关, less 负相关
#检测文盲率、谋杀率的关系
cor.test(state.x77[,3], state.x77[,5])
library(psych)
corr.test()#一次性进行多个变量间的计算,可进行递归处理
corr.test(state.x77)#
#偏相关检验
library(ggm)
pcor.test()
x <- pcor(c(1,5,2,3,6),cov(state.x77))
pcor.test(x,3, 50)
#分组研究中的相关性检验 t-检验,适用于样本含量少,方差未知的正态分布
library(MASS)
UScrime
t.test(y~x) #y 数值型变量,x,二分型变量
t.test(Prob~So,data = UScrime)
-
在多于两个组之间进行比较
正态分布-方差分析
非正态分布- 非参数方法 -
非参数检验
nonparametric tests,在总体方差未知或者知道甚少的情况下,利用样本对总体分布形态等进行推断的方法、在推断过程中农不涉及有关总体提分布的函数,因而得名'非参数'检验 -
参数检验
parametric test,在总体分布形式已知的情况下,对总体分布的参数,如均值、方差等进行推断的方法。也就是数据分布已知,如满足正态分布。
绘图函数
-
基础绘图系统,
ls('package:graphics')
-
lattice
-
ggplot2
-
grid包
绘图,输入、输出的数据格式要知道。 -
R 如何识别不同类型数据,S3系统,面向对象编程
属性、泛型函数、方法
plot(women)
plot(as.factor(mtcars$cyl))
fit <- lm(height ~weight, data = women)
plot(fit)
methods(plot)
【后面有专门的绘图课】
R中自定义函数
- 函数名称 #字幕开头
- 函数声明
myfun <- function(选项参数) {
函数体
} - 函数参数
- 函数体
循环与向量化操作
函数内部用循环实现向量化操作
循环 包括 条件判断、执行循环的结构、表达式