나는조난
조난 블라블라
나는조난
전체 방문자
오늘
어제
  • NAN-blabla (15)
    • 🖥️ Computer Science (2)
    • 💻 Develop Research (1)
    • 🐍 Python (1)
    • 🌐 R language (8)
    • 🍊 Orange 3 (2)
    • 🚄 Railway Story (0)
    • 📷 Photograph (1)

블로그 메뉴

  • 🏠 HOME
  • 🏷️ Tags
  • ✒️ GuestBook
  • 🐱 Github

공지사항

  • 👋 print("Hello World!")
  • 😼 Blue Fox_ihihi

인기 글

태그

  • 경복궁
  • 인공지능
  • pandas
  • R언어
  • 미군기지
  • ai
  • css
  • Bit Flip
  • ORANGE
  • python
  • 용산
  • 광화문
  • R studio
  • 공공데이터
  • 국립중앙박물관
  • 흥례문
  • GPT
  • 우주방사선
  • 파이썬
  • r
  • 서울
  • Path
  • 환경변수
  • 이촌
  • ChatGPT
  • matplotlib
  • RTOOLS43
  • HTML

최근 댓글

최근 글

티스토리

hELLO · 스킨 출처.
나는조난

조난 블라블라

R - 2주차 내용정리
🌐 R language

R - 2주차 내용정리

2023. 10. 1. 16:25
반응형
2주차 내용정리 입니다.
복습할라고 작성했습니다.

2주차에는 1주차와 다른 함수 등을 사용해보았습니다.

 

library(MASS)
str(anorexia)
head(anorexia)

anorexia$Postwt > anorexia$Prewt
mean(anorexia$Postwt > anorexia$Prewt)

head(mammals)
abs(mammals$brain - mean(mammals$brain)) > 2* sd(mammals$brain)
mean(abs(mammals$brain - mean(mammals$brain)) > 2* sd(mammals$brain))

head(SP500)
diff(SP500)
diff(SP500) > 0
mean(diff(SP500) > 0)

library(vcd)
str(Arthritis)

crosstab <- table(Arthritis$Improved, Arthritis$Treatment)
crosstab
crosstab["Marked", "Treated"]

crosstab <- xtabs(~ Improved + Treatment, data=Arthritis)
crosstab

table(Arthritis$Improved, Arthritis$Treatment, dnn=c("Improved", "Treatment"))

margin.table(crosstab, margin=1)
prop.table(crosstab, 1)

margin.table(crosstab, margin=2)
prop.table(crosstab, 2)

prop.table(crosstab)


addmargins(crosstab, margin=1)
addmargins(crosstab, margin =2)
addmargins(crosstab)

prop.table(prop.table(crosstab, margin=2))
addmargins(prop.table(crosstab, 2), 1)

prop.table(prop.table(crosstab, margin=1))
addmargins(prop.table(crosstab, 1), 2)

library(gmodels)
library(vcd)

str(Arthritis)
CrossTable(Arthritis$Improved, Arthritis$Treatment, prop.chisq=FALSE,
           dnn=c("Improved", "Treatment"))

2주차에는 위의 코드를 작성해보았습니다.

 

str(anorexia)를 통해 데이터셋의 구조를 표시할 수 있습니다.

head(anorexia)는 데이터셋의 일부 행을 표시할 수 있습니다.

> str(anorexia)
'data.frame':	72 obs. of  3 variables:
 $ Treat : Factor w/ 3 levels "CBT","Cont","FT": 2 2 2 2 2 2 2 2 2 2 ...
 $ Prewt : num  80.7 89.4 91.8 74 78.1 88.3 87.3 75.1 80.6 78.4 ...
 $ Postwt: num  80.2 80.1 86.4 86.3 76.1 78.1 75.1 86.7 73.5 84.6 ...
> head(anorexia)
  Treat Prewt Postwt
1  Cont  80.7   80.2
2  Cont  89.4   80.1
3  Cont  91.8   86.4
4  Cont  74.0   86.3
5  Cont  78.1   76.1
6  Cont  88.3   78.1

 

> anorexia$Postwt > anorexia$Prewt
 [1] FALSE FALSE FALSE  TRUE FALSE FALSE FALSE  TRUE FALSE  TRUE FALSE FALSE  TRUE  TRUE  TRUE FALSE
