library(FeatureExtraction)
이 설명서는 사용자가 이미 특징추출 패키지을 사용하는 것에 익숙하다고 가정한다.
특징추출 패키지는 condition_occurrence 테이블에서 발견된 각 조건에대해 공변량 1개와 같은 기본 공변량 집합을 생성 할 수 있다. 그러나 어떠한 이유로든지 기본 집합에 포함된 다른 공변량이 필요할 수도 있다. 때로는 표준 목록에 추가된 새로운 공변량을 쓰는것도 타당할 수 있지만, 다른 때에는 그것들을 안 써야 할 이유가 있을 수도 있다.
특징추출 패키지에는 사용자 정의 공변량 빌더가 있어서 패키지에 포함된 공변량 빌더를 대체하거나 보완하는 메커니즘이 있다. 이 설명서는 그 메커니즘을 설명한다
참고: 사용자 정의 공변량을 추가하는 또 다른 방법은 공통 데이터 모델의 cohort_attribute 테이블을 사용하는 것이다. 이 방법은 creating covariates using cohort attributes라는 설명서에 설명되어 있고, 공변량이 한 번만 필요하거나 고급 R 프로그래밍에 익숙하지 않은 경우 좋은 방법이다. 이 설명서에는 사용자정의 공변량 빌더를 만드는 것을 설명하고 더 복잡하지만 더 많은 연구에서 쉽게 다시 사용할 수 있다.
사용자 지정 공변량 빌더를 추가하려면 다음 두가지를 구현해야 한다.
공변량 설정 함수는 다음 두 가지 요구 사항을 충족하는 개체를 생성해야 한다.
아래에 공변량 설정 함수의 예가 있다.
createLooCovariateSettings <- function(useLengthOfObs = TRUE) { covariateSettings <- list(useLengthOfObs = useLengthOfObs) attr(covariateSettings, "fun") <- "getDbLooCovariateData" class(covariateSettings) <- "covariateSettings" return(covariateSettings) }
위의 예시의 함수는 useLengthOfObs라는 인자 하나밖에 없다. 이 인자값은 covariateSettings 객체에 저장되어 있다. 이러한 옵션에 해당하는 공변량을 구성하는 함수의 이름은 getDbLooCovariateData이다.
공변량 생성 함수는 다음 인자 값들을 받는다:
이 함수는 cohort 테이블 인자에 지정된 이름을 가진 테이블이 존재할 것으로 기대할 수 있다. 이 테이블은공변량을 생성하려는 사람과 인덱스날짜를 식별하며 다음 필드를 갖는다(subject_id,cohort_start_date, and cohort_definition_id). 1인당 인덱스 날짜(즉, cohort_start_date)가 두 개 이상일 수 있기 때문에 각 subject_id-cohort_start_date 조합에 대한 고유 식별자가 있는 추가 필드가 포함 될 수 있다. 이 필드의 이름은 rowIdField 인자에 저장된다.
이 함수는 covariateData 유형의 객체를 반환해야 한다. 이 객체는 다음 멤버 목록을 가진다.
getDbLooCovariateData <- function(connection, oracleTempSchema = NULL, cdmDatabaseSchema, cohortTable = "#cohort_person", cohortIds = c(-1), cdmVersion = "5", rowIdField = "subject_id", covariateSettings, aggregated = FALSE) { writeLines("Constructing length of observation covariates") if (covariateSettings$useLengthOfObs == FALSE) { return(NULL) } if (aggregated) { stop("Aggregation not supported") } # Some SQL to construct the covariate: sql <- paste( "SELECT @row_id_field AS row_id, 1 AS covariate_id,", "DATEDIFF(DAY, observation_period_start_date, cohort_start_date)", "AS covariate_value", "FROM @cohort_table c", "INNER JOIN @cdm_database_schema.observation_period op", "ON op.person_id = c.subject_id", "WHERE cohort_start_date >= observation_period_start_date", "AND cohort_start_date <= observation_period_end_date", "{@cohort_ids != -1} ? {AND cohort_definition_id IN @cohort_ids}" ) sql <- SqlRender::render(sql, cohort_table = cohortTable, cohort_ids = cohortIds, row_id_field = rowIdField, cdm_database_schema = cdmDatabaseSchema ) sql <- SqlRender::translate(sql, targetDialect = attr(connection, "dbms")) # Retrieve the covariate: covariates <- DatabaseConnector::querySql.ffdf(connection, sql) # Convert colum names to camelCase: colnames(covariates) <- SqlRender::snakeCaseToCamelCase(colnames(covariates)) # Construct covariate reference: covariateRef <- data.frame( covariateId = 1, covariateName = "Length of observation", analysisId = 1, conceptId = 0 ) covariateRef <- ff::as.ffdf(covariateRef) # Construct analysis reference: analysisRef <- data.frame( analysisId = 1, analysisName = "Length of observation", domainId = "Demographics", startDay = 0, endDay = 0, isBinary = "N", missingMeansZero = "Y" ) analysisRef <- ff::as.ffdf(analysisRef) # Construct analysis reference: metaData <- list(sql = sql, call = match.call()) result <- list( covariates = covariates, covariateRef = covariateRef, analysisRef = analysisRef, metaData = metaData ) class(result) <- "covariateData" return(result) }
이 예제 함수에서 observation_period_start_date와 인덱스 날짜 사이의 일 수인 '관찰 길이'라는 단일 공변량을 구성한다. 우리는 매개 변수화 된 SQL과 SqlRender 패키지를 사용하여 우리가 연결된 데이터베이스에 적절한 SQL문을 생성한다. DatabaseConnector 패키지를 사용하면 결과가 ffdf 객체에 즉시 저장된다. 우리는 공변량 참조 및 분석 참조 객체를 생성하는데, 이 객체는 하나의 행을 가지며 우리의 공변량과 하나의 분석을 지정한다. 그런 다음 covariate, covariateRef 및 analysisRef 객체를 메타 데이터와 함께 단일 결과 객체로 만든다.
PatientLevelPrediction 패키지의 사용자 정의 공변량 빌더와 cohortMethod 패키지와 같은 FeatureExtraction 패키지에 의존하는 다른 패키지를 사용할 수 있다. 사용자 정의 공변량 빌더만 사용하려는 경우, 기존 공변량 설정을 자체 공변량 설정으로 간단히 대체할 수있다.
예를들어:
looCovSet <- createLooCovariateSettings(useLengthOfObs = TRUE) covariates <- getDbCovariateData( connectionDetails = connectionDetails, cdmDatabaseSchema = cdmDatabaseSchema, cohortDatabaseSchema = resultsDatabaseSchema, cohortTable = "rehospitalization", cohortIds = c(1), covariateSettings = looCovSet )
이 경우 우리는 예측 모델인 관측 길이에 대한 공변량만 가질 것이다. 대부분의 경우, 우리는 기본 공변량 외에 우리의 맞춤 공변량을 원할 것이다. 공변량 설정 목록을 생성하여 이 작업을 수행할 수 있다.
covariateSettings <- createCovariateSettings( useDemographicsGender = TRUE, useDemographicsAgeGroup = TRUE, useDemographicsRace = TRUE, useDemographicsEthnicity = TRUE, useDemographicsIndexYear = TRUE, useDemographicsIndexMonth = TRUE ) looCovSet <- createLooCovariateSettings(useLengthOfObs = TRUE) covariateSettingsList <- list(covariateSettings, looCovSet) covariates <- getDbCovariateData( connectionDetails = connectionDetails, cdmDatabaseSchema = cdmDatabaseSchema, cohortDatabaseSchema = resultsDatabaseSchema, cohortTable = "rehospitalization", cohortIds = c(1), covariateSettings = covariateSettingsList )
이 예에서 인구 통계학적 공변량과 관찰 공변량의 길이가 모두 생성되어 예측 모델에 사용될 수 있다.
Any scripts or data that you put into this service are public.
Add the following code to your website.
For more information on customizing the embed code, read Embedding Snippets.