熱線電話:13121318867

登錄
首頁精彩閱讀R語言-回歸分析筆記
R語言-回歸分析筆記
2016-06-02
收藏

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的波動關系


數據分析咨詢請掃描二維碼

若不方便掃碼,搜微信號:CDAshujufenxi

數據分析師資訊
更多

OK
客服在線
立即咨詢
日韩人妻系列无码专区视频,先锋高清无码,无码免费视欧非,国精产品一区一区三区无码
客服在線
立即咨詢