[17] FALSE FALSE FALSE FALSE  TRUE  TRUE  TRUE  TRUE  TRUE FALSE  TRUE  TRUE FALSE FALSE FALSE  TRUE
[33]  TRUE  TRUE FALSE  TRUE  TRUE  TRUE  TRUE FALSE  TRUE FALSE  TRUE FALSE  TRUE FALSE FALSE FALSE
[49]  TRUE  TRUE  TRUE  TRUE  TRUE  TRUE FALSE  TRUE  TRUE  TRUE  TRUE  TRUE FALSE FALSE  TRUE  TRUE
[65] FALSE FALSE  TRUE  TRUE  TRUE  TRUE  TRUE  TRUE
> mean(anorexia$Postwt > anorexia$Prewt)
[1] 0.5833333

이 R 코드는 "anorexia" 데이터셋 내에서 조건을 검사하고 해당 조건을 만족하는 비율을 계산하는 작업을 수행합니다.

anorexia$Postwt > anorexia$Prewt
   이 부분은 "anorexia" 데이터셋 내에서 "Postwt" 열의 값이 "Prewt" 열의 값보다 큰지 여부를 검사합니다.

이 비교 결과는 논리형 벡터(참 또는 거짓 값을 가지는 벡터)로 반환됩니다.

mean(anorexia$Postwt > anorexia$Prewt)
   이 부분은 앞서 얻은 논리형 벡터를 평균내어 조건을 만족하는 비율을 계산합니다.

즉, "Postwt" 열의 값이 "Prewt" 열의 값보다 큰 비율을 계산하게 됩니다.

이 코드를 실행하면 "anorexia" 데이터셋에서 "Postwt"가 "Prewt"보다 큰 경우의 비율이 계산되고 출력됩니다.

 

> head(mammals)
                   body brain
Arctic fox        3.385  44.5
Owl monkey        0.480  15.5
Mountain beaver   1.350   8.1
Cow             465.000 423.0
Grey wolf        36.330 119.5
Goat             27.660 115.0
> abs(mammals$brain - mean(mammals$brain)) > 2* sd(mammals$brain)
 [1] FALSE FALSE FALSE FALSE FALSE FALSE FALSE FALSE FALSE FALSE FALSE FALSE FALSE FALSE FALSE FALSE
[17] FALSE FALSE  TRUE FALSE FALSE FALSE FALSE FALSE FALSE FALSE FALSE FALSE FALSE FALSE FALSE FALSE
[33]  TRUE FALSE FALSE FALSE FALSE FALSE FALSE FALSE FALSE FALSE FALSE FALSE FALSE FALSE FALSE FALSE
[49] FALSE FALSE FALSE FALSE FALSE FALSE FALSE FALSE FALSE FALSE FALSE FALSE FALSE FALSE
> mean(abs(mammals$brain - mean(mammals$brain)) > 2* sd(mammals$brain))
[1] 0.03225806

 

head(mammals)
   이 명령은 "mammals" 데이터셋의 처음 몇 개의 행을 표시하여 초기 데이터를 확인하는 역할을 합니다.

2abs(mammals$brain - mean(mammals$brain)) > 2 * sd(mammals$brain)
   이데이터셋의 각 행마다 논리 조건을 계산합니다.

"brain" 열 값과 "brain" 열의 평균 값 간의 절대 차이가 "brain" 열의 표준 편차의 두 배보다 큰지 여부를 확인합니다.

3mean(abs(mammals$brain - mean(mammals$brain)) > 2 * sd(mammals$brain))
   이 부분은 이전 단계에서 얻은 논리 값들의 평균을 계산합니다.

이는 "brain" 열을 기반으로 데이터셋에서 조건이 TRUE인 행의 비율을 계산하는 것입니다.

> head(SP500)
[1] -0.2588908 -0.8650307 -0.9804139  0.4504321 -1.1856666 -0.6629097
> diff(SP500)
   [1] -0.6061398469 -0.1153832010  1.4308459307 -1.6360987095  0.5227568890  1.0135654321
   [7] -2.8491152472  1.6327811941  1.9722923933 -2.0946040689  1.2218598077  0.0495922055
  [13] -2.9033599933  2.9915052760 -0.7795429082 -0.8658116413  1.1878419134 -0.0984264628
  [19] -0.5006657378  2.5560456373 -1.9592113706  0.7339038434 -0.3650999958 -0.9427644559
  [25]  1.8951628700 -1.4700236480  0.4350105150 -1.2647829484  1.3511318592  0.0142545243
  [31]  0.5650738318 -1.5137855010 -0.7817351060  1.3342059573 -0.5054176338  0.1259951424
  [37]  1.8618176911 -0.9021821086  0.0097350516 -0.2365550163  0.5821954594 -1.3758697734
        .....
 [ reached getOption("max.print") -- omitted 1779 entries ]
