구성개념 타당성은 동일개념을 다른 방법을 측정했을 경우의 상관성 정도를 의미하는 수렴적 타당성과 다른 개념에 대해 동일한 측정방법 혹은 다른 측정방법을 적용했을 경우 측정값의 차별화정도를 의미하는 차별적 타당성으로 분류할 수 있습니다. 차별적 타당성은 다변량 분석 중 요인분석을 통해 파악할 수 있습니다. 요인분석은 항목들 간의 상관관계가 높은 것끼리 묶어 공통요인을 추출하는 분석방법입니다. 일반적으로 항목의 요인적재값(factor-loading) 즉 항목 중 상위요인이 설명하는 부분이 0.6이상이면 해당요인에 속하는 것으로 판단합니다. 요인분석을 통해 원래 의도한대로 하나의 개념으로 분류한 항목들이 동일한 요인으로 잘 묶이고 다른 개념으로 분류한 항목들은 다른 요인으로 묶이면 타당성이 있는 것으로 판단하게 됩니다. 다만 요인분석은 등간척도 이상에서만 적용가능하다는 한계가 있습니다.

R을 이용해 타당성 점검을 위한 요인분석을 실시해 보겠습니다. 요인분석을 위해서는 우선 “psych" 패키지와 ”factoextra" 패키지를 설치해야 합니다. 필요한 패키지를 활성화한 후 요인분석을 실시할 데이터를 불러 옵니다.

 

 

이제 요인분석을 실시한 후 동일한 개념에 속하는 변수들이 동일 요인으로 묶이는지를 점검함으로써 측정의 타당성을 점검할 수 있습니다.

궁금하신 점이 있으면 아래 버튼을 클릭해 주세요. 성실하게 답변 드리겠습니다!

 

 

 

 

Posted by dooka
,

신뢰성은 동일 개념에 대한 측정을 반복했을 때 동일한 측정값을 얻을 가능성을 의미합니다. 측정의 신뢰성을 평가하기 위해서는 개별문항 분산의 합을 이용하여 단일한 값으로 신뢰성 계수를 제시할 수 있는 크롬바하 알파값을 이용합니다. 일반적으로 크롬바하 알파값이 0.60을 넘으면 신뢰도가 만족할 만한 수준이라고 판단합니다.

이제 R에서 제공하는 예시 데이터 중 하나를 이용해 크롬바하 알파값을 구해 보겠습니다. 우선 크롬바하 알파값을 구하기 위해 필요한 "psy" 패키지를 설치하고 활성화합니다. R에서 패키지를 다운로드 받기 위해서는 R을 관리자 권한으로 실행합니다.

예제 데이터 파일을 로드해서 head 명령과 summary 명령으로 데이터의 내용을 확인해 보았습니다.

 

예제 파일을 이용해 크롬바하 알파값을 계산한 결과 아래와 같습니다. 이미 예제 파일에서 확인한 바와 같이 변수들을 동일한 개념으로 볼 수는 없을 것이고, 크롬바하 알파값 역시 기준에 미치지 못하는 값을 보임을 확인할 수 있습니다.

궁금하신 점이 있으면 아래 버튼을 클릭해 주세요. 성실하게 답변 드리겠습니다!

 

 

'R기어가기' 카테고리의 다른 글

9. R을 이용한 타당성 점검  (0) 2018.05.21
7. R로 차트 만들기 ②  (0) 2017.09.27
6. R로 차트 만들기 ①  (0) 2017.08.05
5. 테이블!! R로 다시 만들기  (0) 2017.07.13
4. R을 이용한 IPA 산점도 작성  (0) 2017.01.13
Posted by dooka
,

최근 구매 브랜드의 사용 만족도에 대한 예시자료를 이용해 척도형에 유용한 분할수직막대형 차트를 구성해 보겠습니다. 분석대상 파일을 열어서 최근 구매 브랜드 변수인 brand를 범주형으로 변경하고 명칭을 부여해 줍니다. y변수는 해당 브랜드의 사용만족도로 5점 만점등간척도입니다.

 

