数据分析R代码

【R语言入门与数据分析-4】 R函数

2021-02-16  本文已影响0人  森尼啊

使用过程中发现自己的R语言基础太差了,回头补课。P41-P50
所学视频
https://www.bilibili.com/video/BV19x411X7C6?p=31&spm_id_from=pageDriver
面向纯小白的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(~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

独立性检验函数

变量之间独立、没有关系/反之就是相关性

假设检验
原假设----没有事情发生
备择假设----发生了
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还有其他包进行独立性检验

相关性分析函数

相关性分析是指对两个或者多个具备相关性的变量元素进行分析,从而衡量两个变量因素的相关密切程度。相关性的元素之间需要存在一定的联系或者概率才可以进行相关性分析。

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))#偏相关系数
#控制一个变量时,剩余变量之间的相互关系

相关性检验函数

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)

绘图函数

plot(women)
plot(as.factor(mtcars$cyl))
fit <- lm(height ~weight, data = women)
plot(fit)
methods(plot)

【后面有专门的绘图课】

R中自定义函数

循环与向量化操作

函数内部用循环实现向量化操作
循环 包括 条件判断、执行循环的结构、表达式

上一篇下一篇

猜你喜欢

热点阅读