> diff(SP500) > 0
   [1] FALSE FALSE  TRUE FALSE  TRUE  TRUE FALSE  TRUE  TRUE FALSE  TRUE  TRUE FALSE  TRUE FALSE
  [16] FALSE  TRUE FALSE FALSE  TRUE FALSE  TRUE FALSE FALSE  TRUE FALSE  TRUE FALSE  TRUE  TRUE
  [31]  TRUE FALSE FALSE  TRUE FALSE  TRUE  TRUE FALSE  TRUE FALSE  TRUE FALSE  TRUE FALSE  TRUE
  [46] FALSE  TRUE FALSE  TRUE  TRUE  TRUE FALSE FALSE  TRUE FALSE  TRUE FALSE  TRUE FALSE FALSE
  [61]  TRUE FALSE  TRUE FALSE  TRUE FALSE  TRUE FALSE FALSE  TRUE FALSE FALSE FALSE  TRUE FALSE
  .....
 [ reached getOption("max.print") -- omitted 1779 entries ]
> mean(diff(SP500) > 0)
[1] 0.4857863


head(SP500)
   "SP500" 데이터셋의 처음 몇 개의 행을 표시하여 초기 데이터를 확인하는 역할을 합니다.

diff(SP500)
"SP500" 데이터의 연속된 값 사이의 차이를 계산합니다. 이를 통해 일일 수익률 또는 주가 변동성과 같은 정보를 얻을 수 있습니다.

diff(SP500) > 0
  "SP500" 데이터의 각 날짜에서 다음 날짜와 비교하여 주가가 상승한 경우에 대한 논리 조건을 계산합니다. 

주가가 상승한 경우 조건은 TRUE가 됩니다.

mean(diff(SP500) > 0)
   이 부분은 이전 단계에서 얻은 논리 값의 평균을 계산합니다.

이것은 "SP500" 데이터셋에서 주가가 상승한 날의 평균 비율을 나타냅니다.

이 코드를 실행하면 "SP500" 데이터셋에서 주가가 상승한 날의 평균 비율을 출력합니다. 

 

> library(vcd)
Loading required package: grid
> str(Arthritis)
'data.frame':	84 obs. of  5 variables:
 $ ID       : int  57 46 77 17 36 23 75 39 33 55 ...
 $ Treatment: Factor w/ 2 levels "Placebo","Treated": 2 2 2 2 2 2 2 2 2 2 ...
 $ Sex      : Factor w/ 2 levels "Female","Male": 2 2 2 2 2 2 2 2 2 2 ...
 $ Age      : int  27 29 30 32 46 58 59 59 63 63 ...
 $ Improved : Ord.factor w/ 3 levels "None"<"Some"<..: 2 1 1 3 3 3 1 3 1 1 ...
>

vcd패키지를 불러오고 Arthritis 데이터셋의 구조를 확인할 수 있죠.

 

> crosstab <- table(Arthritis$Improved, Arthritis$Treatment)
> crosstab
        
         Placebo Treated
  None        29      13
  Some         7       7
  Marked       7      21
> crosstab["Marked", "Treated"]
[1] 21

"Arthritis" 데이터셋을 사용하여 교차표(cross-tabulation)를 생성하고 해당 표를 query하는 작업을 수행합니다.

crosstab <- table(Arthritis$Improved, Arthritis$Treatment)
   -"Arthritis" 데이터셋에서 "Improved" 열과 "Treatment" 열 간의 교차표를 만듭니다.

교차표는 각각 "Improved" 열과 "Treatment" 열의 요소들 사이의 빈도를 보여줍니다.

crosstab
   이 명령은 앞서 생성한 교차표를 출력합니다.

두 범주형 변수("Improved" 및 "Treatment") 간의 관계를 시각화하고 분석하는 데 사용될 수 있습니다.

