본문 바로가기
Data Analysis/Spotfire

[TIBCO Spotfire] Data Function을 활용한 Regression 분석화면 만들기

by 불탄오징어 2019. 12. 9.
반응형

 

 

6-3. Data Function을 활용한 Multiple Regression 만들기


Spotfire를 활용하여 고급 통계분석을 수행할 수 있는 화면을 만들 수 있습니다. 기본적인 골자는 Text Area를 활용하여 입력 또는 설정을 위한 화면을 구성하고 이를 Data Function과 연결하여 분석화면을 만드는 것입니다. 활용하기에 따라서는 통계분석을 잘 모르는 사용자도 쉽게 모델링을 수행할 수 있으며 많은 Column 들 속에서 변수간 연관관계를 빠르게 파악할 수 있습니다.

 

sample.xlsx
0.01MB

 

본 예제는 임의로 생성한 데이터로 진행하겠습니다. 해당 데이터를 가져오면 아래와 같습니다.

 

 

x1과 x2가 독립변수가 되고 y는 종속 변수가 됩니다. 이 데이터를 가지고 먼저 입력/설정을 할 수 있는 화면을 구성하겠습니다.

 

 

Text Area를 추가하고 Edit Text Area를 연 후 List box(multiple select)를 선택합니다.

 

 

New를 클릭하여 New Property에 X를 입력하고 OK를 클릭하여 Property를 생성합니다.

 

 

Select Columns를 클릭하고 New를 눌러서 위와 같이 입력한후 OK를 클릭합니다.

 

 

그 다음 Available columns에서 x1과 x2만 선택하여 Add를 클릭하여 Selected columns에 등록합니다. List Box에 별도 설정을 하지 않으면 전체 칼럼이 포함되지만 이과정을 거치게 되면 지정하는 특정 칼럼만 출력할 수 있습니다. OK, OK를 차례로 클릭하여 Property를 Text Area에 등록합니다.

 

그러면 위와 같이 Text Area에 칼럼명을 선택할 수 있는 List Box가 생깁니다. 비슷한 방식으로 Y값에 대한 property를 생성할 수 있습니다. Y는 대상이 고정이지만 Drop box로 선택할 수 있는 형태로 만들어보겠습니다.

 

 

Text Area에 Insert Property - Drop-down list를 선택합니다. New를 클릭하고 Y라고 입력 한 후 이번에는 OK, OK를 차례로 눌러서 Drop-down list를 Text Area에 추가합니다.

 

 

앞서 List box를 생성할 때와 달리 Column을 지정해주지 않았기 때문에 모든 칼럼이 들어간 것을 확인 할 수 있습니다. 이번에는 Data Function을 생성합니다. Data Function을 생성하는 방법은 앞전 포스트를 참조합니다.

 

# Folmula를 만들기 위해 입력값의 칼럼명을 추출
y.colnames <- colnames(y)
x.colnames <- colnames(x)

# Folula 생성
formula <- as.formula(paste0(y.colnames , '~', paste(x.colnames, collapse = '+')))

# 모든 데이터 합침
allData <- data.frame(y, x, stringsAsFactors=F)

# 모형 적합
fit <- lm(formula, data = allData)

fit.summary <- summary(fit)

# 출력을 위한 값을 추출하여 model과 coff로 저장
model <- with(
	fit.summary, 
	data.frame(
		r.squared = r.squared, 
		adj.r.squared = adj.r.squared, 		
		p.value = 1 - pf(fstatistic[1], fstatistic[2], fstatistic[3]),
		stringsAsFactors=F
	))

coff <- data.frame(fit.summary$coefficients)

 

위의 스크립트에서 보면 입력 및 출력값은 다음과 같습니다.

 

  • 입력값 : x, y
  • 출력값 :  model, coff

 

각각 Input Parameters 와 Output Parameters에 등록을 합니다.

 

스크립트 등록

 

 

Input Paramters는 모두 Table 타입으로 지정한다.

 

Output Paramters 도 모두 Table 타입으로 지정한다.

 

그다음 Run을 클릭하여 Data Function을 실행합니다.

 

클릭하면 커져요....

 

먼저 y를 선택한 후 Input handler에서 expression을 클릭합니다. 그리고 우측 Edit를 눌러서 다음과 같이 입력합니다.

 

# 앞의 Data Table에는 해당 데이터 테이블의 이름이 온다.
[Data Table].[${Y}]

 

그 다음에는 같은 방식으로 X를 선택한 후 Input handler에 expression을 선택하고 Edit를 눌러서 다음과 같이 입력합니다.

 

# $map은 Spotfire의 내장 함수로 ${X}가 다중 선택되는 값일 경우 사용하는 함수이다.
$map("[Data Table].[${X}]", ",")

 

참고로 $map() 함수는 Spotfire 내장 함수로 앞서 List box(multiple select)로 생성한 X가 여러개의 칼럼을 선택할 수 있는 것을 기억할텐데 이와 같이 다중 선택으로 들어오는 값에 대해 처리를 하기 위한 함수로 이해하면 됩니다.

 

클릭하면 커져요...

 

Output에는 각각 Table타입으로 지정한 후 OK를 눌러 Data Function을 실행합니다. 입력한 것에 문제가 없다면 아무런 메시지 없이 실행이 끝날텐데 Edit - Data Table을 클릭하여 Data Table을 확인 해보면 두개 테이블이 생성된 것을 확인 할 수 있습니다. 각각 Data Table을 가져와서 보면 다음과 같이 출력됩니다.

 

 

좌측은 모형에 대한 정보, 우측은 계수에 대한 정보를 나타내고 있습니다. 마지막으로 버튼을 추가하여 Data Function을 실행할 수 있도록 설정하겠습니다. 앞서 입력값을 받던 Text Area로 가서 edit모드를 실행한 후 insert action control클릭하여 Action Control 창을 엽니다.

 

 

위의 그림과 같이 좌측 패널에서 Data Function을 클릭하면 이번에 만든 Data function이 우측 Available data functions에 있는 것을 확인 할 수 있습니다. 선택한 후 Display text에 '실행' 이라고 입력하고 OK를 눌러 버튼을 추가합니다.

 

 

잠깐 정리를 해주면 위와 같이 보여줄 수 있습니다. 이제 Y, X 를 선택한 후 실행을 클릭하면 Regression이 수행됩니다. 이때까지 생성한 것들을 정리하면 아래와 같이 구현할 수 있습니다.

 

 

화면 또는 R 스크립트, Data Function을 수정하기에 따라 멋진 통계분석화면을 만들 수 있습니다. 이 부분은 개인의 역량에 따라 달라질 수 있으니 능숙하게 다룰 수 있도록 연습이 필요합니다.

댓글