在做检验之前一定要先做散点图。
1、相关
cor.test(x, y, method = c("pearson", "kendall", "spearman"), exact = NULL, conf.level = 0.95)
例:
x=rnorm(100,10,5);
y=x+runif(100,3,6);
plot(x,y);
cor.test(x,y);
2、回归
2.1 lm
2.1.1 lm(y~x) #双变量
当不需要截距项时,可使用lm(y~x-1)或lm(y~0+x)
当有二次项、三次项时,可使用lm(y~x+I(x^2)+I(x^3))
可使用不同函数返回相应结果。
例:
x=rnorm(100,10,5);
y=x+runif(100,3,6);
a=lm(y~x);
a; #返回简单结果
summary(a); #返回详细结果(包括t检验)
anova(a); #返回方差分析检验结果
residuals(a); #返回残差
rstandard(a); #返回标准化残差
fitted(a); #返回拟合值
confint(a); #返回系数的可信区间
plot(a); #返回四个图
#Residual vs fitted为拟合值ˆy对残差的图形
#Normal QQ-plot图中数据点分布趋于一条直线, 说明残差是服从正态分布的
#Scale-Location 图显示了标准化残差平方根的分布情况. 最高点为残差最大值点
predict(a, data.frame(x), interval='prediction', level=0.95)
#返回每个x对应的y预测值及可信区间,其中的x也可以为其他任何数字
#Cook距离(Cook’s distance)图显示了对回归的影响点
2.1.2 lm(y~x1+x2+...) #多变量
用法与双变量基本相同。但多元线性回归还需要进行变量筛选。
例:z=lm(y~x1+x2+...); step(z);
筛选方法使用AIC准则。首先计算全部x选入时的AIC,然后逐一去除x,观察哪个x去除后会使方程的AIC减小。若有,则去掉使AIC最小的x,进行下一轮计算。直到去除任一变量都不会降低AIC为止。
注:拟合公式可以简写为'y~.'
2.2 glm #广义线性模型
glm(y~x1+x2+..., family=gaussian)
#family可选gaussian、binomial、Gamma、inverse.gaussian、poisson、quasi、quasibinomial、quasipoisson
#family为gaussian则和lm一样
#family为binomial则为logistic回归
例:(二分类logistic回归)
z=glm(y~0+x1+x2+x3); #作logistic回归,不要常数项,y为logit(p)
summary(z); #返回详细回归结果
step(z); #变量筛选
附:
glm参数family选项包括:误差分布函数(连接函数)
binomial(link = "logit")
gaussian(link = "identity")
Gamma(link = "inverse")
inverse.gaussian(link = "1/mu^2")
poisson(link = "log")
quasi(link = "identity", variance = "constant")
quasibinomial(link = "logit")
quasipoisson(link = "log")