crosstab["Marked", "Treated"]
   이 명령은 교차표에서 "Marked" 행과 "Treated" 열의 교차 셀 값을 조회합니다.

"Marked" 개선을 보인 환자 중 "Treated" 치료를 받은 환자의 수를 나타냅니다.

따라서 코드의 결과는 "Marked" 개선을 보인 환자 중 "Treated" 치료를 받은 환자의 수를 나타내게 됩니다.

 

> crosstab <- xtabs(~ Improved + Treatment, data=Arthritis)
> crosstab
        Treatment
Improved Placebo Treated
  None        29      13
  Some         7       7
  Marked       7      21

"Arthritis" 데이터셋을 사용하여 교차표(cross-tabulation)를 생성하는 또 다른 방법을 보여줍니다.

xtabs() 함수를 사용하여 교차표를 만듭니다.

1xtabs(~ Improved + Treatment, data=Arthritis)
   "Arthritis" 데이터셋에서 "Improved"와 "Treatment" 두 범주형 변수 간의 교차표를 생성합니다. 

"~" 연산자를 사용하여 교차표를 만들 변수들을 지정합니다.

crosstab
   생성된 교차표를 출력합니다.

교차표에는 "Improved"와 "Treatment"의 조합에 따른 빈도가 표시됩니다.

교차표는 두 범주형 변수 간의 관계를 시각화하고 분석하는 데 사용됩니다. 

예를 들어, "Improved"와 "Treatment" 간의 관련성을 이해하고 특정 조합에 대한 빈도를 확인하는 데 도움이 됩니다.

 

> table(Arthritis$Improved, Arthritis$Treatment, dnn=c("Improved", "Treatment"))
        Treatment
Improved Placebo Treated
  None        29      13
  Some         7       7
  Marked       7      21

주어진 R 코드는 "Arthritis" 데이터셋에서 교차표(cross-tabulation)를 생성하는 또 다른 방법을 보여줍니다.

이 코드에서는 `table()` 함수를 사용하여 교차표를 만들고 열 및 행 이름을 지정합니다.

1table(Arthritis$Improved, Arthritis$Treatment, dnn=c("Improved", "Treatment"))
   "Arthritis" 데이터셋에서 "Improved"와 "Treatment" 두 범주형 변수 간의 교차표를 생성합니다.

`dnn` 매개변수를 사용하여 교차표의 열 및 행 이름을 지정합니다.

이러한 교차표는 두 범주형 변수 간의 관계를 시각화하고 분석하는 데 사용됩니다. 

"Improved" 및 "Treatment" 변수 간의 조합에 따른 빈도를 나타내며, 열 및 행 이름을 사용하여 결과를 더 명확하게 표시할 수 있습니다.

 

> margin.table(crosstab, margin=1)
Improved
  None   Some Marked 
    42     14     28 
> prop.table(crosstab, 1)
        Treatment
Improved   Placebo   Treated
  None   0.6904762 0.3095238
  Some   0.5000000 0.5000000
  Marked 0.2500000 0.7500000

주어진 R 코드는 "Arthritis" 데이터셋에 대한 교차표를 사용하여 행별 합계와 각 행의 비율을 계산하는 데 사용됩니다.

margin.table(crosstab, margin=1)
   - 이 부분은 `crosstab` 교차표에서 각 행의 합계를 계산합니다. 결과를 보면 "None" 개선, "Some" 개선 및 "Marked" 개선 그룹에 대한 관측치 수가 각각 42, 14, 28임을 나타냅니다.

prop.table(crosstab, 1)
   - 이 부분은 `crosstab` 교차표를 사용하여 각 행의 비율을 계산합니다. 결과를 보면 "None" 개선 그룹에서 "Placebo"와 "Treated" 치료 그룹 각각의 비율이 각각 0.6904762 및 0.3095238임을 나타냅니다. "Some" 개선 그룹 및 "Marked" 개선 그룹에서도 비슷한 방식으로 비율이 계산됩니다.

교차표의 행별 합계와 각 행의 비율을 계산하면 데이터의 특정 부분에 대한 통계적 정보를 얻을 수 있으며,

범주형 변수 간의 관계를 더 잘 이해할 수 있게 됩니다.

 

> margin.table(crosstab, margin=2)
Treatment
Placebo Treated 
     43      41 
