回歸分析-一般線性回歸和廣義線性回歸+分類數(shù)據(jù)數(shù)據(jù)挖掘分析

一般線性回歸---完整過程

##線性回歸包括幾個方面:數(shù)據(jù)觀察,初步擬合蜕青,交互作用苟蹈,多重共線性,回歸診斷右核,擬合中出現(xiàn)的離群點(diǎn)慧脱,杠桿值,強(qiáng)影響點(diǎn)贺喝,刪除后菱鸥,重新擬合宗兼,模型比較--之后可能要預(yù)測,因此需要數(shù)據(jù)交叉驗(yàn)證分成2部分氮采,一部分?jǐn)M合殷绍,一部分驗(yàn)證。

數(shù)據(jù)為state.x77數(shù)據(jù)集---本次利用ols 最小二乘法=最小平方法直線回歸擬合分析

###線性回歸

##線性回歸包括幾個方面:數(shù)據(jù)觀察鹊漠,初步擬合主到,交互作用,多重共線性躯概,回歸診斷登钥,擬合中出現(xiàn)的離群點(diǎn),杠桿值娶靡,強(qiáng)影響點(diǎn)牧牢,刪除后,重新擬合姿锭,模型比較--

##之后可能要預(yù)測塔鳍,因此需要數(shù)據(jù)交叉驗(yàn)證分成2部分,一部分?jǐn)M合艾凯,一部分驗(yàn)證献幔。

rm(list = ls())

gc()

library(car)

###本次利用ols 最小二乘法=最小平方法直線回歸擬合分析---數(shù)據(jù)來自于state.x77數(shù)據(jù)集

state.x77

data<-state.x77

data<-as.data.frame(data)? ###lm一定要data.frame格式

###先看看數(shù)據(jù)特點(diǎn)? car包的scatterplotMatrix()

data1<-data[,c("Murder","Population","Income","Illiteracy","Frost","Area")]

scatterplotMatrix(data1)

###線性擬合

fit<-lm(formula = Murder ~ Population +Income+Illiteracy+Frost +Area, data = data)

###多重共線性:sqrt(vif(fit))>2那一列 刪去

sqrt(vif(fit))

summary(fit)? ###Population? Illiteracy 具有與murder的線性關(guān)系

###看看之間是不是具有交互項(xiàng)

summary(lm(Murder~Population+Illiteracy+Population:Illiteracy,data=data))? ###沒有交互項(xiàng)

summary(lm(Murder~Population+Illiteracy,data=data))? ##公式為:Murder=1.652e+00+2.242e-04*Population+4.081e+00*Illiteracy

###殘差-回歸診斷 線性 正態(tài)性 獨(dú)立性 方差齊性

op<-par(mfrow=c(2,2))

plot(lm(Murder~Population+Illiteracy,data=data))? ## 沒有強(qiáng)影響點(diǎn)(沒有大的cook值),Nevada>2(y值)為離群點(diǎn)趾诗,刪去離群點(diǎn)

par(op)

###刪去Nevada 重新擬合

rownames(data)

data2<-data[rownames(data)!="Nevada",]

summary(lm(Murder~Population+Illiteracy,data=data2))

op<-par(mfrow=c(2,2))

plot(lm(Murder~Population+Illiteracy,data=data2))? ## 沒有強(qiáng)影響點(diǎn)(沒有大的cook值)蜡感,Nevada>2(y值)為離群點(diǎn),刪去離群點(diǎn)

par(op)

###改進(jìn)的殘差分析

class(data2)

str(data2)

fit_1<-lm(Murder~Population+Illiteracy,data=data2)

qqPlot(fit_1,id.method="identify",labels=row.names(data2)) ###qqplot正態(tài)性檢驗(yàn)

durbinWatsonTest(fit_1)? ##獨(dú)立性 durbin-watson檢驗(yàn) p>0.05,殘差獨(dú)立

crPlots(fit_1)? ###線性

ncvTest(fit_1)? ###方差齊性 p>0.05

spreadLevelPlot(fit)? ###方差齊性作圖 水平隨機(jī)分布的直線

###異常觀察值檢測 -總和方法

