기본 콘텐츠로 건너뛰기

10월, 2022의 게시물 표시

[ML] 결정트리(Decision Tree) 모델

R 비모수적 검정(nonparametic test)

내용 Wilcoxon test(두 그룹의 비교) 3 그룹 이상의 비교 비모수적 검정(nonparametic test) t-검정 또는 ANOVA의 정규분포를 따르다는 등의 모수적 가정을 충족할 수 없는 경우 비모수적 접근 방식으로 전환할 수 있습니다. 예를 들어, 결과 변수가 본질적으로 심하게 치우치거나 순서가 있는 경우 Wilcoxon-Tesst과 같은 비모수적 검정 방법을 사용할 수 있습니다. 구분 모수검정(parametic Test) 비모수검정(nonparametic test) 가정 정규분포 (0) 정규분포(x), 집단의 분포를 모름 통계량 평균 (mean) 중앙값 (median) 1 sample 1 sample t-test 1 sample Wilcoxon signed rank test 2 samples 2 sample t-test Wilcoxon rank sum test, Mann-Whitney U-test paired 2-sample t-test Wilcoxon signed rank test more than 2 samples one-way ANOVA Kruskal-Wallis test Wilcoxon test(두 그룹의 비교) Wilcoxon 검정은 모집단의 데이터들이 정규분포를 따른다고 가정할 수 없거나 분포를 알수 없을 경우 중간값(median)의 유의성을 검정하기 위해 실시합니다. 또한 t-test의 짝비교와 같이 두 그룹의 중간값의 차이가 통계적으로 유의한가를 결정하기 위해 사용합니다. 이 비모수분석 방법이므로 t-test에 비해 전제 조건이 작지만 각 데이터의 독립성은 가정됩니다. 중심극한 정리에 의해 Wilcoxon test의 통계량 w는 정규분포에 부합한다고 가정할 수 있습니다. 이 가정은 통계량의 유의성 검정을 가능하게 합니다. 통계량 w는 평균이 0이고 샘플 크기 n을 기준으로 계산하는 분산은 n(n+1)(2n+1) / 6 이므로 귀무가설에서 제시한 중간값을 z s

R t-검정

내용 Independence t-test Dependebt r-test(짝비교) t-tests 두 그룹을 비교하는 연구에서 사용합니다. 범주형 변수의 경우 χ 2 분석이나 상관성 분석으로 진행할 수 있습니다. MASS 패키지와 함께 배포되는 UScrime 데이터 세트를 사용합니다. 여기에는 1960년 미국 47개 주에서 범죄율에 대한 처벌 제도의 영향에 대한 정보가 포함되어 있습니다. 관심 결과 변수는 Prob(수감 가능성), U1(14~24세 도시 남성의 실업률) 및 U2( 35-39세 도시 남성의 실업률). 범주형 변수 So(남부 주에 대한 지표 변수)는 그룹화 변수로 사용됩니다. library(MASS) head(UScrime, 2) M So Ed Po1 Po2 LF M.F Pop NW U1 U2 GDP Ineq Prob Time y 1 151 1 91 58 56 510 950 33 301 108 41 394 261 0.084602 26.2011 791 2 143 0 113 103 95 583 1012 13 102 96 36 557 194 0.029599 25.2999 1635 aggregate(Prob~So, data=UScrime, length) So Prob 1 0 31 2 1 16 Independence t-test 남부에서 범죄를 저지르면 투옥될 가능성이 더 높습니까? 관심 대상의 비교는 변수 So와 Prob입니다. 독립 t-검정은 두 모집단 평균이 같다는 가설을 검정하는 데 사용할 수 있습니다. 여기에서는 두 그룹이 독립적이고 데이터가 정규 모집단에서 추출되었다고 가정합니다. t 검정은 다음의 함수를 적용합니다. t.test(y~x, data) y는 숫자이고 x는 이분형 변수입니다. t.test(y1, y2) y1, y2 모두 숫자형 벡터로서 각 그룹의 결과변수 data는 변수들을 포함하는 matrix 또는 dataframe R의

R 상관성(correlation)과 상관분석

