分布函數家族: *func()
r : 隨機分布函數
d : 概率密度函數
p : 累積分布函數
q : 分位數函數
func()表示具體的名稱如下表:
例子
#r : 隨機分布函數 #d : 概率密度函數 #p : 累積分布函數 #q : 分位數函數 #生成符合二項分布的數據 # 二項分布 # X~(N,P) str(rbinom) x<-rbinom(5,1,0.5) #做1次試驗,假設正面概率為0.5,進行5次觀察,每1次試驗中正面出現的次數為別為 0 0 1 1 0 x<-rbinom(5,10,0.5) #做10次試驗,假設正面概率為0.5,進行5次觀察,每10次試驗中正面出現的次數分別為 4 4 7 6 6 x plot(x) #概率密度函數 y<-dbinom(40,100,0.5) #做100次試驗,假設正面概率為0.5,正面出現的次數為50次的概率是 0.01084387 y<-dbinom(40:50,100,0.5) ##做100次試驗,假設正面概率為0.5,正面出現的次數分別為40到50的概率分別為: 0.01084387... sum(y) #累計概率 y<-dbinom(0:100,100,0.5) plot(y) #概率密度曲線 plot(0:100,y,pch=16) #概率密度曲線 #累計概率 z<-pbinom(50,100,0.5) #累計概率 小於等於50的概率為0.5397946 z<-dbinom(0:50,100,0.5) sum(z) plot(pbinom(0:100,100,0.5)) #分為點 q = qbinom(0.5,100,0.5) #在0.5分為點的數值為 q
均值:mean
中位數:median
分位數:quantile
方差:var
標准差:sd
頻數表:table
偏度: Sk=sum((x[!is.na(x)]-Av)^3/Sd^3)/N #偏度
<0 左偏 >0 右偏
峰度: Ku=sum((x[!is.na(x)]-Av)^4/Sd^4)/N-3 #峰度
<3 坡度緩 >3 坡度陡
#單變量的描述統計 str(airquality) #R自帶的空氣質量數據集 str 結構structure的縮寫 summary(airquality) #匯總數據包括 最小值、分位數、平均數、中位數、最大值、缺失值(NA's) #平均值 mean(airquality$Ozone, na.rm = T) #na.rm=T 對缺失值進行刪除,存在缺失值,結果為NA mean(airquality$Temp, na.rm = T, trim = .01) #trim=.01 按百分比去掉頭尾的數,刪除極值 #中位數 median(airquality$Ozone, na.rm = T) #加權平均數 temp100 <- rnorm(100,30,1) #通過正態分布生成100個隨機數,平均值為30 w <- 1:100 #生成每個值的權重值 wmt = weighted.mean(temp100,w,na.rm = T) #進行加權平均計算 mt = mean(temp100,na.rm = T) #幾何平均數 x<- c(.045, .021, .255, .019) xm = mean(x) xg = exp(mean(log(x)))#exp指數 log對數 #中位數 median(temp100,na.rm = T) #分位數 quantile(airquality$Temp, na.rm = T) # 0% 25% 50% 75% 100% 50%中位數 0%最小值 25%上四分位數 # 56 72 79 85 97 quantile(airquality$Temp, na.rm = T, probs = c(0,0.1,0.9,1)) #通過probs自定義分位點 #方差 var(temp100) #標准差 ts <- sd(temp100) ts^2 #標准差的平方等於方差 #峰度和偏度 mysummary = function(x,...){ Av=mean(x,na.rm = T) Sd=sd(x,na.rm = T) N=length(x[!is.na(x)]) Sk=sum((x[!is.na(x)]-Av)^3/Sd^3)/N #偏度 Ku=sum((x[!is.na(x)]-Av)^4/Sd^4)/N-3 #峰度 result=c(argv=Av, sd=Sd, skew=Sk, kurt=Ku) return (result) } mysummary(temp100) # argv sd skew kurt #30.109613023 1.033804058 -0.008489863 -0.597720454 #通過apply進行提交 apply(airquality[,c(-5,-6)],2,FUN=mysummary) #Ozone Solar.R Wind Temp #argv 42.129310 185.9315068 9.95751634 77.8823529 #sd 32.987885 90.0584222 3.52300135 9.4652697 #skew 1.209866 -0.4192893 0.34102753 -0.3705073 #kurt 1.112243 -1.0040581 0.02886468 -0.4628929
非單封分布:
#非單峰分布不能簡單計算均值 x=rnorm(100,50,9) y=rnorm(200,150,9) z=c(x,y) plot(density(z)) #使用密度曲線畫圖 abline(v=mean(z),col=3,lw=3)
協方差:cov
相關系數:cor 通過相關系數計算相關性
缺失值處理:行刪除、配對刪除等
#協方差 cov(airquality[,-5:-6],use = 'complete.obs') #行刪除,處理缺失值 cov(airquality[,-5:-6],use = 'pairwise.complete.obs') #配對刪除,處理缺失值 #相關系數 cor(airquality[,-5:-6],use = 'complete.obs') #行刪除 cor(airquality[,-5:-6],use = 'pairwise.complete.obs') #配對刪除 #結果為對稱矩陣