首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >R语言 基本统计分析

R语言 基本统计分析

作者头像
拴小林
发布2020-07-10 12:30:11
1.2K0
发布2020-07-10 12:30:11
举报
文章被收录于专栏:数据驱动实践数据驱动实践

本章节是数据预处理的第一步:了解数据(集)。只有充分了解了数据,我们才能对数据做进一步的预处理和后续深入的分析。

目录

1 数据结构

str()

dim()

head()

2 描述性统计分析

summary()

psych::describe()

分组计算doBy::summaryBy

分组计算psych::describeBy

3 频数和列联表

table 一维计数

xtabs 多维(交叉)计数

gmodels::CrossTable #列联表

01

数据结构

严格来讲“数据结构”不是基本统计分析的内容,但是这是了解数据的第一步,因此这里做简单普及!推荐使用str()函数

class() # 数据类型dim() # 数据(集)的行列数nrow() # 数据(集)的行数,等价于dim(mtcars)[1]ncol() # 数据(集)的列数,等价于dim(mtcars)[2]View() # 查看数据(集),以表格形式展示 如下图1head(X,n) # 显示数据集前n行str() # 查看数据(集)类型、行列数,每列的数据类型和简要数据概况

图1 View(mtcars)

> data(mtcars) > class(mtcars) # 数据类型[1] "data.frame" > dim(mtcars) # 数据(集)的行列数[1] 32 11> > > nrow(mtcars) # 数据(集)的行数,等价于dim(mtcars)[1][1] 32> dim(mtcars)[1][1] 32> > ncol(mtcars) # 数据(集)的列数,等价于dim(mtcars)[2][1] 11> dim(mtcars)[2][1] 11

> str(mtcars)'data.frame':  32 obs. of  11 variables: $ mpg : num  21 21 22.8 21.4 18.7 18.1 14.3 24.4 22.8 19.2 ... $ cyl : num  6 6 4 6 8 6 8 4 4 6 ... $ disp: num  160 160 108 258 360 ... $ hp  : num  110 110 93 110 175 105 245 62 95 123 ... $ drat: num  3.9 3.9 3.85 3.08 3.15 2.76 3.21 3.69 3.92 3.92 ... $ wt  : num  2.62 2.88 2.32 3.21 3.44 ... $ qsec: num  16.5 17 18.6 19.4 17 ... $ vs  : num  0 0 1 1 0 1 0 1 1 1 ... $ am  : num  1 1 1 0 0 0 0 0 0 0 ... $ gear: num  4 4 4 3 3 3 3 4 4 4 ... $ carb: num  4 4 1 1 2 1 4 2 2 4 ...

02

描述性统计分析

描述性统计分析主要是认识数据的整体状况,例如是否缺失、均值、方差、中位数等描述性统计变量。推荐使用summary()、psych::describe()

## 描述统计# 1.1 summary()summary(mtcars) #具体查看下方示例
# 1.2 psych::describe library(psych)psych::describe(mtcars) #具体查看下方示例
# 1.3 Hmisc::describelibrary(Hmisc)describe(df)
# 1.4 aggregate() # 分组描述统计分析myvars<-c("mpg","hp","wt")aggregate(mtcars[myvars],by=list(am=mtcars$am),mean)#输出结果am      mpg       hp       wt1  0 17.14737 160.2632 3.7688952  1 24.39231 126.8462 2.411000
# 1.5 doBy包和psych包 具体查看下方示例# 分组计算的扩展,doBy包和psych包提供了分组计算的描述性统计量的函数,doBy包中的summaryBy()函数使用的基本格式

summary()函数提供了最小值、最大值、四分位数、均值,另外还可以因子向量和逻辑型向量的频数统计。