bar_chart_3.csv

 

 

table()함수와 prop.table()함수를 이용해 브랜드별 만족도 점수의 비율자료를 구합니다.

 

주어진 자료를 이용해 barplot()으로 분할수직막대형 차트를 그려 줍니다.

 

이번에는 qqplot()을 이용해 분할수직막대형 차트를 그려보겠습니다. 최근 구매 브랜드에 대한 만족도 자료를 불러 들인 후 최근 구매 브랜드 변수 brand를 범주형으로 변경해 줍니다. 차트를 작성할 때 매우 만족과 만족이 막대 그래프의 상단에 노출하게 하기 위해 원래의 만족도 변수 score 대신 5점을 1점으로, 4점을 2점으로 2점을 4점으로 1점을 5점으로 변경한 새로운 변수 score2를 사용하도록 하겠습니다. 이것은 차트를 원하는 형식으로 만들기 위한 편의적인 조치로 평균을 구하는 등의 분석 작업 시에는 변경 전 변수인 score를 사용해야 합니다.

 

bar_chart_4.csv

 

분할수직막대형 차트를 작성하기 위해 brand와 만족도를 리코드한 변수인 score2를 범주형으로 변경하고 명칭을 부여해 줍니다.

변경한 bar파일을 이용해 차트를 생성해줍니다. 일반 수직막대형 차트와는 달리 x축과 y축을 정의해주는 것 외에 분할수직막대형 그래프의 분할을 구분해줄 변수도 함께 지정해 주어야 합니다.

 

궁금하신 점이 있으면 아래 버튼을 클릭해 주세요. 성실하게 답변 드리겠습니다!

 

Posted by dooka
,

R을 이용해 차트를 만드는 방법에 대해 알아 보도록 하겠습니다. 먼저 수직막대형 차트를 작성해 보겠습니다. R에서 수직막대형 차트는 barplot()이나 qqplot()을 이용해 그릴 수 있습니다.

 

우선 최근 구입 브랜드에 관한 예시자료를 활성화하고 최근 구입 브랜드를 나타내는 변수 brand를 범주형으로 변경하고 각각의 브랜드를 나타내는 수치에 levels()를 이용해 브랜드명을 활당해 줍니다.

 

> bar=read.csv("bar_chart_1.csv")

> head(bar,3)

brand

1 1

2 9

3 1

 

>bar$brand=factor(bar$brand)

>levels(bar$brand)=c("brand A", "brand B","brand C","brand D","brand E","brand F","brand G","brand H","brand I","brand J")

> head(bar,3)

brand

1 brand A

2 brand I

3 brand A

 

table() prop.table()를 이용해 bar에 있는 brand 변수의 구성 비율을 구해 bar2에 저장합니다.

> bar2=table(bar$brand)

> bar2

brand A brand B brand C brand D brand E brand F brand G brand H brand I brand J

    187      55     204     171      51      33       4      29     197       2

 

 

 

> bar2=prop.table(bar2)

> print(bar2,digits=1)

brand A brand B brand C brand D brand E brand F brand G brand H brand I brand J

  0.200   0.059   0.219   0.183   0.055   0.035   0.004   0.031   0.211   0.002 t

 

마지막으로 barplot()를 이용해 수직막대형 차트를 그려 줍니다. decreasing은 내림차순으로 정렬하는 옵션입니다. col은 막대 안을 채우는 색상을 지정해주고, border는 막대의 테두리 색상을 지정합니다. ylim=c(0,1) y축의 범위를 0 1로 지정하는 옵션입니다.


 

> barplot(sort(bar2, decreasing = TRUE),col="#98E2FA",border="grey",ylim=c(0,1))

 

 

 