내용 공분산과 상관계수 PEARSON, SPEARMAN 및 KENDALL 상관 관계 부분상관(Partial correlations) 상관 분석 상관성(correlations)과 상관분석 상관 계수는 양적 변수(quantative variables) 간의 관계를 설명하는 데 사용됩니다. ± 기호는 관계의 방향을 나타내고 크기는 관계의 강도를 나타냅니다(관계가 없는 경우 0에서 완벽하게 예측 가능한 관계인 경우 1). 예를 들어 두 변수 x1과 x2에서 x1의 변화에 따라 x2가 변화한다면 두 변수는 서로 상관성이 존재합니다. 이 상관성의 정도를 나타내는 것이 상관계수이며 이는 두 변수의 공분산(covariance)으로부터 계산됩니다. 공분산과 상관계수 공분산은 각 변수의 편차들의 곱에 대한 기대값입니다. $$\begin{equation} \text{Cov}(Y_1, Y_2)=E[(Y_1-\mu_1)(Y_2-\mu_2)] \end{equation}$$ $$\begin{align}&\begin{aligned}\text{Cov}(Y_1, Y_2)&=E[(Y_1-\mu_1)(Y_2-\mu_2)]\\&=E(Y_1Y_2-Y_1\mu_2-\mu_1 Y_2+\mu_1 \mu_2)\\&= E(Y_1Y_2)-E(Y_1)\mu_2-\mu_1E(Y_2)+\mu_1 \mu_2\\&=E(Y_1Y_2)-\mu_1 \mu_2\end{aligned} \\& \because\; E(Y_1)=\mu_1, \quad E(Y_2)=\mu_2\end{align}$$ 두 변수간의 공분산의 절대값의 증가에 따라 선형 의존성은 증가하며 양의 공분산은 정상관계, 음의 값은 역상관계를 의미합니다. 공분산이 0이라면 두 변수 사이의 선형의존성은 없습니다. 그러나 각 변수의 측정척도가 다른 경우 선형성에 대한 즉, 두 변수의 의존성에 대해 공분산을 절대적인 척도로 사용하는 것은 어렵습니다. 결과적으로 공분산만으로 선형성의 정도를

R 독립성 검정과 변수 간의 연관성

내용 독립성 검정(Test of Independence) chi-square 검정 Fisher's exact test Cochran-Mantel-Haenszel 검정 연관성의 측정 파이계수 분할계수(Contigency Coefficiency) Cramer's V 독립성 검정과 변수 간의 연관성 독립성 검정(Test of Independence) 다양한 통계 방법에서의 전제조건이 데이터들의 독립성에 대한 것입니다. R은 범주형 변수의 독립성을 테스트하는 여러 방법을 제공합니다. 세 가지 검정은 카이제곱 독립성 검정, Fisher 정확 검정 및 Cochran-Mantel-Haenszel 검정에 대해 알아봅니다. chi-square 검정 chisq.test() 두 변수(2-way table)에 대해 독립성 검정을 실시 귀무가설: 두 변수는 독립입니다. library(vcd) twoTable<-xtabs(~Treatment+Improved, data=Arthritis) q<-chisq.test(twoTable); q Pearson's Chi-squared test data: twoTable X-squared = 13.055, df = 2, p-value = 0.001463 위 chisq.test() 객체는 다음과 같은 속성을 포함합니다. attributes(q) $names [1] "statistic" "parameter" "p.value" "method" "data.name" "observed" [7] "expected" "residuals" "stdres" $class [1] "htest

R 빈도표와 교차표

