R语言中dnorm, pnorm, qnorm与rnorm以及随机数

R语言中dnorm, pnorm, qnorm与rnorm以及随机数,第1张

--

title: R语言中dnorm, pnorm, qnorm与rnorm以及随机数

date: 2018-09-07 12:02:00

type: "tags"

tags:

在R语言中,与正态分布(或者说其它分布)有关的函数有四个,分别为dnorm,pnorm,qnorm和rnorm,其中,dnorm表示密度函数,pnorm表示分布函数,qnorm表示分位数函数,rnorm表示生成随机数的函数。在R中与之类似的函数还有很多,具体的可以通过 help(Distributions) 命令去查看,对于分位数或百分位数的一些介绍可以看这篇笔记 《分位数及其应用》 ,关于正态分布的知识可以看这篇笔记 《正态分布笔记》 。

现在这篇笔记就介绍一下这些函数的区别。

R提供了多种随机数生成器(random number generators, RNG),默认采用的是Mersenne twister方法产生的随机数,该方法是由Makoto Matsumoto和Takuji Nishimura于1997年提出来的,其循环周期是 。R里面还提供了了Wichmann-Hill、Marsaglia-Multicarry、Super-Duper、Knuth-TAOCP-2002、Knuth-TAOCP和L'Ecuyer-CMRG等几种随机数生成方法,可以通过 RNGkind() 函数进行更改,例如,如果要改为WIchmann-Hill方法,就使用如下语句:

在R中使用随机数函数,例如 rnorm() 函数来生成的随机数是不一样的,有时我们在做模拟时,为了比较不同的方法,就需要生成的随机数都一样,即重复生成相同的随机数,此时就可以使用 setseed() 来设置随机数种子,其参数为整数,如下所示

dnorm 中的 d 表示 density , norm 表示正态贫,这个函数是正态分布的 概率密度(probability density)函数 。

正态分布的公式如下所示:

给定x,μ和σ后, dnorm() 这个函数返回的就是会返回上面的这个公式的值,这个值就是Z-score,如果是标准正态分布,那么上述的公式就变成了这个样子,如下所示:

现在看一个案例,如下所示:

dnorm(0,mean=0,sd=1) 由于是标准正态分布函数的概率密度,这个命令其实可以直接写为 dnorm(0) 即可,如下所示:

再看一个非标准正态分布的案例,如下所示:

虽然在 dnorm() 中,x是一个概率密度函数(PDF,Probability Density Function)的独立变量,但它也能看作是一组经过Z转换后的一组变量,现在我们看一下使用 dnorm 来绘制一个正态分布的概率密度函数曲线,如下所示:

现在使用 dnorm() 函数计算一下Z_scores的概率密度,如下所示:

现在绘图,如下所示:

从上面的结果可以看出,在每个Z-score处, dnorm 可以绘制出这个Z-score对应的正态分布的pdf的高度。

pnorm 函数中的 p 表示Probability,它的功能是,在正态分布的PDF曲线上,返回从负无穷到 q 的积分,其中这个 q 指的是一个Z-score。现在我们大概就可以猜测出 pnorm(0) 的值是05,因为在标准正态分布曲线上,当Z-score等于0时,这个点正好在标准正态分布曲线的正中间,那么从负无穷到0之间的曲线面积就是整个标准正态分布曲线下面积的一半,如下所示:

pnorm 函数还能使用 lowertail 参数,如果 lowertail 设置为 FALSE ,那么 pnorm() 函数返回的积分就是从 q 到正无穷区间的PDF下的曲线面积,因此我们就知道了, pnorm(q) 与 1-pnorm(q,lowertail=FALSE) 的结果是一样的,如下所示:

在计算机出现之前的时代里,统计学家们使用正态分布进行统计时,通常是要查正态分布表的,但是,在计算机时代,通常都不使用正态分布表了,在R中, pnorm() 这个函数完全可以取代正态分布表了,现在我们使用一个Z-scores的向量来计算一下相应的累积概率,如下所示:

以上就是标准正态分布的 累积分布函数(CDF,Cumulative Distribution Function) 曲线。

简单来说, qnorm 是正态分布 累积分布函数(CDF,Cumulative Distribution Function) 的反函数,也就是说它可以视为 pnorm 的反函数,这里的 q 指的是quantile,即分位数。

使用 qnorm 这个函数可以回答这个问题:正态分布中的第p个分位数的Z-score是多少?

现在我们来计算一下,在正态分布分布中,第50百分位数的Z-score是多少,如下所示:

再来看一个案例:在正态分布中,第96个百分位的Z-score是多少,如下所示:

再来看一个案例:在正态分布中,第99个百分位的Z-score是多少,如下所示:

再来看一下 pnorm() 这个函数,如下所示:

从上面我们可以看到, pnorm 这个函数的功能是,我们知道某个Z-score是多少,它位于哪个分位数上。

接着我们进一步举例来说明一下 qnorm 和 pnorm 的具体功能,如下所示:

现在进行绘图,如下所示:

