关于线性回归 写了以下的一个程序 可是其中有几个变量是虚拟变量和离散变量 比如Air和Dis是虚拟变量 而Bed Bath Stl Year 都是离散变量 请达人看看这个情况下 我的程序应该如何修改呢?
附上我写的错误程序......新手上路 希望大家多多指教
rm(list=ls()) #清理当前工作空间
a=read.table("F:/RealEstate.txt",header=T) #读入以空格为分隔符,并带有标题行的文本文件
round(a[1:10,],4) #用4位小数点的格式显示a中前10行的数据
Mean=sapply(a,mean) #计算a1中各列的均值
Min=sapply(a,min) #计算a1中各列的最小值
Median=sapply(a,median) #计算a1中各列的中位数
Max=sapply(a,max) #计算a1中各列的最大值
SD=sapply(a,sd) #计算a1中各列的标准差
cbind(Mean,Min,Median,Max,SD) #将均值、最小值、中位数、最大值、标准差集中在一起展示
lm1=lm(Price~Area+Bed+Bath+Air+Car+Pool+Year+Qlt+Stl+Lot+Dis,data=a) #用a1中数据拟合线性回归模型
summary(lm1) #给出模型lm1中系数估计值、P值等细节
round(a[1:10,],3) #用3位小数点的格式显示a1中前10行的数据
par(mfrow=c(2,2)) #设置画图为2x2的格式
plot(lm1,which=c(1:4)) #画出lm1中对应于模型检验的4张图,包括残差图、QQ图和Cook距离图
lm2=lm(Price~Area+Bed+Bath+Air+Car+Pool+Year+Qlt+Stl+Lot+Dis,data=a) #用上一行命令得到的新数据a1再次拟合线型回归模型,结果赋值给lm2
plot(lm2,which=c(1:4))
library(car) #载入程序包Car
round(vif(lm2),2)
lm.aic=step(lm2,trace=F) #根据AIC准则选出最优模型,并赋值给lm.aic
summary(lm.aic) #给出模型lm.aic中系数估计值、P值等细节
lm.bic=step(lm2,k=log(length(a[,1])),trace=F) #根据BIC准则选出最优模型,并赋值给lm.bic
summary(lm.bic) #给出模型lm.bic中系数估计值、P值等细节
y1=predict(lm2,a) #用全模型lm2对a2进行预测
y2=predict(lm.aic,a) #用模型lm.aic对a2进行预测
y3=predict(lm.bic,a) #用模型lm.aic对a2进行预测
y0=a[,2]
r1=y0-y1 #用全模型lm2预测的残差
r2=y0-y2 #用模型lm.aic预测的残差
r3=y0-y3 #用模型lm.bic预测的残差
resid=abs(as.data.frame(cbind(r0,r1,r2,r3))) #计算残差的绝对值
sapply(resid,mean)