influencePlot(fit_1,id.method="identify")

###最佳回歸模型確定--全子集回歸

library(leaps)

leaps<-regsubsets(Murder ~ Population +Income+Illiteracy+Frost +Area, data = data,nbest = 5)

plot(leaps,scale="adjr2")? ##最好是2個自變量x

library(car)

subsets(leaps,statistic = "cp")

abline(1,1,lty=2,col="red")

###以上分析只是為了在數(shù)據(jù)基礎(chǔ)上建模和解釋參加模擬的數(shù)據(jù)恃泪;如果要模擬的曲線用來預(yù)測將要出來的數(shù)據(jù)時(shí)怎么辦郑兴?-深度分析之交叉驗(yàn)證

? ##交叉驗(yàn)證--9成數(shù)據(jù)來模擬,1成數(shù)據(jù)來驗(yàn)證

##set.seed()保證操作的可重復(fù)性贝乎,別人也用1234情连,產(chǎn)生的隨機(jī)數(shù)就和你的一樣了

set.seed(1234)

##選取訓(xùn)練集--從nrow(df)中即699個數(shù)字中,無放回(如果放回览效,replace=T)抽取0.7*nrow(df)個數(shù)字

train<-sample(nrow(data),0.7*nrow(data))

##提取出訓(xùn)練集的列表

df.train<-data[train,]

###提取驗(yàn)證集的列表

df.validate<-data[-train,]

##看看各個列表的數(shù)目

table(df.train$Murder)

table(df.validate$Murder)

##擬合:

fit_logit<-lm(Murder~.,data = df.train,family = binomial())

summary(fit_logit)

##用模擬的數(shù)據(jù)在新的數(shù)據(jù)集中却舀,進(jìn)行數(shù)據(jù)的驗(yàn)證: type = "response" 直接返回預(yù)測的概率值0~1之間

prob<-predict(fit_logit,df.validate,type="response")

prob

#3將概率大于0.5的定義為惡性腫瘤;概率小于0.5的定義為良性腫瘤,

logit.pred<-factor(prob>.5,levels = c(FALSE,TRUE),labels = c("benign","malignant"))

logit.pred

##3得出實(shí)際與預(yù)測的交叉表

logit.perf<-table(df.validate$class,logit.pred,dnn=c("Actual","Predicted"))

###預(yù)測出118個良锤灿,76個惡性

####? 準(zhǔn)確率為(76+118)/(129+81)=0.92 (76+118)/200=0.97

(76+118)/(129+81) ###有問題

(76+118)/200

###再回歸來看 有幾個模擬概率>0.05挽拔,不滿足,可以刪除再模擬但校,也可以用下面的方法

logit.fit.reduced<-step(fit_logit)

###哪個x值貢獻(xiàn)最大呢螃诅?scale先規(guī)范化為均值為1,方差為0的數(shù)據(jù)集

data_3<-scale(data)? ? ? ? ? ? #scale數(shù)據(jù)

data_3<-as.data.frame(data_3)

coef(lm(formula = Murder ~ Population +Income+Illiteracy+Frost +Area, data = data_3))



數(shù)據(jù)如下:

A B

25 7

25 9

25 9

27 12

27 14

27 16

24 16

30 14

30 16

31 16

30 17

31 19

30 21

28 24

32 15

32 16

32 17

32 25

34 27

34 15

34 15

35 15

35 16

34 19

35 18

36 17

37 18

38 20

40 22

39 25

43 24

?setwd("c:/Users/xx/Desktop/Homework_4A/")

> data<-read.table(file ="data_1.txt",header=T,sep = "\t")

> ##散點(diǎn)圖

> attach(data)

The following objects are masked from data (pos = 5):


? ? A, B


The following objects are masked from data (pos = 6):


? ? A, B


The following objects are masked from data (pos = 8):


? ? A, B


> ###pearson線性相關(guān)關(guān)系分析

> cor.test(data$A,data$B)


Pearson's product-moment correlation


data: ?data$A and data$B

t = 4.1427, df = 29, p-value = 0.0002712

alternative hypothesis: true correlation is not equal to 0

