R語言中的五種常用統(tǒng)計分析方法
1、分組分析aggregation
根據(jù)分組字段,將分析對象劃分為不同的部分,以進行對比分析各組之間差異性的一種分析方法。
常用統(tǒng)計指標(biāo):
計數(shù) length
求和 sum
平均值 mean
標(biāo)準(zhǔn)差 var
方差 sd
分組統(tǒng)計函數(shù)
aggregate(分組表達式,data=需要分組的數(shù)據(jù)框,function=統(tǒng)計函數(shù))
參數(shù)說明
formula:分組表達式,格式:統(tǒng)計列~分組列1+分組列2+...
data=需要分組的數(shù)據(jù)框
function:統(tǒng)計函數(shù)
aggregate(name ~ class, data=data, FUN=length); #求和 aggregate(score ~ class, data=data, FUN=sum); #均值 aggregate(score ~ class, data=data, FUN=mean); #方差 aggregate(score ~ class, data=data, FUN=var); #標(biāo)準(zhǔn)差 aggregate(score ~ class, data=data, FUN=sd)
2、分布分析cut
根據(jù)分析目的,將數(shù)據(jù)(定量數(shù)據(jù))進行等距或者不等距的分組,進行研究各組分布規(guī)律的一種分析方法。
分組函數(shù)
cut(data,breaks,labels,right)
參數(shù)說明
data=需要分組的一列數(shù)據(jù)
breaks=分組條件,如果是一個數(shù)字,那么將平均分組;如果是一個數(shù)組,那么將按照指定范圍分組
labels:分組標(biāo)簽
right:指定范圍是否右閉合,默認(rèn)為右閉合,right參數(shù)為TRUE
用戶明細 <- read.csv('data.csv', stringsAsFactors=FALSE) head(用戶明細) breaks <- c(min(用戶明細$年齡)-1, 20, 30, 40, max(用戶明細$年齡)+1) 年齡分組 <- cut(用戶明細$年齡, breaks = breaks) 用戶明細[, '年齡分組1'] <- 年齡分組 年齡分組 <- cut(用戶明細$年齡, breaks = breaks, right = FALSE) 用戶明細[, '年齡分組2'] <- 年齡分組 labels <- c('20歲以及以下', '21歲到30歲', '31歲到40歲', '41歲以上'); 年齡分組 <- cut(用戶明細$年齡, breaks = breaks, labels = labels) 用戶明細[, '年齡分組'] <- 年齡分組 head(用戶明細) aggregate(formula=用戶ID ~ 年齡分組, data=用戶明細, FUN=length)
3、交叉分析tapply(相當(dāng)于excel里的數(shù)據(jù)透視表)
通常用于分析兩個或兩個以上,分組變量之間的關(guān)系,以交叉表形式進行變量間關(guān)系的對比分析;
交叉分析的原理就是從數(shù)據(jù)的不同維度,綜合進行分組細分,以進一步了解數(shù)據(jù)的構(gòu)成、分布特征。
交叉分析函數(shù):
tapply(統(tǒng)計向量,list(數(shù)據(jù)透視表中的行,數(shù)據(jù)透視變中的列),FUN=統(tǒng)計函數(shù))
返回值說明:
一個table類型的統(tǒng)計量
breaks <- c(min(用戶明細$年齡)-1, 20, 30, 40, max(用戶明細$年齡)+1)
labels <- c('20歲以及以下', '21歲到30歲', '31歲到40歲', '41歲以上'); 年齡分組 <- cut(用戶明細$年齡, breaks = breaks, labels = labels) 用戶明細[, '年齡分組'] <- 年齡分組 head(用戶明細) tapply(用戶明細$用戶ID, list(用戶明細$年齡分組, 用戶明細$性別), FUN=length)
4、結(jié)構(gòu)分析prop.table
是在分組的基礎(chǔ)上,計算各組成部分所占的比重,進而分析總體內(nèi)部特征的一種分析方法。
for example:資產(chǎn)占有率就是一個非常經(jīng)典的運用
統(tǒng)計占比函數(shù)
prop.table(table,margin=NULL)
參數(shù)說明:
table,使用tapply函數(shù)統(tǒng)計得到的分組計數(shù)或求和結(jié)果
margin,占比統(tǒng)計方式,具體參數(shù)如下:
屬性 注釋
1 按行統(tǒng)計占比
2 按列統(tǒng)計占比
NULL 按整體統(tǒng)計占比
data <- read.csv('data.csv', stringsAsFactors=FALSE);
head(data) t <- tapply(data$月消費.元., list(data$通信品牌), sum) t prop.table(t); t <- tapply(data$月消費.元., list(data$通信品牌), mean) t prop.table(t); t <- tapply(data$月消費.元., list(data$省份, data$通信品牌), sum) t prop.table(t, margin = 2)
5、相關(guān)分析prop.table
是研究現(xiàn)象之間是否存在某種依存關(guān)系,并對具體有依存關(guān)系的現(xiàn)象探討其相關(guān)方向以及相關(guān)程度,是研究隨機變量之間的相關(guān)關(guān)系的一種統(tǒng)計方法。
相關(guān)系數(shù)r 可以用來描述定量變量之間的關(guān)系
相關(guān)分析函數(shù):
cor(向量1,向量2,...)返回值:table類型的統(tǒng)計量
data <- read.csv('data.csv', fileEncoding = "UTF-8"); cor(data[, 2:7])
補充:R中基本統(tǒng)計分析方法整理
面對一大堆的數(shù)據(jù),往往會讓人眼花繚亂。但是只要使用一些簡單圖形和運算,就可以了解數(shù)據(jù)更多的特征。R提供了很多關(guān)于數(shù)據(jù)描述的函數(shù),通過這些函數(shù)可以對數(shù)據(jù)進行一個簡單地初步分析。
獲取描述性統(tǒng)計量的R函數(shù)
(1)常用統(tǒng)計函數(shù)(參數(shù)x為向量)
mean(x):平均值
median(x):中位數(shù)
sd(x):標(biāo)準(zhǔn)差
var(x):方差
sum(x):求和
min(x):最小值
max(x):最大值
range(x):值域
......等等
(2)summary()函數(shù)
提供最小值、下四分位數(shù)、中位數(shù)、平均值、上四分位數(shù)、最大值。
(3)apply()或sapply函數(shù)
計算參數(shù)指定的任意描述性統(tǒng)計量。
其中sapply()用法:sapply(x,F(xiàn)UNC,options) ,x是待處理的數(shù)據(jù)框,F(xiàn)UNC是用戶指定的函數(shù),如sum()、max()、mean()等等,指定了的options會傳遞給FUNC。
(4) Hmisc包中的describe()函數(shù)
返回變量和觀測值的數(shù)目、缺失值和唯一值的數(shù)目、平均值、分位數(shù)、五個最大的值和五個最小的值。
(5)pastecs包中的stat.desc()函數(shù)
可以計算種類繁多的描述性統(tǒng)計量
(6)psych包也提供了一個describe()函數(shù)
它可以計算非缺失值的數(shù)量、平均數(shù)、標(biāo)準(zhǔn)差、中位數(shù)、截尾均值、絕對中位差、最小值、最大值、值域、偏度、峰度等。
以上為個人經(jīng)驗,希望能給大家一個參考,也希望大家多多支持腳本之家。如有錯誤或未考慮完全的地方,望不吝賜教。
相關(guān)文章
R語言中dnorm,pnorm,qnorm和rnorm的區(qū)別淺析
正在學(xué)習(xí)R語言統(tǒng)計學(xué)的小伙伴,可能會被各種專有名詞所困擾,下面這篇文章主要給大家介紹了關(guān)于R語言中dnorm,pnorm,qnorm和rnorm區(qū)別的相關(guān)資料,需要的朋友可以參考下2022-12-12聊聊R語言中Legend 函數(shù)的參數(shù)用法
這篇文章主要介紹了聊聊R語言中Legend 函數(shù)的參數(shù)用法,具有很好的參考價值,希望對大家有所幫助。一起跟隨小編過來看看吧2021-03-03