R语言系列:线性相关与回归

在做检验之前一定要先做散点图。

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")

你可能感兴趣的:(R语言系列:线性相关与回归)