R - 生成数据

2015-01-17  本文已影响804人  Waste_Land

正态分布函数dnorm()、pnorm()、qnorm()和rnorm()的使用方法:
密度函数: dnorm(x, mean=0, sd=l, log=FALSE)
分布函数: pnorm(q, mean=0, sd=l, lower.tail=TRUE, log.p=FALSE)
计算下分位点: qnorm(p, mean=0, sd=l, lower.tail=TRUE, log.p=FALSE)
产生随机数: rnorm(n,mean=0,sd=l)

说明:

例如:
> dnorm(2,0,1)
[1] 0.05399097
> pnorm(0,0,1)
[1] 0.5

其他的分布函数也有类似的用法:

分布函数或分布律 R中的名称 附加参数
beta beta shapel, shape2, ncp
binomial binom size, prob
Cauchy cauchy location, scale
chi-squared chisq df, ncp
exponential exp rate
F f dfl, df2, ncp
gamma gamma shape, scale
geometric geom prob
hypergeometric hyper m, n, k
log-normal lnorm meanlog, sdlog
logistic logis location, scale
negative binomial nbinom size, prob
normal norm mean, sd
Poisson pois lambda
Student's t t df, ncp
uniform unif min, max
Weibull weibull shape, scale
Wilcoxon wilcox m, n

不同的前缀表示不同的意义:

    d-概率密度函数或分布律;
    p-分布函数F(x);
    q-分布函数的反函数,即给定概率p后,求其下分位点;
    r-仿真(产生相同分布的随机数)

图像

直方图hist(x)

完整的格式是:

    hist(x, breaks = "Sturges", freq = NULL, probability = !freq,include.lowest = TRUE, right = TRUE,density = NULL, angle = 45, col = NULL, border = NULL,main = paste("Histogram of" , xname),xlim = range(breaks), ylim = NULL,xlab = xname, ylab,axes = TRUE, plot = TRUE,labels = FALSE,nclass = NULL, ...)

经验分布

    ecdf(x)
    plot(y, ..., ylab="Fn(x)", verticals = FALSE,col.01line = "gray70")

说明:

例题:15位学生的体重数据w,建立一个脚本

    w <- c(75.0, 64.0, 47.4, 66.9, 62.2, 62.2, 58.7, 63.5,66.6, 64.0, 57.0, 69.0, 56.9, 50.0, 72.0)
    plot(ecdf(w),verticals=TRUE,do.p=FALSE) #do.p是逻辑变量=FALSE表示不画点处的记号x=44:78
    lines(x,pnorm(x,mean(w),sd(w)))

QQ图

在R软件中,函数qqnorm()和qqline()提供了画正态QQ图和相应直线的方法。例如:绘制学生体重数据的qq图:

    w <- c(75.0, 64.0, 47.4, 66.9, 62.2, 62.2, 58.7, 63.5,66.6, 64.0, 57.0, 69.0, 56.9, 50.0, 72.0)
    qqnorm(w);qqline(w)

茎叶图、箱线图及五数总括

茎叶图

与直方图比较,茎叶图更能细致地看出数据分布的结构,下面用具体的例子来说明茎叶图的意义.
例:对某班学生的体重做出其茎叶图,
在R软件中,用stem()函数作茎叶图

    > w =c(75.0, 64.0, 47.4, 66.9, 62.2, 62.2, 58.7, 63.5,66.6, 64.0, 57.0, 69.0, 56.9, 50.0, 72.0)
    > stem(w)

stem()函数的使用方法是:

    stem(x, scale=1,width=80, atom=le-08)

其中x是数据向量. scale控制绘出茎叶图的长度. width绘图的宽度.atom是容差,如果选择scale=2,即将10个个位数俞成两段,0~4为一段,5~9为另一段。

箱线图boxplot(x)

如仍对上述体重数据w作图。
此外boxplot还有以下两种用法:

    boxplot(formula, data = NULL, ..., subset, na.action = NULL)
    boxplot(x, ..., range = 1.5, width = NULL, varwidth = FALSE,notch = FALSE, outline = TRUE, names, plot = TRUE,border = par("fg"), col = NULL, log = "",pars = list(boxwex = 0.8, staplewex = 0.5,outwex = 0.5),horizontal = FALSE, add = FALSE, at = NULL)

五数总括

在探索性数据分析中,能反映数据重要特征的五个数:中位数,下四分位数,上四分位数,最小值mim和最大值max.在R软件中,函数fivenum()计算样本的五数总括,使用格式为

    fivenum(x, na.rm=TRUE)

其中x是样本数据,na. rm是逻辑变量,当na.rm=TRUE(缺省值)时,在计算五数总括之前,所有的NA和NAN数据将被去掉。

例:学生考试成绩的五数总括

    > x<-c(25, 45, 50, 54, 55, 61, 64, 68, 72, 75, 75,78, 79, 81, 83, 84, 84, 84, 85, 86, 86, 86,87, 89, 89, 89, 90, 91, 91, 92, 100)
    > fivenum(x)
    [1] 25 70 84 88 100

正态性检验与分布拟合检验

正态性W检验方法

利用Shapiro-Wilk(夏皮罗一威尔克)W统计量作正态性检验,因此称这种检验方法为正态W检验方法,函数shapiro .test()提供W统计量和相应的p值,当p值小于某个显著性水平Q(比如0.05),则认为样本为不是来自正态分布的总体;否则承认样本来自正态分布的总体。

    shapiro.test (x)
    >w=c(75.0, 64.0, 47.4, 66.9, 62.2, 62.2, 58.7, 63.5,66.6, 64.0, 57.0, 69.0, 56.9, 50.0, 72.0)
    >shapiro.test(w)
    Shapiro-Wilk normality test
    data: w
    W = 0.9686, p-value = 0.8371

p值为0.8371>0.05,因此,认为来自正态分布的总体.

上一篇下一篇

猜你喜欢

热点阅读