例如:抛掷硬币100次,正面向上不超过50次的概率,即pbinom(50,100,0.5)。
r语言有四个内置函数来生成二项分布。它们的描述分别如下:
dbinom(x,size,prob)函数,该函数表示每个点的概率密度分布。
pbinom(x,size,prob)函数,该函数为事件的累积概率,它表示概率的单个值。
qbinom(p,size,prob)函数,该函数采用概率值,并给出累积值与概率值匹配的数字。
rbinom(n,size,prob)函数,该函数从给定样本产生给定概率的所需数量的随机值。
其中,x是数字的向量,p是概率向量,n是观察的数量,size是试验的数量,prob是每个试验成功的概率。
曲线拟合:(线性回归方法:lm)1、x排序
2、求线性回归方程并赋予一个新变量
z=lm(y~x+I(x^2)+...)
3、plot(x,y)#做y对x的散点图
4、lines(x,fitted(z))#添加拟合值对x的散点图并连线
曲线拟合:(nls)
lm是将曲线直线化再做回归,nls是直接拟合曲线。
需要三个条件:曲线方程、数据位置、系数的估计值。
如果曲线方程比较复杂,可以先命名一个自定义函数。
例:
f=function(x1, x2, a, b) {a+x1+x2^b}
result=nls(x$y~f(x$x1, x$x2, a, b), data=x, start=list(a=1, b=2))
#x可以是数据框或列表,但不能是矩阵
#对系数的估计要尽量接近真实值,如果相差太远会报错:“奇异梯度”
summary(result) #结果包含对系数的估计和p值
根据估计的系数直接在散点图上使用lines加曲线即可。
曲线拟合:(局部回归)
lowess(x, y=NULL, f = 2/3, iter = 3)
#可以只包含x,也可使用x、y两个变量
#f为窗宽参数,越大越平滑
#iter为迭代次数,越大计算越慢
loess(y~x, data, span=0.75, degree=2)
#data为包含x、y的数据集;span为窗宽参数
#degree默认为二次回归
#该方法计算1000个数据点约占10M内存
举例:
x=seq(0, 10, 0.1)y=sin(x)+rnorm(101)#x的值必须排序
plot(x,y) #做散点图
lines(lowess(x,y)) #利用lowess做回归曲线
lines(x,predict(loess(y~x))) #利用loess做回归曲线,predict是取回归预测值
z=loess(y~x)lines(x, z$fit) #利用loess做回归曲线的另一种做法