回归分析相关的函数
1、一元线性回归
lm() #计算beta0,beta1参数
summary() # 提取lm()参数信息
anovn() #方差分析
predict() # 根据给出自变量预测因变量的值
例:
a=lm(y~1+x,data=…) #对x,y回归分析
summary(a) # 提取回归分析结果
new=data.frame(x=0.16) # 当x=0.16时对y进行预测,必须为数据框格式
lm.new=predict(a,new,interval=”prediction”,level=0.95)#利用a得到的回归分析,对new进行预测
abline(a)#绘制回归直线
b=residuals(a) # 计算回归方程残差
plot(b) #绘制残差散点图
提取模型lm()信息的通用函数
anova(a)#计算方差分析表aov()
coefficients()# 提取模型系数
deviance()#计算残差平方和
formula()#提取模型公式
plot()#绘制模型诊断图
predict()#预测
print()# 显示
residuals()#计算残差
step()#做逐步回归
summary()#提取模型资料
2、多元回归分析
update()修正拟合模型
例:
fm5=lm(y~x1+x2+x3+x4+x5,data=…)
fm6=update(fm5, .~.+x6)
smf6=update(fm6,sqrt(.)~.)
lm(y~x1+I(x2^2))
add1()
drop1()
step()
3、逐步回归
step(object,scope,
direction=c(“both”,”backward”,”forward”)
trace=1,keep=Null,steps=1000,k=2,…)
4、回归诊断(1.误差项:独立性 等方差性 正态性
2.选择线性模型是否合适
3.是否存在异常样本
4.回归分析结果是否对某个样本依赖过重
5.自变量之间是否存在高度相关)
作图
残差
residuals()
Shapiro.test() #残差正态性检验
rstandard(model,infl=lm.influence(model,do.coef=FALSE)
sd=sqrt(deviance(model)/df.residual(model)),…) #标准化残差
rstudent()#学生化残差
回归值Y与残差的散点图
y.res=resid(lm.sol)
yfit=predict(lm.sol)
plot(y.res~y.fit)#残差图
y.rst=rstandard(lm.sol)
plot(y.rst~yfit)#标准化残差图
R语言 回归分析 方差分析
以自变量为横坐标的残差图
y.res=resid(lm.sol)
plot(y.res~x1)
plot(y.res~x2)
强影响点(异常值)
hatvalues()
hat()
dffits()
cooks.distance()
covratio()
influence.measures(model)#回归诊断的总括
多重共线
kappa() #计算矩阵的条件数
eigen() # 计算矩阵特征值
5、广义线性模型
glm(formula, # 公式
family=c(binomial,Gaussian,gamma,inverse,poisson,quasi)# 分布族
data=…)# 数据
非线性回归
lm(y~1+x+I(x^2),data=…)
poly(x,degree=1,codfs=NULL)正交多项回归 degree多项式阶数
lm(y~1+poly(x,2))
nls()#求非线性最小二乘问题
nlm()#非线性模型参数估计
6、方差检验
单因素方差分析
aov(x~A)# x要分析变量A变量因子水平
均值的多重比较
pairwise.t.test(x,g) # x相应变量 g因子向量
P值修正
P.adjust(p,method=…)
方差齐性检验
误差正态性检验
shapiro.test(X[A==1])
方差齐性检验
bartlett.test()
通过秩统计量进行方差分析(分析各水平之间是否存在差异)
K-W秩和检验
kruskal.test()
Friedman秩和检验
friedman.test()
双因素方差分析
aov(Y~A+B+A:B)#对A B两个因素进行分析 并考虑了交互作用