> prop.table(crosstab, 2)
        Treatment
Improved   Placebo   Treated
  None   0.6744186 0.3170732
  Some   0.1627907 0.1707317
  Marked 0.1627907 0.5121951


margin.table(crosstab, margin=2)
  `crosstab` 교차표에서 각 열의 합계를 계산합니다. 

결과를 보면 "Placebo"와 "Treated" 치료 그룹에 대한 관측치 수가 각각 43과 41임을 나타냅니다.

prop.table(crosstab, 2)
   `crosstab` 교차표를 사용하여 각 열의 비율을 계산합니다.

결과를 보면 "Placebo"와 "Treated" 치료 그룹 내에서 "None," "Some," 및 "Marked" 개선 그룹의 비율을 나타냅니다.

예를 들어, "Placebo" 그룹에서 "None" 개선 그룹의 비율은 0.6744186이고, "Treated" 그룹에서 "Marked" 개선 그룹의 비율은 0.5121951입니다.

> prop.table(crosstab)
        Treatment
Improved    Placebo    Treated
  None   0.34523810 0.15476190
  Some   0.08333333 0.08333333
  Marked 0.08333333 0.25000000

"Arthritis" 데이터셋에서 생성한 교차표(`crosstab`)의 전체 비율을 계산합니다. 

이를 통해 각 "Improved" 그룹과 "Treatment" 그룹의 상대적 비율을 확인할 수 있습니다.


"None" 개선 그룹에서 "Placebo" 치료 비율은 약 0.345, "Treated" 치료 비율은 약 0.155입니다.

"Some" 개선 그룹과 "Marked" 개선 그룹에서도 "Placebo" 및 "Treated" 치료 비율이 계산되며,

각 그룹 간의 비율을 확인할 수 있습니다.

 

> addmargins(crosstab, margin=1)
        Treatment
Improved Placebo Treated
  None        29      13
  Some         7       7
  Marked       7      21
  Sum         43      41
> addmargins(crosstab, margin =2)
        Treatment
Improved Placebo Treated Sum
  None        29      13  42
  Some         7       7  14
  Marked       7      21  28
> addmargins(crosstab)
        Treatment
Improved Placebo Treated Sum
  None        29      13  42
  Some         7       7  14
  Marked       7      21  28
  Sum         43      41  84

"Arthritis" 데이터셋에서 생성한 교차표(`crosstab`)에 대한 합계(margins)를 추가하는 작업을 수행합니다.

addmargins(crosstab, margin=1)
교차표(`crosstab`)에 대한 행 합계를 추가합니다.

"None," "Some," 및 "Marked" 개선 그룹 각각의 합계와 전체 합계가 표시됩니다.

addmargins(crosstab, margin=2)
교차표(`crosstab`)에 대한 열 합계를 추가합니다. 

"Placebo"와 "Treated" 치료 그룹 각각의 합계와 전체 합계가 표시됩니다.

addmargins(crosstab)
교차표(`crosstab`)에 대한 행 합계와 열 합계를 모두 추가합니다.

"None," "Some," 및 "Marked" 개선 그룹의 합계, "Placebo"와 "Treated" 치료 그룹의 합계, 그리고 전체 합계가 표시됩니다.

이러한 합계는 데이터의 특정 부분 및 전체에 대한 정보를 제공하며, 교차표의 셀들 간의 상대적 관계를 이해하는 데 도움이 됩니다.

 

> prop.table(crosstab, margin=2)
        Treatment
Improved   Placebo   Treated
  None   0.6744186 0.3170732
  Some   0.1627907 0.1707317
  Marked 0.1627907 0.5121951
> addmargins(prop.table(crosstab, 2), 1)
        Treatment
Improved   Placebo   Treated
  None   0.6744186 0.3170732
  Some   0.1627907 0.1707317
  Marked 0.1627907 0.5121951
  Sum    1.0000000 1.0000000
> addmargins(prop.table(crosstab, 1), 2)
        Treatment
Improved   Placebo   Treated       Sum
  None   0.6904762 0.3095238 1.0000000
  Some   0.5000000 0.5000000 1.0000000
  Marked 0.2500000 0.7500000 1.0000000

"Arthritis" 데이터셋에서 생성한 교차표(`crosstab`)의 비율을 계산하고 합계(margins)를 추가하는 작업을 수행합니다.

