- 在线时间
- 479 小时
- 最后登录
- 2026-5-9
- 注册时间
- 2023-7-11
- 听众数
- 4
- 收听数
- 0
- 能力
- 0 分
- 体力
- 7813 点
- 威望
- 0 点
- 阅读权限
- 255
- 积分
- 2931
- 相册
- 0
- 日志
- 0
- 记录
- 0
- 帖子
- 1173
- 主题
- 1188
- 精华
- 0
- 分享
- 0
- 好友
- 1
该用户从未签到
 |
# logistic回归
% I+ x. K2 h9 U( v# h6 I) z实际上线性最小二乘回归和Logistic回归都是广义线性模型的一个特例。当随机变量Y服从高斯分布,那么得到的是线性最小二乘回归,当随机变量服从伯努利分布,则得到的是Logistic回归。: P: B1 ]6 \0 T
2 J5 b1 W, }3 R. \* n" |, xR软件提供了拟合计算广义线性模型的函数glm(),其命令格式如下:fitted.model <- glm(formula, family=family.generator, data=data.frame) 其中,formula是拟合公式;family是分布族,即前面讲到的广义线性模型的种类,如正态分布、Poisson分布、二项分布等。
3 d* s# o0 P6 T% a) j H- C" m" [, r3 C* _. g9 r" H) D2 U
7 Y: Q8 b9 p; p4 R3 i1 W# q8 N+ |有了上面这些分布族和连接函数,我们就可以完成相应的广义线性模型的拟合问题。8 ~( X- z e" v$ Z+ s
) Q; f9 u( t, o5 o1)正态分布 正态分布族的使用方法: fm <- glm(formula, family=gaussian(link=identity), data=data.frame) 其中,link=identity可以不写,因为正态分布的连接函数缺省值是恒等(identity)。事实上,整个参数family=gaussian也可以不写,因为分布族的缺省值就是正态分布。 注意:正态分布的广义线性模型实际上与线性模型是相同的,也就是 fm <- glm(formula, family=gaussian, data=data.frame) 与线性模型 fm <- lm(formula, data=data.frame)有完全相同的结果,但效率却低得多。. O5 [$ v( ~ |9 r' m2 W- a
! f3 V, o% ~; b: v% n2)二项分布
' n+ J" Q, F1 F" C2 m! @1 [
) c& f8 M0 f& i5 r, M, _: U
: E! o- P) i) llogistic回归模型是一个非线性回归模型,自变量可以是连续变量,也可以是分类变量,或哑变量。但可以使用线性回归模型对参数进行估计,所以Logistic回归模型属于广义线性模型。
6 |& E; b$ t u0 f. l1 h
/ d* n* x& ~7 @ G# y* vLogistic回归模型的公式为: fm <- glm(formula, family=binomial(link=logit), data=data.frame) 其中,link=logit可以不写,因为logit是二项分布族连接函数的缺省状态。, y3 R+ E: V3 E3 E4 Q: `
实例一、Norell实验,高压电线对牲畜的影响- #1、加载数据- G0 ?( q. y\" u1 G
- norell<-data.frame( x=0:5, n=rep(70,6), success=c(0,9,21,47,60,63) )
& [! H3 u( i8 d% I - norell$Ymat<-cbind(norell$success, norell$n-norell$success) / ? u) M4 n5 z5 S( |) Q; G
-
* Z& k$ M v\" i4 _+ _ - #2、建模2 C: O% H1 z5 c8 \4 p
- glm.sol <- glm(Ymat ~ x, family=binomial, data=norell)0 }& J# j% Y; i0 O
- 2 e* `8 \0 g3 n- F7 s3 H, f9 D3 d* s
- #3、模型评估! O6 p$ ^: [3 l* y8 I# T
- summary(glm.sol)
复制代码- ##
* Y# z) {\" {' {5 D8 ?( N. x1 { - ## Call:& \/ V. ^, Q4 A6 A& L: X
- ## glm(formula = Ymat ~ x, family = binomial, data = norell)\" @, W/ ^3 P1 m. b: s7 b# d
- ##
6 |# d/ A' c5 G4 B: `2 } - ## Deviance Residuals:
0 y5 l$ q( k2 X) O - ## 1 2 3 4 5 6
\" ~9 j/ d2 x, V' B* { - ## -2.2507 0.3892 -0.1466 1.1080 0.3234 -1.6679
& J, D+ M' |1 ]8 G2 m- G* n - ##
1 ~- ^4 z3 B' K- v% X/ q9 v - ## Coefficients:
, s- N2 _3 u% e2 s8 M3 b - ## Estimate Std. Error z value Pr(>|z|) 0 U\" l, f7 R! r7 v- L; n q
- ## (Intercept) -3.3010 0.3238 -10.20 <2e-16 ***
# Y% y\" s7 @0 _ - ## x 1.2459 0.1119 11.13 <2e-16 ***+ _0 ~' _% K+ q1 J: [
- ## ---+ k4 b6 n) t+ s L9 ~& Q
- ## Signif. codes: 0 '***' 0.001 '**' 0.01 '*' 0.05 '.' 0.1 ' ' 1
0 k0 c9 C9 d3 E5 [ - ## . t) [ n' X/ ^( u, b5 n! D
- ## (Dispersion parameter for binomial family taken to be 1)
1 ^* E# d( t6 I - ## 1 Q. I' B) Z# V6 G
- ## Null deviance: 250.4866 on 5 degrees of freedom \' i4 U3 z8 Q\" V, {* G
- ## Residual deviance: 9.3526 on 4 degrees of freedom
6 h* v& ^! W9 M7 a+ ^ - ## AIC: 34.093
4 D0 y% |- d: s0 j. S - ##
\" k! j5 ~# r) {- k& b - ## Number of Fisher Scoring iterations: 4
复制代码- #与线性回归模型相同,在得到回归模型后,可以作预测:电流强度为3.5毫安时,有响应的牛的概率9 b* l) g6 z) b$ M: F+ ^, D
-
& Q0 }: x- G: L; b! r2 b - #4、预测, }+ | n6 z( m! m( I
- pre <- predict(glm.sol, data.frame(x=3.5))6 {. F- j0 F& C3 {$ J( j; }
- (p <- exp(pre)/(1+exp(pre)))
复制代码- ## 1 ( n& f) _( s' Z' Y& h
- ## 0.742642
复制代码- #求有50%的牛响应时的电流强度:当P=0.5时,ln(P/(1-P))=0,所以X=-b0/b1. p) X. e. X. ?' q9 n6 c
- glm.sol$coefficients
复制代码- ## (Intercept) x
0 l; f. C- s s& z. Y' |\" J - ## -3.301035 1.245937
复制代码- (X <- -glm.sol$coefficients[[1]]/glm.sol$coefficients[[2]])
复制代码- #5、画出响应比例与logistic回归曲线:
\" v+ l9 m L/ F8 ?2 u - d <- seq(0, 5, length=100), ^# c( R2 V2 n$ Q, V' M) u
- pre <- predict(glm.sol, data.frame(x=d))# }/ f3 L9 c( Q/ k8 W: W, u\" K
- p <- exp(pre)/(1+exp(pre))
& Y# J& B0 R: Y/ r# ^' r2 s [ - norell$y <- norell$success/norell$n }# j7 l\" Z8 A b) e5 |7 p0 Y
- plot(norell$x, norell$y)
: H6 J3 z. ]- m* N3 Y% n' V8 O - lines(d, p)
复制代码- #其中,d是给出曲线横坐标的点,pre是计算预测值,p是相应的预测概率。用plot函数和lines给出散点图和对应的预测曲线。
复制代码
8 k5 W' P. U9 K! F) R. a |
zan
|