简单的统计和数据处理

2018-12-06  本文已影响0人  脏脏包盛
常见的分布
分布函数
dnorm(0)  density 概率密度
pnorm(0)  probability 概率                                  
qnorm(0.5) quantile 分位数
rnorm(20)正态分布取20个随机数构成的向量

上述函数mean=0,sd=1

分布比较

用于直观验证一组数据是否来自某个分布,或者验证某两组数据是否来自同一(族)分布(正态分布会呈一条直线)
qqnorm(x) 检验数据是否为正态分布,如果是则大致呈直线。

x = rnorm(5000) #正态
y=runif(1000) #均匀
par(mfrow=c(1,2)) #设置图布局1行,2列
qqnorm(x)
qqnorm(y)
image.png

两个数据之间的分布检验,是否为同一分布

y=runif(1000)
x = rnorm(5000)
z = rnorm(5000,mean=2,sd=10)
par(mfrow=c(1,3))
qqplot(x,y)
qqplot(x,z)
qqplot(y,z)

可以看出x和z都为正太分布,它们的qq曲线大致成直线,说明在一定置信区间内分布一致


image.png
分布检验
y = runif(1000)
x = rnorm(5000)
z = rnorm(5000, mean=2, sd=10)
shapiro.test(x)
shapiro.test(y)
shapiro.test(z)
image.png
ks.test(rnorm(5000),runif(1000))
ks.test(rnorm(5000),rnorm(5000,mean=2,sd=10))
ks.test(runif(1000),rnorm(5000,mean=2,sd=10))
ks.test(rnorm(200),rnorm(5000))
image.png
ks.test(rnorm(5000),"punif")
ks.test(rnorm(5000),'pnorm')
ks.test(runif(100),"pnorm")
ks.test(runif(100),"punif)
image.png

自定义函数

name = function(x){statements;return(y)}

fun_static_data = function(x) {
  L = data.frame(mean = mean(x),median = median(x),sd = 
                         sd(x),min = min(x),max = max(x),
                        Q1 = quantile(x,probs = 0.25),Q3 = 
                        quantile(x,probs = 0.75),IQR =IQR(x) );
   return(L);
}
x = runif(20)
static_x = fun_static_data(x)
static_x
summary(x)
x = rnorm(20)
static_x = fun_static_data(x)
static_x
summary(x)
image.png
上一篇下一篇

猜你喜欢

热点阅读