95 percent confidence interval:

?0.3257757 0.7927878

sample estimates:

? ? ? cor?

0.6097313?


> pic<-lm(B~A,data = data)

> print(pic)


Call:

lm(formula = B ~ A, data = data)


Coefficients:

(Intercept) ? ? ? ? ? ?A ?

? ? -2.3350 ? ? ? 0.6113 ?


> summary(pic)


Call:

lm(formula = B ~ A, data = data)


Residuals:

? ? Min ? ? ?1Q ?Median ? ? ?3Q ? ? Max?

-5.9469 -2.4765 -0.6145 ?1.4137 ?9.2193?


Coefficients:

? ? ? ? ? ? Estimate Std. Error t value Pr(>|t|) ? ?

(Intercept) ?-2.3350 ? ? 4.7717 ?-0.489 0.628274 ? ?

A ? ? ? ? ? ? 0.6113 ? ? 0.1476 ? 4.143 0.000271 ***

---

Signif. codes: ?0 ‘***’ 0.001 ‘**’ 0.01 ‘*’ 0.05 ‘.’ 0.1 ‘ ’ 1


Residual standard error: 3.831 on 29 degrees of freedom

Multiple R-squared: ?0.3718, Adjusted R-squared: ?0.3501?

F-statistic: 17.16 on 1 and 29 DF, ?p-value: 0.0002712


> #擬合直線

> plot(B~A,data=data)

> abline(pic)


> anova(pic)

Analysis of Variance Table


Response: B

? ? ? ? ? Df Sum Sq Mean Sq F value ? ?Pr(>F) ? ?

A ? ? ? ? ?1 251.85 251.846 ?17.162 0.0002712 ***

Residuals 29 425.57 ?14.675 ? ? ? ? ? ? ? ? ? ? ?

---

Signif. codes: ?0 ‘***’ 0.001 ‘**’ 0.01 ‘*’ 0.05 ‘.’ 0.1 ‘ ’ 1

> ##擬合直線診斷-殘差分析:標(biāo)準(zhǔn)方法

> op<-par(mfrow=c(2,2))

> plot(pic)

> par(op)


> ###改進(jìn)的回歸擬合診斷方法:

> ##正態(tài)性檢驗(yàn)

> qqPlot(pic,id.method="identify",simlabels=row.names(data),ulate=TRUE,main="Normal Q-Q Plot")

[1] 14 19

> ###殘差獨(dú)立性檢驗(yàn) p>0.05,獨(dú)立

> library(car)

> durbinWatsonTest(pic)

?lag Autocorrelation D-W Statistic p-value

? ?1 ? ? ? 0.4027404 ? ? ?1.111413 ? 0.008

?Alternative hypothesis: rho != 0

> ##殘差線性?

> crPlots(pic)

> ##同方差性 >0.05,滿足方差不變

> ncvTest(pic)

Non-constant Variance Score Test?

Variance formula: ~ fitted.values?

Chisquare = 1.413038, Df = 1, p = 0.23455

> spreadLevelPlot(pic)


Suggested power transformation: ?3.43003?

> ##離群值

> outlierTest(pic)

No Studentized residuals with Bonferonni p < 0.05

Largest |rstudent|:

? ?rstudent unadjusted p-value Bonferonni p

14 2.741071 ? ? ? ? ? 0.010545 ? ? ? 0.3269

> ##強(qiáng)影響點(diǎn)

> avPlots(pic)

> ####將離散點(diǎn)、杠桿值术裸、強(qiáng)影響點(diǎn)做到一個圖中 縱坐標(biāo)絕對值大于2為離群點(diǎn)倘是;水平大于0.2或者0.3的是高杠桿值;

> #圓圈大小與影響成正比

> influencePlot(pic,main="Influence Plot",sub="Circle size is proportional to Cook`s distance")

? ? ? ?StudRes ? ? ? ?Hat ? ? ? ?CookD

1 ?-1.69284861 0.10495836 1.578707e-01

7 ? 1.02479319 0.12721355 7.640411e-02

14 ?2.74107120 0.05599694 1.819728e-01

19 ?2.46795140 0.03819278 1.028721e-01