내용 one-awy table two-way table 다차원 테이블 빈도표와 교차표 독립성 테스트, 연관 측정 및 결과를 그래픽으로 표시하는 방법과 함께 범주형 변수의 빈도 및 분할표를 살펴보겠습니다. vcd 및 gmodels 패키지의 기능과 함께 기본 설치의 기능을 사용할 것입니다. 다음 예에서 A, B 및 C가 범주형 변수를 나타낸다고 가정합니다. 이 섹션의 데이터는 vcd 패키지에 포함된 관절염 데이터 세트에서 가져옵니다. library(vcd) head(Arthritis) ID Treatment Sex Age Improved 1 57 Treated Male 27 Some 2 46 Treated Male 29 None 3 77 Treated Male 30 None 4 17 Treated Male 32 Marked 5 36 Treated Male 46 Marked 6 23 Treated Male 58 Marked 위 데이터셋의 변수 age를 제외하고 모두 범주형변수(categorical variable)입니다. 각 변수의 수준은 다음과 같습니다. Variable Treatment Sex Impoved level Placebo, Treated Female, Male None, Some, Marked R은 빈도표와 교차표를 작성하는 몇가지 방법을 제공합니다. Function Description table(var1, var2, …, varN) N개의 범주형 변수(요인, factor)에서 N-방향 교차표(분할표)를 생성합니다. xtabs(formula, data) formula과 matrix 또는 data frame을기반으로 N-way 분할표를 만듭니다. prop.table(table, margins) 합에 대한 각 성분의 비율을 나타냅니다. margins=1은 행합, 2는 열합 margin.table(table

R 기술통계

내용 기술통계(descriptive statistics) 그룹화에 의한 기술통계 패키지 함수 적용 기본통계 기술통계(descriptive statistics) mtcars vars<-c('mpg', 'hp', 'wt') mt1<-mtcars[vars] head(mt1) #1~6행을 반환 mpg hp wt Mazda RX4 21.0 110 2.620 Mazda RX4 Wag 21.0 110 2.875 Datsun 710 22.8 93 2.320 Hornet 4 Drive 21.4 110 3.215 Hornet Sportabout 18.7 175 3.440 Valiant 18.1 105 3.460 summary(mt1)#요약통계량을 반환 mpg hp wt Min. :10.40 Min. : 52.0 Min. :1.513 1st Qu.:15.43 1st Qu.: 96.5 1st Qu.:2.581 Median :19.20 Median :123.0 Median :3.325 Mean :20.09 Mean :146.7 Mean :3.217 3rd Qu.:22.80 3rd Qu.:180.0 3rd Qu.:3.610 Max. :33.90 Max. :335.0 Max. :5.424 apply(객체, 1 or 2, FUN)는 객체의 행 또는 열에 함수를 적용합니다. 1: row, 2:column sapply(객체, FUN)는 객체의 각 열에 함수를 적용합니다. 위 함수에서 객체의 결측치를 제외하기 위해 함수에 인자 na.omit=True를 첨가합니다. 위 함수들의 인수중 FUN에 사용되는 전형적인 함수들은 다음과 같

R 데이터의 집계 및 재구성

내용 전치(transpose) 데이터의 집계 reshape 패키지 melting casting 데이터의 집계 및 재구성(aggregation and restructuring) R은 데이터를 집계하고 재구성하기 위한 여러 가지 강력한 방법을 제공합니다. 데이터를 집계할 때 관찰 그룹을 해당 관찰을 기반으로 하는 요약 통계로 바꿉니다. 데이터를 재구성할 때 데이터가 구성되는 방식을 결정하는 구조(행 및 열)를 변경합니다. 이 섹션에서는 이러한 작업을 수행하는 다양한 방법에 대해 설명합니다. 다음 두 하위 섹션에서는 R의 기본 설치에 포함된 mtcars 데이터 프레임을 사용할 것입니다. Motor Trend Magazine(1974)에서 추출한 이 데이터 세트는 설계 및 성능 특성(실린더 수, 배기량, 마력, mpg 등) 34대용. 데이터세트에 대한 자세한 내용은 help(mtcars)를 참조하세요. 전치(transpose) 전치는 데이터의 구조 즉, 행과 열을 교환하는 것입니다. 함수 t() 를 사용합니다. cars<-mtcars[1:5, 1:4] cars mpg cyl disp hp Mazda RX4 21.0 6 160 110 Mazda RX4 Wag 21.0 6 160 110 Datsun 710 22.8 4 108 93 Hornet 4 Drive 21.4 6 258 110 Hornet Sportabout 18.7 8 360 175 t(cars) MazdaRX4 Mazda RX4 Wag Datsun 710 Hornet 4 Drive Hornet Sportabout mpg 21 21 22.8 21.4 18.7 cyl

R 제어구문(Control flow)과 사용자정의함수

내용 반복문 for 문 while 문 조건문 if ~ else ifelse switch 사용자 정의 함수(user-written function) 제어구문(Control flow)과 사용자정의함수 일반적으로 R 프로그램의 명령문은 프로그램의 상단에서 하단으로 순차적으로 실행됩니다. 그러나 특정 조건이 충족되는 경우에만 다른 명령문을 실행하면서 일부 명령문을 반복적으로 실행할 수 있습니다. 이것이 제어 흐름 구조가 들어오는 곳입니다. 이 제어흐름은 조건을 판단하기 위한 조건문과 유사한 명령을 반복적으로 실행할 수 있는 반복문이 있습니다. R에서 명령을 전달하는 구문을 크게 구분하면 다음과 같습니다. statement: 단일 문과 복합문이 있습니다. 여러 문들을 같이 입력하는 복합문의 경우 중간괄호('{ }')로 묶여있거나 세미콜론(';')으로 구분합니다. cond: true 또는 false로 확인되는 표현식(expression)입니다. expr: 숫자 또는 문자열로 평가되는 명령문입니다. seq: 일련의 숫자 또는 문자열입니다. 반복문 유사한 명령을 반복하는 문으로 for문과 while 문을 사용합니다. for 문 for (변수 in seq) statement seq에 포함된 모든 요소들을 사용할 때까지 statement가 지속됩니다. for (i in 1:5) print(i) [1] 1 [1] 2 [1] 3 [1] 4 [1] 5 while 문 while (cond) statement cond 즉, 조건이 FALSE가 될 때까지 statement가 지속됩니다. i<-0 while(i < 5) { print(i) i<-i+1 } [1] 0 [1] 1 [1] 2 [1] 3 [1] 4 이러한 반복문은 apply 계열의 함수들로 대체할 수 있으며 규모가 큰 데이터의 경우 ap

R apply, lapply, sapply 그리고 tapply함수

Applying functions 자료에서 원자별, 그룹별로 함수등을 적용할 경우 apply 계열의 함수를 사용합니다. 예를 들어 행렬, 배열, 데이터 프레임의 지정된 차원에 함수를 적용하거나 리스트의 각 인덱스별로 함수등을 적용할 경우 control 문을 대신하여 사용합니다. 이 계열의 함수들의 기본 목적은 같지만 입력과 출력의 데이터 형태에서 차이를 보입니다. apply(x, margin, Fun, ...) margin: 차원인덱스, Fun: 적용할 함수 입력: array, dataframe, 출력: vector, list, array lapply(x, Fun, ...) 입력: list, vector, dataframe, 출력: list sapply(x, Fun, ...) 입력: list, vector, dataframe, 출력: vector, array lapply()와 동일하지만 벡터나 배열을 출력 tapply(x, index, Fun, ...) index: factor를 포함한 list 입력: list, vector, factor, dataframe, 출력: vector, array set.seed(10) da<-round(matrix(runif(24), 6, 4), 3) colnames(da)<-c('one', 'two', 'three', 'four') rownames(da)<-paste('case', 1:6, sep=' ') head(da, 2) one two three four case 1 0.507 0.275 0.114 0.399 case 2 0.307 0.272 0.596 0.836 행기준의 평균 apply(da, 1, mean) case 1 case 2 case 3 case 4 case 5 case 6 0.32375 0.50275 0.56650 0.54175 0.39

R 수학과 통계등의 내장함수들

내용 함수들 수학함수 통계함수 확률함수 문자함수 유용한 함수들 데이터 관리를 위한 함수들과 제어문 함수들 수학함수 수학함수 함수 설명 abs(x) 절대값반환 abs(-4) → 4. sqrt(x) 제곱근, sqrt(25) → 5 &eqiv; 25^(0.5). ceiling(x) x보다 작지않은 가장 작은 정수 ceiling(3.21) → 4 floor(x) x보다 크지않은 가장 큰 정수 floor(3.21) → 3 trunc(x) x의 값 중 숫점 이하의 값을 버림으로서 형성된 정수 trunc(3.21) → 3 round(x, digits=n) x의 지정한 자릿수+1 에서 반올림 round(3.475, digits=2) → 3.48. signif(x, digits=n ) x를 지정된 유효 자릿수로 반올림 signif(3.475, digits=2) → 3.5. cos(x) , sin(x) , tan(x) Cosine, sine, and tangent cos(2) → -0.416. acos(x) , asin(x) , atan(x) 삼각함수의 역함수, arc-cosine, arc-sine, and arc-tangent acos(-0.416) → 2. cosh(x) , sinh(x) , tanh(x) 쌍곡선 함수인 hyperbolic cosine, sine, and tangent sinh(2) → 3.627. acosh(x) , asinh(x) , atanh(x) Hyperbolic arc-cosine, arc-sine, and arc-tangent asinh(3.627) → 2. log(x, base=n) 밑수가 a인 로그함수 log(10, 2) = log(10)/log(2) \→ 3.321928

R caracas패키지를 이용한 극한, 미분, 적분 (R에서 sympy 사용하기)

symbol과 subs() 극한(limit)을 사용하여 자연상수 발견하기 미분과 적분 식으로 값 결정 caracas패키지를 이용한 극한, 미분, 적분 symbol과 subs() 문자 s1, s2 심벌(기호)로 선언하기 위해 def_sym() 를 사용합니다. 이 함수는 symbol() 함수와 같습니다. 그러나 그 사용은 약간의 차이가 있습니다. def_sym(s1, s2);s1 #s1, s2를 선언 [caracas]: s1 s2 [caracas]: s2 str(s1) List of 1 $ pyobj:s1 - attr(*, "class")= chr "caracas_symbol" s3<-s1*s2; s3 #기호 s1, s2의 연산에 의해 선언된 기호 [caracas]: s1*s2 str(s3) #attr(*, "class")= chr "caracas_symbol" List of 1 $ pyobj:s1*s2 - attr(*, "class")= chr "caracas_symbol" subs() 함수는 기호를 다른 문자나 숫자로 대체합니다. subs(식 또는 심벌, 'caracas_symbol',대체할 문자 또는 숫자) 또는 subs('caracas_symbol',대체할 문자 또는 숫자) %>%: pipe operator는 R에서 동일한 데이터를 대상으로 연속으로 작업하게 해주는 연산자입니다. s4<-s3 %>%subs("s1", "u+v") %>% subs("s2", "u-v"); s4 [caracas]: (u - v)*(u + v) s5<-expand(s4); s5 [caracas]: 2 2 u - v tex(s5)

R list(리스트)

List 목록(list)은 R 데이터 유형 중 가장 복잡한 유형입니다. 기본적으로 목록은 개체(구성 요소)의 정렬된 컬렉션입니다. 목록을 사용하면 하나의 이름으로 다양한(관련되지 않은) 개체를 수집할 수 있습니다. 예를 들어 목록에는 벡터, 행렬, 데이터 프레임 및 기타 목록의 조합이 포함될 수 있습니다. list() 함수를 사용하여 목록을 만듭니다. t<-'List' h<-c(25, 26, 18, 39) m<-matrix(1:10, nrow=5) s<-c('one', 'two', 'three') list1<-list(title=t, age=h, m, s) list1 $title [1] "List" $age [1] 25 26 18 39 [[3]] [,1] [,2] [1,] 1 6 [2,] 2 7 [3,] 3 8 [4,] 4 9 [5,] 5 10 [[4]] [1] "one" "two" "three" list는 요소들은 '$요소이름' 또는 이중 대괄호 내에 요소의 인덱스 또는 요소이름을 사용하여 호출할 수 있습니다. list1$title [1] "List" list1[[3]] [,1] [,2] [1,] 1 6 [2,] 2 7 [3,] 3 8 [4,] 4 9 [5,] 5 10 list1[[3]][1] [1] 1 list1[['age']] [1] 25 26 18 39 list의 중요성 간단한 방법으로 서로 다른 정보를 구성하고 기억할 수 있습니다. 많은 R 함수의 결과는 목록을 반환합니다.

R factor(요인)

Factor 변수는 명목형(nominal), 순서형(ordinal) 또는 연속형(continumous)으로 설명할 수 있습니다. 명목 변수는 암시적 순서 없이 범주형입니다. 당뇨병(Type1, Type2)은 명목 변수의 예입니다. 데이터에서 Type1이 1로 코딩되고 Type2가 2로 코딩되더라도 순서를 의미하지 않습니다. 순서 변수는 순서를 의미하지만 양은 의미하지 않습니다. 상태(나쁨, 개선됨, 우수함)는 각각의 순서를 지정할 수 있지만 그 순서간의 차이는 명확하지 않습니다. 연속 변수는 특정 범위 내에서 임의의 값을 취할 수 있으며 순서와 양이 모두 암시됩니다. 연령(년)은 연속 변수이며 14.5 또는 22.8 및 그 사이의 값들을 사용할 수 있습니다. 15세인 사람이 14세인 사람보다 한 살 많다는 것을 알고 있습니다. R의 범주형 및 순서형 변수를 요인(factor)이라고 합니다. 요인은 데이터를 시각적으로 분석하고 표시하는 방법을 결정하기 때문에 R에서 중요하며 R의 factor() 함수는 범주형(순서형을 포함) 값을 [1... k] 범위의 정수 벡터로 저장하고(여기서 k는 명목 변수의 고유값 수) 문자열의 내부 벡터(원래 값) 이 정수에 매핑됩니다. 다음 벡터 diabetes는 두 개의 범주로 목록화 할 수 있습니다. 이렇게 데이터의 고유값들을 수준(level)이라고 합니다. factor()함수는 벡터의 값들과 level을 함께 반환합니다. diabetes<-c('type1', 'type2', 'type1', 'type1') diafact<-factor(diabetes); diafact [1] type1 type2 type1 type1 Levels: type1 type2 순서형 변수의 경우 인자 ordered=TRUE 를 첨가하여 각 목록의 순서를 지정합니다. 이 경우 순서는 기본적으로 알파벳 순으로 지정됩니다. 예를 들어 다음의 경우 excellent=1, improve