Advertisement
empireisme

my expected death

Nov 30th, 2019
289
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
R 2.40 KB | None | 0 0
  1. samplemaker_gamma <- function(n=100,shape=2,scale=1,end=4 ){
  2. x <- rgamma(n,shape = 2,scale = 1)
  3. t <- runif(n,0,4)
  4. delta <- 0.5
  5. M <- 1
  6. observedx <- x[which(x>t)]
  7. observedt <- t[which(x>t)]
  8. data <- data.frame(observedx,observedt)
  9. status <- ifelse( observedx<=observedt+M*delta, 3  , 0) #maybe change
  10. qi <- ifelse(status==3,  observedt  ,observedt+M*delta   )
  11. pi <- ifelse( status==3,  observedt+M*delta ,  Inf                 )
  12. datause <- data.frame(observedx,observedt ,Li=qi,Ui=pi,status,entry=observedt)
  13. return(datause)
  14. }
  15.  
  16. cria.tau <- function(data){
  17. l <- data$Li
  18. r <- data$Ui
  19. tau <- sort(unique(c(l,r[is.finite(r)])))
  20. #tau <- c( 0,tau,100000)
  21. return(tau)
  22. }
  23. makeinterval <- function(data){
  24. x <- matrix( c(0,rep(cria.tau( data ),rep(2,length( cria.tau( data )  ))) ,100000 )
  25. ,ncol = 2 ,byrow = T)
  26. q <- x[,1]
  27. p <- x[,2]
  28. data.frame(q,p)
  29. }
  30.  
  31. make_A_turnbull <- function(datacheck){
  32.   qj<- makeinterval(datacheck)$q
  33.   pj<- makeinterval(datacheck)$p
  34.   li <- datacheck$Li
  35.   ri <- datacheck$Ui
  36.   n <- length(li)
  37.   m <- length(pj)
  38.   A <- matrix(0,nrow = n,ncol = m)
  39.   intmapL <- signif(qj,4)
  40.   intmapR <- signif(pj,4)
  41.   k <- dim(A)[[2]]
  42.   Lbracket <- rep("(", k)
  43.   Rbracket <- rep(")", k)
  44.   intname <- paste(Lbracket, intmapL, ",", intmapR, Rbracket,
  45.   sep = "")
  46.  
  47.   intmapL2 <- signif(datacheck$Li, 4)
  48.   intmapR2 <- signif(datacheck$Ui, 4)
  49.   k2 <- dim(A)[[1]]
  50.   Lbracket2 <- rep("(", k2)
  51.   Rbracket2 <- rep(")", k2)
  52.   intname2 <- paste(Lbracket2, intmapL2, ",", intmapR2, Rbracket2,
  53.   sep = "")
  54.   for(j in 1:m){
  55.     for( i in 1:n){
  56.       if( li[i]<=qj[j]&&ri[i]>=pj[j]      ){
  57.         A[i,j] <- 1
  58.       }
  59.       else{A[i,j] <- 0}
  60.     }
  61.   }
  62.  
  63. colnames(A) <- intname
  64. rownames(A) <- intname2
  65. return(A)
  66. }
  67.  
  68. 前面的東西不用管 只是製作A矩陣必要的CODE
  69.  
  70. set.seed(5)
  71. datatest <- samplemaker_gamma(n=7)
  72. print("datatest")
  73. datatest
  74.  
  75. A <- make_A_turnbull(datatest)
  76. ### in this case you can see their are some zero in the matrix
  77. A
  78.  
  79. n<-nrow(A)     #number of observation
  80. m<-ncol(A)     #number of interval
  81. s <- rep(   1/dim(A)[2],  dim(A)[2] )
  82. ###  my code to compute expected death
  83.  
  84. den <- rep(0,n)
  85. densum <- rep(0,n)
  86. d<- rep(0,m)
  87.  
  88. for(j in 1:m){  
  89.  
  90. for(i in 1:n){
  91.  
  92.   if(A[i,j]>0){ ##因為有0在A矩陣的元素中 所以我想到這樣做 但有更好的做法嗎
  93.  
  94.   den[i]<- sum(A[i,]*s)
  95.   densum[i]<- A[i,j]*s[j]/den[i]
  96.  
  97.   }
  98. }
  99. d[j]<- sum( densum )
  100. }
  101. d
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement