ABOUT ME

-

Today
-
Yesterday
-
Total
-
  • 코로나 바이러스 데이터 분석
    잡다R 2020. 3. 11. 02:40
    코로나 바이러스 데이터 분석


     코로나 바이러스 데이터가 업데이트되면서 많은 분들이 kaggle 등에서 의미 있는 결과를 찾아내고자 데이터 분석을 진행 중입니다. 

     저도 도움이 되고자 데이터 분석을 진행하는데, 글을 쓰는 도중에 갑자기 결과가 바뀌어 버렸습니다… 말그대로 결과가 바꼈어요. 손댄게 없는데 바꼈어요. 허허.. 무엇이 이유인지는 좀더 찾아봐야겠습니다.. 물론 초보자의 글이라 그렇게 큰 의미는 없겠지만 말이죠.

     그래서 일단 코드부터 올리겠습니다. 그리고 조금씩 고쳐나가는 식으로 이 글을 써야겠어요.

    # remotes::install_github("youngwoos/corona19")
    library(corona19)
    library(tidyverse)
    
    patient <- getdata("patient")
    str(patient)
    
    patient <- patient %>% 
      mutate(decease = ifelse(is.na(deceased_date), 0, 1),
             age   = 2020 - birth_year,
             today = 60 + as.numeric(format(Sys.Date(), "%d")),
             month = as.numeric(format(confirmed_date, format = "%m")),
             date  = as.numeric(format(confirmed_date, format = "%d")),
             cured_month = as.numeric(format(released_date, format = "%m")),
             cured_date  = as.numeric(format(released_date, format = "%d")),
             death_month = as.numeric(format(deceased_date, format = "%m")),
             death_date  = as.numeric(format(deceased_date, format = "%d")),
             start_date  = ifelse(month == 1, date,
                                  ifelse(month == 2, 31 + date, 60 + date)),
             finish_date = ifelse(cured_month == 1, date,
                                  ifelse(cured_month == 2, 31 + cured_date, 60 + cured_date)),
             decease_date = ifelse(death_month == 1, date,
                                   ifelse(death_month == 2, 31 + death_date, 60 + death_date)),
             infection_period = ifelse(!is.na(finish_date), finish_date - start_date,
                                       ifelse(!is.na(decease_date), decease_date - start_date, today - start_date)))
    
    
    patient %>% 
      filter(!is.na(deceased_date)) %>% 
      summarise(n = n())
    
    patient %>% 
      group_by(decease) %>% 
      summarise(n = n()) %>% 
      mutate(per = n / sum(n) * 100)
    
    patient$disease[is.na(patient$disease)] <- 0
    patient$disease <- as.factor(patient$disease)
    patient$group[is.na(patient$group)] <- "none"
    
    
    
    # exclude NA for binary choice model
    pat <- patient %>% 
      filter(!is.na(age)& ! is.na(sex))
    nrow(pat)
    
    bin.lp <- lm(decease ~ age + sex + disease + group + infection_period,
                 data = pat)
    summary(bin.lp)
    • 코로나 바이러스 사망 요인 분석
    library(stargazer)
    stargazer(bin.lp,
              type = "text")
    ## 
    ## ==============================================================
    ##                                        Dependent variable:    
    ##                                    ---------------------------
    ##                                              decease          
    ## --------------------------------------------------------------
    ## age                                         0.002***          
    ##                                             (0.0002)          
    ##                                                               
    ## sexmale                                      -0.003           
    ##                                              (0.008)          
    ##                                                               
    ## disease1                                    0.833***          
    ##                                              (0.026)          
    ##                                                               
    ## groupEunpyeong St. Mary's Hospital           -0.050           
    ##                                              (0.047)          
    ##                                                               
    ## groupMyungsung church                        -0.101           
    ##                                              (0.108)          
    ##                                                               
    ## groupnone                                     0.003           
    ##                                              (0.038)          
    ##                                                               
    ## groupPilgrimage                              -0.014           
    ##                                              (0.056)          
    ##                                                               
    ## groupShincheonji Church                       0.003           
    ##                                              (0.040)          
    ##                                                               
    ## infection_period                            -0.009***         
    ##                                              (0.001)          
    ##                                                               
    ## Constant                                     0.084**          
    ##                                              (0.042)          
    ##                                                               
    ## --------------------------------------------------------------
    ## Observations                                   648            
    ## R2                                            0.809           
    ## Adjusted R2                                   0.806           
    ## Residual Std. Error                     0.101 (df = 638)      
    ## F Statistic                         299.329*** (df = 9; 638)  
    ## ==============================================================
    ## Note:                              *p<0.1; **p<0.05; ***p<0.01
    • 이산 선택 모형
    bin.logit <- glm(decease ~ age + disease + infection_period,  
                     data   = pat,
                     family = "binomial")
    ## Warning: glm.fit: fitted probabilities numerically 0 or 1 occurred
    pat <- pat %>% 
      mutate(pr.logit = predict(bin.logit,
                                type = "response"))
    
    pat %>% 
      ggplot(aes(x = age,
                 y = pr.logit,
                 color = sex)) +
      geom_jitter(size  = 5,
                  alpha = 0.8) +
      geom_hline(yintercept = c(0, 1)) + 
      theme_light()

     모쪼록 코로나 바이러스와 사투를 벌이시는 모든 분들 화이팅입니다! 힘내세요!!



Designed by Tistory.