rnomr() 函数的功能用于生成一组符合正态分布的随机数,在学习各种统计学方法时, rnorm 这个函数应该是最常用的,它的参数有 n , mean , sd ,其中n表示生成的随机数,mean与sd分别表示正态分布的均值与标准差,现在举个例子,如下所示:

现在我们绘制一下上面的几个向量的直方图,看一下它们的均值是否在70附近,如下所示:

在R语言中,生成不同分布的各种类型的函数都是以d,p,q,r开头的,使用原理跟上面的正态分布都一样。

sample() 函数是一个用于生成随机数的重要的核心函数,如果仅传递一个数值n给它,就会返回一个从1到n的自然数的排列,如果传递是 n:m 就是生成从n到m的随机数,如是是 7,5 ,则会生成5个小于7的随机数,如下所示:

从上面的结果可以看出来,这些数字都是不同的,也就是说,sample函数默认情况下是不重复抽样,每个值只出现一次,如果允许有重复抽样,需要添加参数 replace = TRUE ,如下所示:

sample函数通常会从某些向量中随机挑一些参数,如下所示:

也可以挑日期,如下所示:

上述分布函数前面加上r,p、q、d就可以表示相应的目的:

R就是相关性那个值,p就是显著性那个值,具体如下:

首先看显著性值,也就是sig值或称p值,它是判断r值,也即相关系数有没有统计学意义的,判定标准一般为005,由表可知,两变量之间的相关性系数r=-0035,其p值为0709>005,所以相关性系数没有统计学意义。

无论r值大小,都表明两者之间没有相关性,如果p值<005,那么就表明两者之间有相关性。

然后再看r值,|r|值越大,相关性越好,正数指正相关,负数指负相关。

扩展资料:

SPSS相关分析结果的看法

1、如果两个变量都是连续型,且服从正态分布,则选择pearson皮尔逊相关性分析。

2、如果两个变量有序定序,则选择spearman斯皮尔曼相关性分析,另外,如果连续变量但是不服从正态分布,也选择spearman相关性分析。

3、结果的分析有两步:

1、看sig是否<005,<005意味着两个变量存在显著相关关系。如果>005,意味着无关键,分析结束。

2、<005,意味着有关联,再继续看相关系数,是正相关还是负相关即可。也可以看看相关系数的绝对值是否在05以上,绝对值高于05属于中强相关。

据我所知,

1,R 方是描述回归曲线的模拟准确度,有一个范围,一般越大回归模拟的越精确

2,P Value是正态分布的概率值,一般出现在Z值表里,应为你提到了T-test, F-test,P值一般假设检测后使用概率检验,就是看假设结果成立的概率

3,T-Test, F-test都是正态检测,根绝条件选择 T-statistic 不清楚, 也许是T分布的意思,T 分布, F分布,卡方分布都是正态分布的附属形式

prob=probabilitie是概率,df=degrees of freedom 是自由度

函数scale执行中心化和标准化若center为数字或向量,x减去center center=TRUE则减去x的平均值,即center=mean(x)scale=TRUE,则为x中心化后除以根方差,若scale为与x等长的向量,则x除以scale每个值。

r安全高度或者半径 h是长度补偿 q是切深的参数

例子 g02 x200 y150 r100 f1000

g42z10h10

g83 x100 y100 z-150 r50 q20 f1200

全部是大写哈,我懒得切换了

%*%表示通常意义下的两个矩阵的乘积。而矩阵乘积只有在第一个矩阵的列数(column)和第二个矩阵的行数(row)相同时才有意义。

x+y加法

x-y减法

x*y乘法

x/y除法

x^y乘幂

x%%y模运算

x%/%y整数除法

x==y判断是否相等

x <= y判断是否小于等于

x >= y 判断是否大于等于

x && y 标量的逻辑“与”运算

x||y标量的逻辑“或”运算

x & y 向量的逻辑“与”运算(x、y以及运算结果都是向量)                                 

X|y的逻辑“或”运算(x、y以及运算结果都是向量)

!x逻辑非

扩展资料

R语言表面上没有标量的类型,因为标量可以看作是含有一个元素的向量,但我们看到表中,逻辑运算符对标量和向量有着不同的形式,这虽然看起来很奇怪,但这种区别很有必要。

> x <- c( TRUE, FALSE, TRUE )

> y <- c( TRUE, TRUE, FALSE )

> x & y

[1]TRUEFALSEFALSE

> x[1] && y[1]

[1]TRUE

> x && y

[1]TRUE

> if( x[1] && y[1] )   print( "both TRUE" )

[1]"bothTRUE"

> if( x & y )   print( "both TRUE" )

[1]"bothTRUE"

以上就是关于R语言中dnorm, pnorm, qnorm与rnorm以及随机数全部的内容,包括:R语言中dnorm, pnorm, qnorm与rnorm以及随机数、spss中的r值是什么意思、多重线性规划 R方,p-vaule,t-statitic,f-test 怎么看啊等相关内容解答,如果想了解更多相关内容,可以关注我们,你们的支持是我们更新的动力!

欢迎分享,转载请注明来源:内存溢出

原文地址: https://outofmemory.cn/zz/9618469.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2023-04-30
下一篇 2023-04-30

发表评论

登录后才能评论

评论列表(0条)

保存