> summary(mtcars)      mpg             cyl             disp             hp             drat             wt             qsec       Min.   :10.40   Min.   :4.000   Min.   : 71.1   Min.   : 52.0   Min.   :2.760   Min.   :1.513   Min.   :14.50   1st Qu.:15.43   1st Qu.:4.000   1st Qu.:120.8   1st Qu.: 96.5   1st Qu.:3.080   1st Qu.:2.581   1st Qu.:16.89   Median :19.20   Median :6.000   Median :196.3   Median :123.0   Median :3.695   Median :3.325   Median :17.71   Mean   :20.09   Mean   :6.188   Mean   :230.7   Mean   :146.7   Mean   :3.597   Mean   :3.217   Mean   :17.85   3rd Qu.:22.80   3rd Qu.:8.000   3rd Qu.:326.0   3rd Qu.:180.0   3rd Qu.:3.920   3rd Qu.:3.610   3rd Qu.:18.90   Max.   :33.90   Max.   :8.000   Max.   :472.0   Max.   :335.0   Max.   :4.930   Max.   :5.424   Max.   :22.90         vs               am              gear            carb       Min.   :0.0000   Min.   :0.0000   Min.   :3.000   Min.   :1.000   1st Qu.:0.0000   1st Qu.:0.0000   1st Qu.:3.000   1st Qu.:2.000   Median :0.0000   Median :0.0000   Median :4.000   Median :2.000   Mean   :0.4375   Mean   :0.4062   Mean   :3.688   Mean   :2.812   3rd Qu.:1.0000   3rd Qu.:1.0000   3rd Qu.:4.000   3rd Qu.:4.000   Max.   :1.0000   Max.   :1.0000   Max.   :5.000   Max.   :8.000  

psych::describe(mtcars) #推荐使用

> psych::describe(mtcars)     vars  n   mean     sd median trimmed    mad   min    max  range  skew kurtosis    sempg     1 32  20.09   6.03  19.20   19.70   5.41 10.40  33.90  23.50  0.61    -0.37  1.07cyl     2 32   6.19   1.79   6.00    6.23   2.97  4.00   8.00   4.00 -0.17    -1.76  0.32disp    3 32 230.72 123.94 196.30  222.52 140.48 71.10 472.00 400.90  0.38    -1.21 21.91hp      4 32 146.69  68.56 123.00  141.19  77.10 52.00 335.00 283.00  0.73    -0.14 12.12drat    5 32   3.60   0.53   3.70    3.58   0.70  2.76   4.93   2.17  0.27    -0.71  0.09wt      6 32   3.22   0.98   3.33    3.15   0.77  1.51   5.42   3.91  0.42    -0.02  0.17qsec    7 32  17.85   1.79  17.71   17.83   1.42 14.50  22.90   8.40  0.37     0.34  0.32vs      8 32   0.44   0.50   0.00    0.42   0.00  0.00   1.00   1.00  0.24    -2.00  0.09am      9 32   0.41   0.50   0.00    0.38   0.00  0.00   1.00   1.00  0.36    -1.92  0.09gear   10 32   3.69   0.74   4.00    3.62   1.48  3.00   5.00   2.00  0.53    -1.07  0.13carb   11 32   2.81   1.62   2.00    2.65   1.48  1.00   8.00   7.00  1.05     1.26  0.29

分组计算的扩展,doBy包和psych包提供了分组计算的描述性统计量的函数,doBy包中的summaryBy()函数使用的基本格式:

# doBy()包中summaryBy()函数的使用格式:# summaryBy(formula,data=dataframe,FUN=function)# formula接受以下格式:# var1+var2+var3+var4+……+varN~groupvar1+groupvar2+……#+groupvarN# 在~左侧的变量师需要分析的数值型变量,而在右侧的变量是类别型的分组变#量。library(doBy)summaryBy(mpg+hp+wt~am,data=mtcars,FUN=mystats)# 输出结果  am mpg.n mpg.mean mpg.stdev   mpg.skew mpg.kurtosis hp.n  hp.mean hp.stdev     hp.skew1  0    19 17.14737  3.833966 0.01395038   -0.8031783   19 160.2632 53.90820 -0.014225192  1    13 24.39231  6.166504 0.05256118   -1.4553520   13 126.8462 84.06232  1.35988586  hp.kurtosis wt.n  wt.mean  wt.stdev   wt.skew wt.kurtosis1  -1.2096973   19 3.768895 0.7774001 0.9759294   0.14156762   0.5634635   13 2.411000 0.6169816 0.2103128  -1.1737358

