Guest User

Untitled

a guest
Nov 21st, 2017
74
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 3.02 KB | None | 0 0
  1. GEST DILATE EFFACE CONSIS CONTR MEMBRAN AGE STRAT GRAVID PARIT DIAB TRANSF GEMEL Y
  2. 31 3 100 3 1 2 26 3 1 0 2 2 1 1
  3. 28 8 0 3 1 2 25 3 1 0 2 1 2 1
  4. 31 3 100 3 2 2 28 3 2 0 2 1 1 1
  5. ...
  6.  
  7. install.packages("optimx")
  8. library(optimx)
  9.  
  10. vY = as.matrix(premature['PREMATURE'])
  11. # Recoding the response variable
  12. vY = ifelse(vY == "positif", 1, 0)
  13.  
  14. mX = as.matrix(premature[c('GEST', 'DILATE', 'EFFACE', 'CONSIS', 'CONTR',
  15. 'MEMBRAN', 'AGE', 'STRAT', 'GRAVID', 'PARIT',
  16. 'DIAB', 'TRANSF', 'GEMEL')])
  17.  
  18. #add an intercept to the predictor variables
  19. mX = cbind(rep(1, nrow(mX)), mX)
  20.  
  21. #the number of variables and observations
  22. iK = ncol(mX)
  23. iN = nrow(mX)
  24.  
  25. #define the logistic transformation
  26. logit = function(mX, vBeta) {
  27. return(exp(mX %*% vBeta)/(1+ exp(mX %*% vBeta)) )
  28. }
  29.  
  30. # stable parametrisation of the log-likelihood function
  31. logLikelihoodLogitStable = function(vBeta, mX, vY) {
  32. return(-sum(
  33. vY*(mX %*% vBeta - log(1+exp(mX %*% vBeta)))
  34. + (1-vY)*(-log(1 + exp(mX %*% vBeta)))
  35. ) # sum
  36. ) # return
  37. }
  38.  
  39. # score function
  40. likelihoodScore = function(vBeta, mX, vY) {
  41. return(t(mX) %*% (logit(mX, vBeta) - vY) )
  42. }
  43.  
  44. # initial set of parameters (arbitrary starting parameters)
  45. vBeta0 = c(10, -0.1, -0.3, 0.001, 0.01, 0.01, 0.001, 0.01, 0.01, 0.01, 0.01, 0.01, 0.01, 0.01)
  46.  
  47. optimLogitLBFGS = optimx(vBeta0, logLikelihoodLogitStable,
  48. method = 'L-BFGS-B', gr = likelihoodScore,
  49. mX = mX, vY = vY, hessian=TRUE)
  50.  
  51. optimLogitLBFGS
  52. p1 p2 p3 p4 p5 p6
  53. L-BFGS-B 9.720242 -0.1652943 0.525449 0.01681583 0.02781123 -0.3921004
  54. p7 p8 p9 p10 p11 p12
  55. L-BFGS-B -1.694412 -0.03461208 0.02759248 0.1993573 -0.6718275 0.02537887
  56. p13 p14 value fevals gevals niter convcode kkt1 kkt2
  57. L-BFGS-B -0.8374338 0.625044 187.581 121 121 NA 1 FALSE FALSE
  58. xtimes
  59. L-BFGS-B 0.044
  60.  
  61. vBeta0 = c(10, -0.1, -0.3, 0.001, 0.01, 0.01, 0.001, 0.01, 0.01, 0.01, 0.01, 0.01, 0.01, 0.01)
  62.  
  63. vBeta0 = rep(0.1, iK)
  64.  
  65. optimLogitLBFGS
  66. p1 p2 p3 p4 p5
  67. L-BFGS-B 0.372672689046 0.206785276091 0.398104550108 0.0175008380158 -0.0460042719084
  68. p6 p7 p8 p9 p10
  69. L-BFGS-B 0.139760396213 -1.43192069477 -0.0207666651106 -1.1396642657 0.212186387416
  70. p11 p12 p13 p14 value
  71. L-BFGS-B -0.583698421298 0.0576485672766 -0.802789658686 0.993103617257 185.472518798
  72. fevals gevals niter convcode kkt1 kkt2 xtimes
  73. L-BFGS-B 121 121 NA 1 FALSE FALSE 0.05
Add Comment
Please, Sign In to add comment