다음은 ggplot()을 이용해 수직막대형 차트를 만들어 보겠습니다. barplot과는 달리 ggplot() table()함수를 적용한 파일을 처리할 수 없기 때문에 table함수의 적용결과를 별도의 데이터 파일로 저장하여 ggplot()을 적용합니다. 차트를 구성한 파일을 활성화하여 빈도를 살펴볼 변수를 범주형으로 변경하고 명칭을 부여합니다.

 

 

> bar=read.csv("bar_chart_2.csv")

> bar$brand=factor(bar$brand)

> levels(bar$brand)=c("brand A", "brand B","brand C","brand D","brand E","brand F","brand G","brand H","brand I","brand J")

> head(bar,3)

brand y

1 brand B 87.5

2 brand H 86.5

 

3 brand J 83.3

 

ggplot()함수를 활용하기 위해서는 ggplot2 패키지를 설치해야 합니다.

 

 

> install.packages("ggplot2")

> library("ggplot2")

 

 

ggplot()에서 aes(x=reorder(bar$brand,-bar$y))의 의미는 x축에 bar 파일의 brand 변수수를 넣어주되, bar파일의 y변수의 내림차순에 따르도록 지정하는 것입니다. geom_bar는 차트의 형태를 막대형으로 지정해주는 함수입니다. stat는 분석파일을 생성하는 옵션인데 geom_bar에서는 identity로 고정입니다. fill은 막대의 안을 채우는 색상을 지정하는 옵션이고 color는 테두리 색상을 지정하는 옵션입니다. 다음으로 y축의 범위과 축의 눈금의 간격을 지정해 줍니다

 

