全部版块 我的主页
论坛 数据科学与人工智能 数据分析与数据科学 R语言论坛
2887 1
2009-04-02

关于线性回归 写了以下的一个程序  可是其中有几个变量是虚拟变量和离散变量 比如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) 

二维码

扫码加我 拉你入群

请注明:姓名-公司-职位

以便审核进群资格,未注明则拒绝

全部回复
2014-12-26 15:11:21
如果只是想要做虚拟变量的线性回归,
直接用lm命令就可以了,
之后对做出来的模型用summary做检验即可。


二维码

扫码加我 拉你入群

请注明:姓名-公司-职位

以便审核进群资格,未注明则拒绝

相关推荐
栏目导航
热门文章
推荐文章

说点什么

分享

扫码加好友,拉您进群
各岗位、行业、专业交流群