R语言数学函数及统计函数及概率函数

一,数学函数
数学函数大多应用在标量上(单独的数值)
这些函数应用在数值向量,矩阵,数据框时,它们会作用于每个独立的值
常用的数学函数
函数 描述
abs(x) 绝对值
sqrt(x) 平方根
ceiling(x) 不小于x的最小整数(向上取整)
floor(x) 不大于x的最大整数(向下取整)
trunc(x) 向0的方向截取的x中的整数部分
round(x,digits=n) 将x舍入为指定位数的小数
signif(x,digits=n) 将x舍入为指定有效数字位数,signif(3.475,digits=2)返回值为3.4
cos(x),sin(x),tan(x) 余弦,正弦,正切
acos(x),asin(x), atan(x) 反余弦,反正弦,反正切
cosh(x),sinh(x),tanh(x) 双曲余弦,双曲正弦,双曲正切
acosh(x),asinh(x),atanh(x) 反双曲余弦,反双曲正弦,反双曲正切
log(x,base=n) 对x取以n为底的对数
exp(x) 指数函数

二,统计函数
很多函数都拥有可以影响最终结果的可选参数。
如mean(x)函数,它的参数trim为丢弃最大和最小的指定百分比的数,na.rm为是否剔除缺失值等。
统计函数
函数 描述
mean(x) 平均数
median(x) 中位数
sd(x) 标准差
var(x) 方差
mad(x) 绝对中位数
quantile(x,probs) 求分位数。其中x为待求分位数的数值型向量,probs为一个由[0,1]之间的概率值组成的数值向量
range(x) 求值域,返回向量的最大值及最小值,例如x<-c(1,2,3,4),range(x)返回c(1,4)
sum(x) 求和
diff(x,lag=n) 滞后差分,lag用以指定滞后几项。默认lag=1
min(x) 求最小值
max(x) 求最大值
scale(x,center=TRUE,scale=TRUE) 为数据对象x按列进行中心化(center(TRUE))或标准化center=TRUE,scale=TRUE)
例子

x <- c(1,2,3,4,5,6,7,8)
#利用统计函数求平均值和标准差
mean(x)
sd(x)
#不利用函数求平均值和修正标准差
n <- length(x)
n
meanx <- sum(x)/n

css <- sum((x-meanx)^2)
sdx <- sqrt(css/(n-1))
#数据的标准化
#默认情况下,函数scale()对矩阵或数据框的指定进行均值为0,标准差为1的标准化
newdata <- scale(mydata)
#对数据进行任意均值和标准差的标准化
#对数据进行均值为M标准差为SD的标准化
newdata <- scale(mydata)*SD + M
#对指定列进行标准化
#将列myvar进行均值为M标准差为SD的标准化
newdata <- transform(mydata,myvar=scale(myvar)*SD +M)

三,概率函数
概率函数通常用来生成特征已知的模拟数据,以及在用户编写的统计函数中计算概率值
在R中概率函数形如;
[dpqr]distribution_abbreviation()
其中[]中表示其所指分布的某一方面
d=密度函数(density)
p=分布函数(distribution function)
q=分位数函数(quantile function)
r=生成随机数(随机偏差)
常用的概率函数如下
分布名称 缩写
Beta分布 beta
二项分布 binom
柯西分布 cauchy
(非中心)卡方分布 chisq
指数分布 exp
F分布 f
Gamma分布 gamma
几何分布 geom
超几何分布 hyper
对数正太分布 lnorm
Logistic分布 logis
多项分布 multinom
负二项分布 nbinom
正态分布 norm
泊松分布 pois
Wilcoxon符号秩分布 signrank
分布 t
均匀分布 unif
Weibull分布 Weibull
Wilcoxon秩和分布 Wilcox

例子

#例子正太分布有关函数
#在区间[-3,3]上绘制标准正太曲线
#pretty()生成-3到3的30个等差值组成的向量
x <- pretty(c(-3,3),30)
y <- dnorm(x)
plot(x,y,type="l",
     xlab="Normal Deviate",
     ylab = "Density",
     yaxs="i")

#求位于z=1.96左侧的标准正太曲线下方面积是多少?
pnorm(1.96)
#求均值为500,标准差为100的正态分布的0.9分位点值为多少
qnorm(0.9,mean=500,sd=100)
#生成50个均值为50,标准差为10的正太随机数
#第一个参数是生成的随机数的个数,第二个参数为正太分布的均值,第三个参数为正太分布的标准差
rnorm(50,50,10)

3.2,设定随机种子
每次生成随机数即使设置的参数完全相同,得到的随机数也是不同的。
这是因为每次生成随机数的随机种子是不同的。
当我们想要在参数相同的情况下生成相同的随机数,就可以指定同一个随机种子来完成操作
例子:

#函数runif()用来生成0到1区间上服从均匀分布的伪随机数
runif(5)
#同样函数和参数生成的随机数也不同
runif(5)
#设定随机种子生成相同的随机数
set.seed(1234)
runif(5)
#注意每次生成随机数时都需要重新设定随机种子这样才能生成相同的随机数
#也就是说设定的随机种子是一次性的只对最近的随机数使用。之后还需要重新设定相同的随机种子
set.seed(1234)
runif(5)

3.3,生成给定均值向量和协方差矩阵的多元正太分布数据
,使用MASS包中的murnorm()函数生成
n为生成样本的大小,mean为均值向量,sigma为方差-协方差矩阵(或相关矩阵)
mvrnorm(n,mean,sigma)

例子

library(MASS)
#options()为环境设置函数,options(digits=3),设定R的整数表示能力为3位
options(digits=3)
set.seed(1234)
mean <- c(230.7,146.7,3.6)
sigma <- matrix(c(15360.8,6721.2,-47.1,
                  6721.2,4700.9,-16.5,
                  -47.1,-16.5,0.3),nrow=3,ncol=3)
mydata <- mvrnorm(50,mean,sigma)
mydata <- as.data.frame(mydata)

head(mydata,n=10)
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值