>gg=ggplot(data=bar,aes(x=reorder(bar$brand,-bar$y),y=bar$y))+geom_bar(stat="ide

ntity",fill="#98E2FA",color="grey")

> gg=gg+scale_y_continuous(breaks=seq(0,100,by=10),limits=c(0,100) )

 

 

 

 

실습용 파일을 첨부합니다. R을 이용해 직접 수직막대형 차트를 만들어 보십시오.

bar_chart_1.csv

 

궁금한 점이 있으면 아래 버튼을 클릭해 주십시오. 데이터테일즈가 성실하게 답변 드리겠습니다.

 

 

 

Posted by dooka
,

지난 시간에 R을 이용해 조사결과 테이블을 만드는 법에 대해 알아보았습니다. 그런데 결과에서 전체 연령별 응답값이 전체 데이터에서 차지하는 비중이 아니라 연령 내에서 차지하는 비중을 제시하지 못하는 아쉬움이 있습니다. 또한 테이블을 만드는 절차를 반복하지 않고 좀 더 간편한 방법이 없는지도 궁금합니다.

 

3. 테이블! R로 만들기

 

 

이번 포스팅에서는 관심 있는 부차집단의 응답값이 부차집단 내에서 차지하는 비중을 기준으로 테이블을 구성하는 방법을 알아 보고 R에서 function 함수를 이용해 테이블 생성작업을 좀 더 간편하게 실행하는 방법에 대해 알아 보겠습니다.  

 

지난 포스팅에서 사용했던 고객 만족도 조사 결과 데이터를 이용해 R에서 테이블을 만들어 보겠습니다. q1_1은 직원의 친절성, q1_2은 직원의 전문성, q1_3은 매장의 청결성, q1_4는 제품의 다양성, q1_5는 제품의 품질을 묻는 질문의 답변이고 q2는 전반적인 만족도의 응답 결과입니다. Head(raw_data,3) raw_data 파일의 세번째 행까지 읽어드리는 명령입니다.

 

> raw_data=read.csv("raw_data.csv")

> head(raw_data,3)

id sq1 sq2 q1_1 q1_2 q1_3 q1_4 q1_5 q2 x

1 1 남성 30 5 4 3 5 5 5 전체

2 2 여성 40 6 4 5 3 5 3 전체

3 3 남성 30 6 6 7 7 6 6 전체

 

우선 성별 변수 sq1와 연령별 변수 sq2의 교차통계표를 구성해 보겠습니다. table() 함수를 이용하면 성별·연령별 빈도를 구할 수 있습니다. 빈도가 아니라 비율을 알고 싶다면 prop.table() 함수를 활용하면 됩니다. addmargins()를 활용하면 교차통계표에 주변합을 추가할 수 있습니다.

 

>fre=table(raw_data$sq1,raw_data$sq2)

>fre=prop.table(fre)

>fre=addmargins(fre)

30 40 Sum

남성 0.32 0.27 0.59

여성 0.20 0.21 0.41

Sum 0.52 0.48 1.00

 

이제 직원의 친절성을 평가한 변수 q1_1의 빈도와 평균을 전체 응답자, 성별, 연령별로 볼 수 있는 교차통계표를 만들어 보겠습니다. 전체 빈도를 보여주기 위해 전체를 표기한 x변수에 대해 table( )함수를 실행합니다.

 

> raw_data=read.csv("raw_data.csv")

> table1=table(raw_data$q1_1,raw_data$x)

> table1=prop.table(table1)

> table1

전체

3 0.05

4 0.18

5 0.36

6 0.29

7 0.12

 

다음으로 tapply() 함수를 이용해 전체에 대해 q1_1 변수의 평균을 구한 후 rbind() 함수를 이용해 행 방향으로 q1_1 변수의 빈도표에 합쳐 줍니다.

 

> mean<-tapply(raw_data$q1_1,raw_data$x,mean)

> table1=rbind(table1,mean)

> table1

total

3 0.05

4 0.18

5 0.36

6 0.29

7 0.12

mean 5.25

 

다음으로 성별을 구분하는 변수 sq1를 기준으로 빈도와 평균을 구한 다음 전체에 대한 기존 표에 합쳐 줍니다. prop.table(table2,2)에서 파일명 table2 다음의 2는 비율을 열방향으로 합산하기 위한 옵션입니다. 행방향으로 비율을 합치기 위해서는 1을 입력하면 됩니다. rbind()는 행 방향으로 파일을 합쳐주는 함수이고 cblind()는 열 방향으로 파일을 합쳐주는 함수입니다.

 

>table2<-table(raw_data$q1_1,raw_data$sq1)

>table2<-prop.table(table2,2)

>mean2<-tapply(raw_data$q1_1,raw_data$sq1,mean)

>table2<-rbind(table2,mean2)

>table<-cbind(table1,table2)

 

마지막으로 연령별 교차통계표를 구해 원래의 교차통계표에 합쳐 줍니다.

 

>table3<-table(raw_data$q1_1,raw_data$sq2)

>table3<-prop.table(table3,2)

>mean3<-tapply(raw_data$q1_1,raw_data$sq2,mean)

>table3<-rbind(table3,mean3)

>table<-cbind(table,table3)

 

전체 빈도와 평균에 성별 연령별 자료를 합한 교차통계표의 최종 결과물은 아래와 같습니다. print()함수를 이용해 교차통계표 숫자의 자리수를 조정해 줄 수도 있습니다.

 

> table

전체 남성 여성 30 40

3 0.05 0.05084746 0.04878049 0.07692308 0.02083333

4 0.18 0.11864407 0.26829268 0.19230769 0.16666667

5 0.36 0.37288136 0.34146341 0.32692308 0.39583333

6 0.29 0.32203390 0.24390244 0.32692308 0.25000000

7 0.12 0.13559322 0.09756098 0.07692308 0.16666667

mean 5.25 5.37288136 5.07317073 5.13461538 5.37500000

 

> print(table,digits=2)

전체 남성 여성 30 40

3 0.05 0.051 0.049 0.077 0.021

4 0.18 0.119 0.268 0.192 0.167

5 0.36 0.373 0.341 0.327 0.396

6 0.29 0.322 0.244 0.327 0.250

7 0.12 0.136 0.098 0.077 0.167

mean 5.25 5.373 5.073 5.135 5.375

 

설문지가 길어지면 교차통계표를 구하기 위해 위와 같은 절차를 각각의 문항에 대해 반복하는 것은 매우 비효율적입니다. function함수를 이용해 미리 위의 절차를 만들어 주면 설문지가 길어지더라도 비교적 효율적으로 교차통계표를 구할 수 있습니다.

 

>function1=function(a,b,c,d){

+table1<-table(a,b)

+table1<-prop.table(table1,2)

+mean<-tapply(a,b,mean)

+table1<-rbind(table1,mean)

+table2<-table(a,c)

+table2<-prop.table(table2,2)

+mean2<-tapply(a,c,mean)

+table2<-rbind(table2,mean2)

+table<-cbind(table1,table2)

+table3<-table(a,d)

+table3<-prop.table(table3,2)

+mean3<-tapply(a,d,mean)

+table3<-rbind(table3,mean3)

+table<-cbind(table,table3)}

 

function함수에서 a, b, c, d는 임의로 지정한 변수이고 a, b, c, d 대신 실제 분석 대상이 되는 변수들로 교체만 해주면 손쉽게 교차통계표를 구할 수 있습니다.

 

>output1=function1(a=raw_data$q1_1,b=raw_data$x,c=raw_data$sq1,d=raw_data$sq2)

> print(output1,digits=2)

전체 남성 여성 30 40

3 0.05 0.051 0.049 0.077 0.021

4 0.18 0.119 0.268 0.192 0.167

5 0.36 0.373 0.341 0.327 0.396

6 0.29 0.322 0.244 0.327 0.250

7 0.12 0.136 0.098 0.077 0.167

mean 5.25 5.373 5.073 5.135 5.375

 

 

궁금한 점이 있으면 아래 버튼을 클릭해 주십시오. 성실하게 답변 드리겠습니다.

 

 

 

 

 

'R기어가기' 카테고리의 다른 글

7. R로 차트 만들기 ②  (0) 2017.09.27
6. R로 차트 만들기 ①  (0) 2017.08.05
4. R을 이용한 IPA 산점도 작성  (0) 2017.01.13
3. 테이블! R로 만들기  (0) 2017.01.07
2.R을 이용한 word cloud 만들기  (1) 2016.08.12
Posted by dooka
,

R을 이용해 IPA(Importance Performance Analysis)의 결과를 산점도(scatter diagram)로 만들어 보겠습니다.

아래와 같은 가상의 데이터를 가지고 작업을 시작해 보겠습니다. q1_1은 세부항목별 만족도 중 친절성을, q1_2, q1_3, q1_4, q1_5는 각각 전문성, 청결성, 다양성, 품질을 나타내고 q2는 전반적 만족도라고 해보겠습니다.

 

산점도를 작성하기 위해 q2q1_1, q1_2, q1_3, q1_4, q1-5Pearson상관계수를 구하고 각각의 상관계수를 표준화합니다.

 

 

R을 이용해 산점도를 작성하기 위해 필요한 패키지를 설치합니다.

산점도를 그리고자 하는 파일을 CSV형태로 저장하고 read.csv명령을 이용해 dataframe 형태도 불려 옵니다.

마지막으로 산점도를 작성합니다. 산점도의 점 모양은 원형으로 지정했고(shape=19), 산점도 값들의 라벨은 f변수로 설정했습니다. 이때 label=“f”로 지정하면 f를 문자로 인식해 라벨이 f로 일괄 지정되므로 쌍따옴표 없이 label=data$f로 지정해 줍니다. ‘데이터명$변수명의 형식으로 변수를 지정해 주는 이유는 R에서는 변수가 기본적으로 벡터이기 때문입니다. dataframe을 지정해주지 않으면 독립적인 벡터로 인식하여 오류가 발생합니다. 이를 피하기 위해 dataframe을 등록해주는 방법이 있지만, 복잡한 분석이 아니라면 구태여 dataframe을 등록하지 않아도 크게 불편하지 않은 것 같습니다.

궁금하신 점이 있으면 아래 버튼을 클릭해 주세요. 성실하게 답변드리겠습니다!

 

 

'R기어가기' 카테고리의 다른 글

6. R로 차트 만들기 ①  (0) 2017.08.05
5. 테이블!! R로 다시 만들기  (0) 2017.07.13
3. 테이블! R로 만들기  (0) 2017.01.07
2.R을 이용한 word cloud 만들기  (1) 2016.08.12
1.R! 파일을 열다  (0) 2016.07.02
Posted by dooka
,

R에 대해 아주 조금 알고 나니 R은 기본적으로 데이터 관리보다는 데이터 분석에 집중하는 프로그램이라는 생각이 들었습니다. 연구 및 분석 목적이라면 R이 매우 유용할 것이지만 고객의 구매 관련 데이터와 같이 분석만큼이나 데이터의 가공과 관리가 중요하다면 다른 대안을 고려하는 것도 좋을 것 같습니다.

R을 이해하는데 핵심은 R은 벡터 즉 집합이 데이터 가공 및 분석의 기본단위라는 점입니다. 데이터를 다루다 보면 개별 응답값보다는 변수(컬럼) 단위로 작업할 일이 많은데 이런 점이 R에 반영된 것이라 나름대로 추측해 봅니다.

통계적 추론을 실시하기 전에 데이터의 개략적인 내용을 파악하고 통찰을 얻을 수 있는 테이블(table; 조사결과 집계표)R로 작성해 보겠습니다.

다음과 같은 가상의 고객만족도 설문조사를 가정하고 논의를 진행하겠습니다.

위 설문지를 근거로 예시 데이터를 만들어 보았습니다. 예시 데이터는 csv파일 형태로 저장해 두었습니다. 전체 응답값과 연령별 응답값을 합쳐서 조사결과 집계표를 구성하기 위해 기존 변수 외에 X변수를 추가했습니다.

 

이제 위 데이터를 R에서 로드합니다. 먼저 디렉토리를 설정해 주고 read.csv 명령문으로 준비한 데이터를 로드하여 ex_data라는 dataframe에 저장해 주었습니다. R에서 분석이 가능하기 위해서는 변수의 속성이 vector여야 합니다. 그런데 sq1,sq2,X의 속성이 vector가 아니기 때문에 더 이상의 분석이 불가능합니다.

read.csv 명령문에서 범주형 변수가 있을 경우 아래와 같이 StringsAsFactors=FALSE 구문을 추가해서 문자형 변수를 범주형으로 인식하지 않도록 조치 후 로드해야 문제가 없습니다.구문을 추가한 후 변수의 속성을 점검할 결과 이전과는 달리 sq1vector임을 확인할 수 있습니다.

dataframe을 정상적으로 구성하였으므로 ex-data에서 sq1sq2의 분할표(contingency table)을 만들어 보겠습니다.

 

table 명령문을 사용해서 ex_datasq1sq2의 분할표를 만들어 fre라는 변수에 넣어줍니다. fre는 R의 명령문과는 무관하고 임의로 설정한 변수명입니다. R에서 이렇게 번거롭게 새로운 변수를 생성하는 이유는 당연한 이야기지만 A라는 개념이 동시에 A가 아닌 것이 될 수는 없기 때문입니다. 번거롭더라도 인내심을 가지고 작업해 줍니다.

sq1sq2의 빈도보다는 상대적인 비중이 궁금한 것이 일반적이므로 분할표의 빈도를 아래와 같이 비율로 변경합니다.

                                                              

sq1sq2의 주변합도 궁금하므로 다시 주변합을 추가하는 명령을 실행합니다. 최종 분할표만 필요하므로 계속 동일한 변수에 덮어쓰기를 해주었습니다.

                                       

이제 등간척도로 만든 설문의 응답결과를 집계표로 만들어 보겠습니다. 척도형 문항인 q1_1과 전체 X변수간의 분할표를 만들고 이를 비율로 변환해 줍니다.

다음으로 q1_1변수의 평균을 구해 줍니다. mean 명령문만을 사용하지 않고 x 변수에 대한 평균을 구한 후 이것을 이미 만들어 둔 table1에 합쳐 줍니다. 행으로 합칠 때는 rbind, 열 방향으로 합칠 때는 cbind 명령을 사용해 주면 됩니다.

연령별 자료를 만들어 주기 위해 척도형 문항 q1_1과 연령별 변수 sq2으로 분할표를 만듭니다.

연령별 평균을 구해 이미 만들어 둔 table2에 행으로 합쳐 줍니다.

마지막으로 연령별 자료 table2를 전체 자료 table1에 열 방향으로 합쳐주면 조사결과 집계표가 완성됩니다.

                                                              

다소 번거롭기는 하지만 처리해야할 문항수가 많은 상황이라면 R을 이용한 테이블 작업이 엑셀 피벗테이블 기능으로 문항별 데이터 하나 하나를 개별적으로 집계표로 만들어주는 것보다는 효율적인 방법이 될 것 같습니다.

 

궁금한 점이 있으면 아래 버튼을 클릭해 주세요. 성실하게 답변드리겠습니다!

'R기어가기' 카테고리의 다른 글

6. R로 차트 만들기 ①  (0) 2017.08.05
5. 테이블!! R로 다시 만들기  (0) 2017.07.13
4. R을 이용한 IPA 산점도 작성  (0) 2017.01.13
2.R을 이용한 word cloud 만들기  (1) 2016.08.12
1.R! 파일을 열다  (0) 2016.07.02
Posted by dooka
,

서베이몽키는 Gold계정에서 주관식 문항의 핵심 키워드를 추출해주는 텍스트분석 기능을 제공하고 있습니다.

그런데, 서베이몽키 텍스트분석은 우리글의 특성을 고려하지 않아 표본수가 증가하게 되면 질문내용과는 무관한 조사와 서술어의 출현빈도가 높아지는 한계가 있습니다. R이 제공하는 word cloud 패키지를 이용하면 이러한 한계를 여느 정도 극복하는 것이 가능합니다.

우선 R에서 word cloud를 생성하기 위해서는 wordcloud 패키지 외에 한국어 관련 작업을 원활하게 하기 위해 KoNLP 패키지를 설치해야 합니다. 설치가 정상적으로 이루어지지 않는다면 JAVA가 최신 버전인지 확인해 보시기 바랍니다.

이제 받고 싶은 선물에 대한 응답을 가지고 word cloud를 만들어 보겠습니다. 디렉토리 지정 후 KoNLP 패키지와 word cloud 패키지를 활성화합니다.

 

파일을 우선 txt라고 명명한 변수에 넣은 후 명사형 응답만을 선택하여 wish라는 변수에 다시 넣어 주었습니다. Wish 변수를 리스트업 해보면 나이키나이로 인식되는 것처럼 의도하지 않은 결과가 나오는 것을 확인할 수 있습니다.

 

이런 문제가 제거하기 위해 사전에 원하는 명사형을 등록해 줍니다 

☞ R에서 사용자가 많지 않아 삭제되면서 mergeUserDic(data.frame("명사로 등록할 단어","ncn")) 명령은 더 이상 사용할 수 없습니다.대체 명령어는 buildDictionary(ext_dic = "woorimalsam", user_dic=data.frame("명사로 등록할 단어","ncn"),replace_usr_dic = T)입니다. 그런데 문제는 이 명령어를 적용해도 단어가 등록되지 않는 오류가 발생한다는 점입니다. 아마 버그가 있는 것으로 판단되는데 해결될 때까지는 이 과정은 생략하고 wordcloud를 만들면 됩니다. 당분간 buildDictionary 명령 대신 단어를 수정하는 등의 조치를 취해 wordcloud에 나타날 수 있도록 원본 텍스트 데이터를 수정하는 수고를 하셔야 할 것같습니다.    

 

단어 등록 후 wish 변수를 다시 나열해본 결과, “나이로 구분되던 나이키가 나이키하나로 인식되는 것을 확인할 수 있습니다.   

 

무의미한 단어를 제거하기 위해 두 개 이상인 단어만 선택했습니다.

 

다음으로 그 외 의미 없는 단어들을 변수에서 제거해 주었습니다.

 

불필요한 단어를 제거한 후에는 word cloud를 생성합니다.

 

word cloud를 생성한 결과는 아래와 같습니다.

R을 이용해 word cloud를 생성해 본 결과 확실히 우리글에 적합한 결과를 도출할 수 있음을 알 수 있습니다. 그러나, 필요한 단어를 등록하고 불필요한 단어를 제거하는 등, 주관식 문항을 코딩 하는 정도의 수고까지는 아니더라도 데이터를 정제하는 과정은 반드시 필요합니다. 만약 데이터의 표본수, 사례수가 많아진다면 의외로 손이 많이 갈 수도 있을 것 같습니다. 코딩요원을 투입해 주관식 문항을 처리하는 기존 방법을 대체하기 보다는 보완적인 방법으로 R word cloud를 사용할 수 있을 것으로 보입니다 

 

'R기어가기' 카테고리의 다른 글

6. R로 차트 만들기 ①  (0) 2017.08.05
5. 테이블!! R로 다시 만들기  (0) 2017.07.13
4. R을 이용한 IPA 산점도 작성  (0) 2017.01.13
3. 테이블! R로 만들기  (0) 2017.01.07
1.R! 파일을 열다  (0) 2016.07.02
Posted by dooka
,

기존 통계분석 프로그램을 사용하는 사람 입장에서는 R의 특성이 무엇이든 가장 관심이 가는 부분은 무료로 자유롭게 사용할 수 있다는 점입니다. 하지만 실제로 R을 접해보면 적지 않게 당황하게 됩니다. 우선 R은 대·소문자를 구분하기 때문에 기존 통계분석 프로그램에 익숙한 사람이 느끼는 이질감은 생각보다 큰 것이었습니다.

그러나, 최근 다소 과열이다 싶을 정도로 관심이 폭발하는 빅데이터에 대한 관심을 잠시 넣어두더라도 오픈소스가 주는 자유로움을 포기할 수는 없기에 걸음마부터 R을 시작해 보기로 했습니다.

R에서 데이터를 활성화하기 위해서는 우선 작업 디렉터리를 분석 데이터가 있는 폴더로 변경해야 합니다. 일반적으로 통계분석 프로그램에서 분석용 syntax 파일과 데이터 파일이 동일 폴더에 있거나 별도로 파일을 활성화하는 명령어가 필요한 것과 유사한 것 같습니다.



R에서는 단순히 파일을 여는 것만으로는 파일을 분석할 수 없고 데이터프레임을 구성하기 위해 class라는 개념에 담아야 합니다. 데이터 파일을 분석할 수 있는 상태가 되면 R 명령어를 입력하여 필요한 분석을 하게 됩니다.




'R기어가기' 카테고리의 다른 글

6. R로 차트 만들기 ①  (0) 2017.08.05
5. 테이블!! R로 다시 만들기  (0) 2017.07.13
4. R을 이용한 IPA 산점도 작성  (0) 2017.01.13
3. 테이블! R로 만들기  (0) 2017.01.07
2.R을 이용한 word cloud 만들기  (1) 2016.08.12
Posted by dooka
,