prop.table(crosstab, margin=2)
교차표의 열 기준으로 비율을 계산합니다. 

각 "Improved" 그룹 내에서 "Placebo"와 "Treated" 치료 그룹의 비율이 계산됩니다.

addmargins(prop.table(crosstab, 2), 1)
교차표의 열 기준 비율에 대한 행 합계를 추가합니다. 

각 "Improved" 그룹 내에서 "Placebo"와 "Treated" 치료 그룹의 비율과 그 합계가 표시됩니다.

addmargins(prop.table(crosstab, 1), 2)
교차표의 행 기준 비율에 대한 열 합계를 추가합니다.

"Placebo"와 "Treated" 치료 그룹 내에서 "Improved" 그룹의 비율과 그 합계가 표시됩니다.

이러한 비율과 합계를 통해 데이터의 다양한 관점에서 범주형 변수 간의 관계를 더 자세히 이해할 수 있습니다.

> library(gmodels)
> CrossTable(Arthritis$Improved, Arthritis$Treatment, prop.chisq=FALSE,
+            dnn=c("Improved", "Treatment"))

 
   Cell Contents
|-------------------------|
|                       N |
|           N / Row Total |
|           N / Col Total |
|         N / Table Total |
|-------------------------|

 
Total Observations in Table:  84 

 
             | Treatment 
    Improved |   Placebo |   Treated | Row Total | 
-------------|-----------|-----------|-----------|
        None |        29 |        13 |        42 | 
             |     0.690 |     0.310 |     0.500 | 
             |     0.674 |     0.317 |           | 
             |     0.345 |     0.155 |           | 
-------------|-----------|-----------|-----------|
        Some |         7 |         7 |        14 | 
             |     0.500 |     0.500 |     0.167 | 
             |     0.163 |     0.171 |           | 
             |     0.083 |     0.083 |           | 
-------------|-----------|-----------|-----------|
      Marked |         7 |        21 |        28 | 
             |     0.250 |     0.750 |     0.333 | 
             |     0.163 |     0.512 |           | 
             |     0.083 |     0.250 |           | 
-------------|-----------|-----------|-----------|
Column Total |        43 |        41 |        84 | 
             |     0.512 |     0.488 |           | 
-------------|-----------|-----------|-----------|

`gmodels` 패키지의 `CrossTable` 함수를 사용하여 "Arthritis" 데이터셋에서 범주형 변수인 "Improved"와 "Treatment" 간의 교차표를 생성한 결과를 나타냅니다. 이 표는 각 셀에 관측치 수, 행 및 열 백분율을 표시하여 범주 간의 관계를 요약합니다.

교차표 정리

표의 왼쪽 부분은 "Improved"의 범주 ("None," "Some," "Marked")를 나타내고,

위쪽 부분은 "Treatment"의 범주 ("Placebo," "Treated")를 나타냅니다.

각 셀에는 해당 셀의 관측치 수가 표시됩니다.
"N / Row Total" 열은 각 행에서의 해당 범주의 비율을 나타냅니다.
"N / Col Total" 열은 각 열에서의 해당 범주의 비율을 나타냅니다.
"N / Table Total" 열은 전체 테이블에서 해당 범주의 비율을 나타냅니다.
전체 표에는 84개의 관측치가 있음을 나타냅니다.

이 교차표를 통해 "Improved"와 "Treatment" 간의 관계를 시각화하고, 각 범주의 비율을 비교할 수 있습니다.


즐거운 연휴 보내세요.

반응형

'🌐 R language' 카테고리의 다른 글

R - 3주차 내용정리  (2) 2023.10.16
R - 1주차 내용정리  (0) 2023.09.16
R 언어 - RTOOLS43 설치하기  (0) 2023.09.14
R 스튜디오 인터페이스 설명  (0) 2023.09.08
R STUDIO 설치하기  (0) 2023.09.08
    '🌐 R language' 카테고리의 다른 글
    • R - 3주차 내용정리
    • R - 1주차 내용정리
    • R 언어 - RTOOLS43 설치하기
    • R 스튜디오 인터페이스 설명
    나는조난
    나는조난
    조난 블라블라입니다. 철도관련, 컴퓨터관련, 일상 블로그 입니다.

    티스토리툴바