简单的统计和数据处理
2018-12-06 本文已影响0人
脏脏包盛
常见的分布
- 均匀分布: unif
- 正态分布: norm
- T分布 :t
- F分布 :f
- 二项分布:binom
- 负二项分布:nbinom
- 多项式分布:multinom
- 泊松分布:pois
- 超几何分布:hyper
- β分布 :beta
- χ2分布: chisq
https://blog.csdn.net/u012429555/article/details/78071728
分布函数
- “d”:密度函数
- “p”:累计分布函数
- “q”:分位函数
- “r”:随机数函数
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
分布检验
- shapiro.test(x)检验数据是否符合正态分布
自己预设置信区间a值,如果得到的p-value<a ,则拒绝该数据分布是正态分布的假设。且检测数据量大小最大为5000。
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(x,y) 检验数据分布是否相同
和shapiro.test(x)比较方法一致
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