31 ?0.01449139 0.21178329 2.921952e-05

> ## 驗(yàn)證 可信度

> anova(pic)

Analysis of Variance Table


Response: B

? ? ? ? ? Df Sum Sq Mean Sq F value ? ?Pr(>F) ? ?

A ? ? ? ? ?1 251.85 251.846 ?17.162 0.0002712 ***

Residuals 29 425.57 ?14.675 ? ? ? ? ? ? ? ? ? ? ?

---

Signif. codes: ?0 ‘***’ 0.001 ‘**’ 0.01 ‘*’ 0.05 ‘.’ 0.1 ‘ ’ 1





#廣義線性模型-logistic 與泊松回歸 Y值類型為0/1或者一些計(jì)數(shù)型的

#logistics-AER包袭艺,婚外情數(shù)據(jù)affairs搀崭,各種因素是不是跟婚外情有關(guān)系

data(Affairs,package = "AER")

#變量x的統(tǒng)計(jì)分析

summary(Affairs)

#相應(yīng)變量y的統(tǒng)計(jì)數(shù)值

table(Affairs$affairs)

#這時(shí)候我們需要把婚外情變化成二值型數(shù)據(jù)0/1? 只關(guān)心有沒有? ynaffair可以任意取名字,新增的一列而已

Affairs$ynaffair[Affairs$affairs>0]<-1

Affairs$ynaffair[Affairs$affairs==0]<-0

Affairs$ynaffair<-factor(Affairs$ynaffair,levels = c(0,1),labels = c("No","Yes"))

table(Affairs$ynaffair)

##此時(shí)因?yàn)閅變?yōu)槎敌妥兞?/1匹表,可以用logistic回歸了

fit<-glm(ynaffair~gender+age+yearsmarried+children+religiousness+education+occupation+rating,data=Affairs,family=binomial())

summary(fit)

#去除擬合不好的再擬合

fit_reduced<-glm(ynaffair~age+yearsmarried+religiousness+rating,data=Affairs,family=binomial())

summary(fit_reduced)

##因?yàn)閒it_reduced擬合是fit擬合的子集门坷,可以用卡方檢驗(yàn)的anova進(jìn)行比較? p>0.05,沒有差別袍镀,因此可以刪去無關(guān)的數(shù)據(jù)

anova(fit_reduced,fit,test = "Chisq")

##可以用coef單獨(dú)看看系數(shù)

coef(fit_reduced)

##方法一:用優(yōu)勢比解釋系數(shù)

##因?yàn)轫憫?yīng)變量是Y=1的log值默蚌,不好解釋,可以e-指數(shù)化后恢復(fù)原來的值苇羡;保持年齡什么的不變绸吸,婚齡增加一年,婚外情

? ? ##優(yōu)勢比乘于1.106.设江。锦茁。因此大于1,上升叉存,小于1下降優(yōu)勢比? 若分析幾年码俩,就乘于幾年就好了*n --n年

exp(coef(fit_reduced))

##系數(shù)置信區(qū)間

confint(fit_reduced)

##指數(shù)化的結(jié)果--一般用這個

exp(confint(fit_reduced))

##方法二:用概率解釋系數(shù)

##創(chuàng)建感興趣的數(shù)據(jù)集

testdata<-data.frame(rating=c(1,2,3,4,5),age=mean(Affairs$age),yearsmarried=mean(Affairs$yearsmarried),

? ? ? ? ? ? ? ? ? ? religiousness=mean(Affairs$religiousness))

testdata

testdata$prob<-predict(fit_reduced,newdata = testdata,type = "response")

testdata

##過度離勢的判斷,避免不準(zhǔn)確的顯著性檢驗(yàn)

fit_reduced<-glm(ynaffair~age+yearsmarried+religiousness+rating,data=Affairs,family=binomial())

fit.od<-glm(ynaffair~age+yearsmarried+religiousness+rating,data=Affairs,family = quasibinomial())

#檢驗(yàn) >0.34,沒有過度離勢歼捏,之前的檢驗(yàn)顯著可信稿存;

pchisq(summary(fit.od)$dispersion*fit_reduced$df.residual,fit_reduced$df.residual,lower=F)

##常見的回歸診斷可以用線性回歸診斷也可以用下面的

##一般方法:

op<-par(mfrow=c(2,2))

plot(fit_reduced)

par(op)

###本章的方法? 預(yù)測值與殘差值

plot(predict(fit_reduced,type = "response"),residuals(fit_reduced,type="deviance"))

###異常值--hat value? 學(xué)生化殘差,cook距離

plot(hatvalues(fit_reduced))

plot(rstudent(fit_reduced))

plot(cooks.distance(fit_reduced))

###泊松回歸分析---robust包

library(robust)

data(breslow.dat,package = "robust")

names(breslow.dat)

summary(breslow.dat[c(6,7,8,10)])

##基本圖形描述

op<-par(no.readonly = T)

par(mfrow=c(1,2))

attach(breslow.dat)

hist(sumY,breaks = 20,xlab = "Seizure Count",main = "Distribution of Seizures")

boxplot(sumY~Trt,xlab="Treatment",main="Group Comparisons")

par(op)

###回歸擬合:

fit_BS<-glm(sumY~Base+Age+Trt,family = poisson(),data=breslow.dat)

summary(fit_BS)

###系數(shù)分析

coef(fit_BS)

##指數(shù)化

exp(coef(fit_BS))

##過度離勢分析

##殘差偏差與殘差自由度比值? 遠(yuǎn)遠(yuǎn)大于1? 說明過度離勢

deviance(fit_BS)/df.residual(fit_BS)

#或用qcc包中進(jìn)行過度離勢分析? p<0.05 進(jìn)一步說明過度離勢

library(qcc)

qcc.overdispersion.test(breslow.dat$sumY,type="poisson")

##將poisson換成quasipoisson 重新擬合

fit<-glm(sumY~Base+Age+Trt,family = quasipoisson(),data=breslow.dat)

summary(fit)


##########################################################

##第五題? 回歸分析

data_5<-read.table("final5/diabetes.txt",header = T,sep = "\t")

data_5<-as.data.frame(data_5)

boxplot(data_5)

library(car)

scatterplotMatrix(data_5,spread=F,main="Scatter Plot Matrix")

##擬合

fit_5<-lm(Y~X1+X2+X3+X4,data = data_5)

summary(fit_5)

#回歸診斷--標(biāo)準(zhǔn)方法

op<-par(mfrow=c(2,2))

plot(fit_5)

par(op)

par(par(mfrow=c(2,2)))

##離群點(diǎn)

outlierTest(fit_5)

##逐步回歸分析 P大于0.05可以刪去x1 x2

fit_5_new<-lm(Y~X3+X4,data = data_5)

anova(fit_5,fit_5_new)

##交互作用

fit_5_ab<-lm(Y~X3+X4+X3:X4,data = data_5)

fit_5_ab

##交互結(jié)果展示

library(effects)

plot(effect("X3:X4",fit_5_ab),multiline=T)


##線性回歸包括幾個方面:數(shù)據(jù)觀察瞳秽,初步擬合瓣履,交互作用,多重共線性练俐,回歸診斷袖迎,擬合中出現(xiàn)的離群點(diǎn),杠桿值腺晾,強(qiáng)影響點(diǎn)燕锥,刪除后,重新擬合悯蝉,模型比較--

##之后可能要預(yù)測归形,因此需要數(shù)據(jù)交叉驗(yàn)證分成2部分,一部分?jǐn)M合泉粉,一部分驗(yàn)證连霉。

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
  • 序言:七十年代末,一起剝皮案震驚了整個濱河市嗡靡,隨后出現(xiàn)的幾起案子跺撼,更是在濱河造成了極大的恐慌,老刑警劉巖讨彼,帶你破解...
    沈念sama閱讀 211,290評論 6 491
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件歉井,死亡現(xiàn)場離奇詭異,居然都是意外死亡哈误,警方通過查閱死者的電腦和手機(jī)哩至,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 90,107評論 2 385
  • 文/潘曉璐 我一進(jìn)店門,熙熙樓的掌柜王于貴愁眉苦臉地迎上來蜜自,“玉大人菩貌,你說我怎么就攤上這事≈剀” “怎么了箭阶?”我有些...
    開封第一講書人閱讀 156,872評論 0 347
  • 文/不壞的土叔 我叫張陵,是天一觀的道長戈鲁。 經(jīng)常有香客問我仇参,道長,這世上最難降的妖魔是什么婆殿? 我笑而不...
    開封第一講書人閱讀 56,415評論 1 283
  • 正文 為了忘掉前任诈乒,我火速辦了婚禮,結(jié)果婚禮上婆芦,老公的妹妹穿的比我還像新娘怕磨。我一直安慰自己,他們只是感情好寞缝,可當(dāng)我...
    茶點(diǎn)故事閱讀 65,453評論 6 385
  • 文/花漫 我一把揭開白布癌压。 她就那樣靜靜地躺著,像睡著了一般荆陆。 火紅的嫁衣襯著肌膚如雪滩届。 梳的紋絲不亂的頭發(fā)上,一...
    開封第一講書人閱讀 49,784評論 1 290
  • 那天被啼,我揣著相機(jī)與錄音帜消,去河邊找鬼。 笑死浓体,一個胖子當(dāng)著我的面吹牛泡挺,可吹牛的內(nèi)容都是我干的。 我是一名探鬼主播命浴,決...
    沈念sama閱讀 38,927評論 3 406
  • 文/蒼蘭香墨 我猛地睜開眼娄猫,長吁一口氣:“原來是場噩夢啊……” “哼贱除!你這毒婦竟也來了?” 一聲冷哼從身側(cè)響起媳溺,我...
    開封第一講書人閱讀 37,691評論 0 266
  • 序言:老撾萬榮一對情侶失蹤月幌,失蹤者是張志新(化名)和其女友劉穎,沒想到半個月后悬蔽,有當(dāng)?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體扯躺,經(jīng)...
    沈念sama閱讀 44,137評論 1 303
  • 正文 獨(dú)居荒郊野嶺守林人離奇死亡,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點(diǎn)故事閱讀 36,472評論 2 326
  • 正文 我和宋清朗相戀三年蝎困,在試婚紗的時(shí)候發(fā)現(xiàn)自己被綠了录语。 大學(xué)時(shí)的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片。...
    茶點(diǎn)故事閱讀 38,622評論 1 340
  • 序言:一個原本活蹦亂跳的男人離奇死亡禾乘,死狀恐怖澎埠,靈堂內(nèi)的尸體忽然破棺而出,到底是詐尸還是另有隱情始藕,我是刑警寧澤失暂,帶...
    沈念sama閱讀 34,289評論 4 329
  • 正文 年R本政府宣布,位于F島的核電站鳄虱,受9級特大地震影響弟塞,放射性物質(zhì)發(fā)生泄漏。R本人自食惡果不足惜拙已,卻給世界環(huán)境...
    茶點(diǎn)故事閱讀 39,887評論 3 312
  • 文/蒙蒙 一决记、第九天 我趴在偏房一處隱蔽的房頂上張望。 院中可真熱鬧倍踪,春花似錦系宫、人聲如沸。這莊子的主人今日做“春日...
    開封第一講書人閱讀 30,741評論 0 21
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽。三九已至缤至,卻和暖如春潮罪,著一層夾襖步出監(jiān)牢的瞬間,已是汗流浹背领斥。 一陣腳步聲響...
    開封第一講書人閱讀 31,977評論 1 265
  • 我被黑心中介騙來泰國打工嫉到, 沒想到剛下飛機(jī)就差點(diǎn)兒被人妖公主榨干…… 1. 我叫王不留,地道東北人月洛。 一個月前我還...
    沈念sama閱讀 46,316評論 2 360
  • 正文 我出身青樓何恶,卻偏偏與公主長得像,于是被迫代替她去往敵國和親嚼黔。 傳聞我的和親對象是個殘疾皇子细层,可洞房花燭夜當(dāng)晚...
    茶點(diǎn)故事閱讀 43,490評論 2 348

推薦閱讀更多精彩內(nèi)容