library(psych)myvars<-c("mpg","hp","wt")describeBy(mtcars[myvars],list(am=mtcars$am))#输出结果Descriptive statistics by group am: 0    vars  n   mean    sd median trimmed   mad   min    max  range  skew kurtosis    sempg    1 19  17.15  3.83  17.30   17.12  3.11 10.40  24.40  14.00  0.01    -0.80  0.88hp     2 19 160.26 53.91 175.00  161.06 77.10 62.00 245.00 183.00 -0.01    -1.21 12.37wt     3 19   3.77  0.78   3.52    3.75  0.45  2.46   5.42   2.96  0.98     0.14  0.18-------------------------------------------------------------------- am: 1    vars  n   mean    sd median trimmed   mad   min    max  range skew kurtosis    sempg    1 13  24.39  6.17  22.80   24.38  6.67 15.00  33.90  18.90 0.05    -1.46  1.71hp     2 13 126.85 84.06 109.00  114.73 63.75 52.00 335.00 283.00 1.36     0.56 23.31wt     3 13   2.41  0.62   2.32    2.39  0.68  1.51   3.57   2.06 0.21    -1.17  0.17

03

频数和列联表

推荐学习使用table、xtabs、gmodels::CrossTable

## 2.频数和列联表# 2.1  table #频数生成table(mtcars$vs)table(mtcars$gear)
# 将频数转换为比例   prop.table(table(mtcars$gear))# prop.table()*100转化成百分比
# 2.2 二维列联表# mytable<-table(A,B) A为行变量 B为列变量# xtabs()函数还可以使用公式风格的输入创建列联表# mytable<-xtabs(~A+B,data=mydata)  #其中mydata是一个矩阵或者数据框# 三维以上列联表mytable<-xtabs(~Treatment+Sex+Improved,data=Arthritis)mytable <- xtabs(~gear+vs, data = mtcars)  mytable
prop.table(mytable, 2) #按列计算百分比addmargins(mytable, 2) #增加行和
#使用CrossTable()创建二维列表# install.packages("gmodels")library(gmodels)CrossTable(mtcars$gear, mtcars$vs)

示例

> ## 2.频数和列联表> # 2.1  table #频数生成> table(mtcars$vs)
 0  1 18 14 > table(mtcars$gear)
 3  4  5 15 12  5 > > # 将频数转换为比例   > prop.table(table(mtcars$gear))
      3       4       5 0.46875 0.37500 0.15625 > # prop.table()*100转化成百分比> > # 2.2 二维列联表> # mytable<-table(A,B) A为行变量 B为列变量> # xtabs()函数还可以使用公式风格的输入创建列联表> # mytable<-xtabs(~A+B,data=mydata)  #其中mydata是一个矩阵或者数据框> # 三维以上列联表mytable<-xtabs(~Treatment+Sex+Improved,data=Arthritis)> mytable <- xtabs(~gear+vs, data = mtcars)  > mytable    vsgear  0  1   3 12  3   4  2 10   5  4  1> > prop.table(mytable, 2) #按列计算百分比    vsgear          0          1   3 0.66666667 0.21428571   4 0.11111111 0.71428571   5 0.22222222 0.07142857> addmargins(mytable, 2) #增加行和    vsgear  0  1 Sum   3 12  3  15   4  2 10  12   5  4  1   5> > #使用CrossTable()创建二维列表> # install.packages("gmodels")> library(gmodels)> CrossTable(mtcars$gear, mtcars$vs)
    Cell Contents|-------------------------||                       N || Chi-square contribution ||           N / Row Total ||           N / Col Total ||         N / Table Total ||-------------------------|
 Total Observations in Table:  32 
              | mtcars$vs  mtcars$gear |         0 |         1 | Row Total | -------------|-----------|-----------|-----------|           3 |        12 |         3 |        15 |              |     1.504 |     1.934 |           |              |     0.800 |     0.200 |     0.469 |              |     0.667 |     0.214 |           |              |     0.375 |     0.094 |           | -------------|-----------|-----------|-----------|           4 |         2 |        10 |        12 |              |     3.343 |     4.298 |           |              |     0.167 |     0.833 |     0.375 |              |     0.111 |     0.714 |           |              |     0.062 |     0.312 |           | -------------|-----------|-----------|-----------|           5 |         4 |         1 |         5 |              |     0.501 |     0.645 |           |              |     0.800 |     0.200 |     0.156 |              |     0.222 |     0.071 |           |              |     0.125 |     0.031 |           | -------------|-----------|-----------|-----------|Column Total |        18 |        14 |        32 |              |     0.562 |     0.438 |           | -------------|-----------|-----------|-----------|
本文参与 腾讯云自媒体分享计划,分享自微信公众号。
原始发表:2020-05-24,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 数据驱动实践 微信公众号,前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体分享计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档