R語言-回歸分析筆記


使用若干自變量並建立公式,以預測目標變量

目標變量是連續型的,則稱其為回歸分析
(1)一元線性回歸分析
y=kx+b
sol.lm<-lm(y~x,data)
abline(sol.lm)
使模型誤差的平方和最小,求參數k和b,稱為最小二乘法
 
k=cov(x,y)/cov(x,x)
b=mean(y)-k*mean(x)
 
 估計參數b,k的取值范圍 p元模型 p是自變量數,n是樣本數
[ki-sd(ki)ta/2(n-p-1),ki+sd(ki)ta/2(n-p-1)] k0表示回歸模型的b;   k1表示k;sd(k)是標准差
自由度 df<-sol.lm$df.residual
left<-summary(sol.lm)$coefficients[,1]-summary(sol.lm)$coeffients[,2]*qt(1-alpha/2,df)
right<-summary(sol.lm)$coefficients[,1]+summary(sol.lm)$coeffients[,2]*qt(1-alpha/2,df)
 
衡量相關程度
變量x和y相關系數r=Sxy/sqrt(Sxx)sqrt(Syy) 取值范圍是[-1,1]  cor(x,y)  
判定系數r^2
 
修正判定系數 adjusted.r^2
判定系數在用於多元回歸分析時有一個缺點,自變量數越多,判定系數越大
 
回歸系數的顯著性檢驗
 
T檢驗 summary(sol.lm)$coefficients[,4]
計算得到的p.value值越小,其值等於0的概率也就越小,當p.value<0.05,可認定k!=0
 
F檢驗 summary(sol.lm)$p.value
在整體上檢驗模型參數是否為0,並計算等於0的概率,當p.value<0.05,則通過了F檢驗
 
summary(sol.lm)$fstatistic 給出了樣本自由度f、自變量自由度df1、F值df2
 
可以使用如下代碼直接讀取p.value值
pf(f,df1,df2,lower.tail=F) 或 1-pf(f,df1,df2)

模型誤差(殘差)  residuals
 
對一個正確的回歸模型,其誤差要服從正態分布
 
殘差的標准誤差可以從整體上體現一個模型的誤差情況,它可以用於不同模型間性能的對比
 

預測

predict(sol.lm)

(2)多元回歸分析
sol.lm<-lm(formula=y~. ,data.train)
 
模型修正函數update(object,formula)
update函數可以在lm模型結果的基礎上任意添加或減少自變量,或對目標變量做取對數及開方等建模
 例如:
增加x2平方變量
lm.new<-update(sol.lm, .~.+I(x2^2))
刪除x2變量
.~.-x2
把x2變為x2平方變量
.~.-x2+I(x2^2)
增加x1*x2
.~.+x1*x2
在模型中對y開方建模
sqrt(.)~.
 
逐步回歸分析函數 step()
逐步減少變量的方法
lm.step<-step(sol.lm)
模型的ACI數值越小越好
 
自變量中包含分類型數據的回歸分析
分類變量a的取值為i,則模型預測值是f(a1=0,...ai=1,ap=0)
 
(3)Logic回歸 y=1/(1+exp(-x)) 使用最大似然法來估算
使用RODBC包讀取Excel文件
 
root<-"C:/"
file<-paste(root,"data.xls",sep="")
library(RODBC)
excel_file<-odbcConnectExcel(file)
data<-sqlFetch(excel_file,"data")
close(excel_file)
 
使用模型的預測正確率來衡量
 
                               預測數據
                              num11              num10
實際數據                 num01             num00
 
預測正確率=(num11+num00)/樣本總數量=(num11+num00)/(num11+num10+num01+num00)
 
t()返回轉置
 
glm()是用R語言實現logic回歸分析的核心函數
family=binomial("logit")
使用step()函數對模型進行修正
str函數查看包含的數據屬性
 
模型預測
new<-predict(old,newdata=test.data)
new<-1/(1+exp(-new))
new<-as.factor(ifelse(new>=0.5,1,0))
 
模型的性能衡量
performance<-length(which((predict.data==data)==TRUE))/nrow(data)
(4)回歸樹CART
實現CART算法的核心函數是rpart包的rpart函數,再用plot函數畫
maptree包的draw.tree函數
 
讀取葉節點sol.rpart$frame$var=="<leaf>"
讀取葉節點序號sol$rpart$where
要使測試集誤差和回歸樹的規模盡可能小
 
cp復雜度系數 sol.rpart$cptable
xerror是通過交叉驗證獲得的模型誤差
xstd是模型誤差的標准差     xerror取xerror+/-xstd
剪枝就是找到一個合理的cp值
隨着拆分的增多,復雜性參數會單調下降,但預測誤差會先降后生
 
剪枝
prune(sol.part,0.02) 把cp<0.02的樹剪除
使用plotcp()函數可以繪制出cp的波動關系
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM