1. 程式人生 > >R迴歸診斷廣義線性模型非線性模型

R迴歸診斷廣義線性模型非線性模型

迴歸診斷
樣本是否符合正態分佈假設?
是否存在離群值導致模型產生較大誤差?
線性模型是否合理?
誤差是否滿足獨立性、等方差、正態分佈等假設條件?

是否存在多重共線性?

正態分佈檢驗
正態性檢驗:函式shapiro.test()
P>0.05,正態性分佈 0.05的p值通常被認為是可接受錯誤的邊界水平(p-value) 方差分析,F檢驗不顯著,Pr>0.05
p值為結果可信程度的一個遞減指標,p值越大,我們越不能認為樣本中變數的關聯是總體中各變數關聯的可靠指標。p值是將觀察結果認為有效即具有總體代表性的犯錯概率
num=seq(10378001,10378100)
x1=round(runif(100,min=80,max=100))
x2=round(rnorm(100,mean=80,sd=7))
x3=round(rnorm(100,mean=83,sd=18))
x3[which(x3>100)]=100
x=data.frame(num,x1,x2,x3)
shapiro.test(x$x1)

殘差
殘差計算函式residuals()
對殘差作正態性檢驗
標準殘差圖
yn.rst<-rstandard(lm.new); yn.fit<-predict(lm.new)
plot(yn.rst~yn.fit)
iris
z<-lm(iris$Sepal.Length~iris$Sepal.Width)
plot(z)

多重共線性
kappa()函式   
κ < 100多重共線性很小
100 ≤ κ ≤ 1000多重共線性中等
κ > 1000多重共線性很強

廣義線性模型
符合logistic迴歸模型的曲線特徵
a=c(0:5)
b=c(0,0.129,0.3,0.671,0.857,0.9)
plot(a,b)
廣義線性模型建模函式:glm()
norell <-data.frame(x=0:5,n = rep(70,6),success=c(0,9,21,47,60,63))
norell$Ymat<-cbind (norell$success,norell$n-norell$success)
glm.sol <-glm(Ymat~x,family= binomial,data= norell)
summary(glm.sol)
非線性模型
x=c(1.5,2.8,4.5,7.5,10.5,13.5,15.1,16.5,19.5,22.5,24.5,26.5)
y=c(7.0,5.5,4.6,3.6,2.9,2.7,2.5,2.4,2.2,2.1,1.9,1.8)
plot(x,y)
直線迴歸( R2值不理想)
lm.1=lm(y~x)
summary(lm.1)
多項式迴歸,假設用二次多項式方程y=a+bx+cx2
xl=x
x2=x^2
lm.2=lm(y~xl+x2)
summary(lm.2)
plot(x,y)
lines(x,fitted(lm.2))
對數法, y=a+blogx
lm.log=lm(y~log(x))
summary(lm.log)
plot(x,y)
lines(x,fitted(lm.log))
指數法, y=aebx
lm.exp=lm(log(y)~x)
summary(lm.exp)
plot(x,y)
lines(x,exp(fitted(lm.exp)))
冪函式法, y=a xb
lm.pow=lm(log(y)~log(x))
summary(lm.pow)
plot(x,y)
lines(x,exp(fitted(lm.pow)))
對比以上各種擬臺迴歸過程得出結論是冪函式法為最佳