#랜덤샘플링


## 첫번째 파라미터 : 대상 dataframe
## 두번째 파라미터 : 추출 비율
sample_frac(reserve_table,0.5)


#비율이 아닌 건수로 랜덤 샘플링 할 때
sample_n(reserve_table,100)

 

 

 

#랜덤샘플링2

#고객 단위의 분석에서 예약 데이터 기준으로 샘플링을 할 경우 문제가 발생함
##해결책1 : 예약레코드를 고객 단위로 요약한 후 샘플링(단점 : 제외될 데이터도 일단 요약하는 절차가 필요함)
##해결책2 : 예약 테이블의 고객ID 기준으로 랜덤 샘플링 후 샘플링한 고객ID만 예약데이터에서 추출

#reserve_table에서 고객ID만 뽑아서 중복 제거하여 벡터를 만듬
all_id <- unique(reserve_table$customer_id)

reserve_table %>%
  #sample함수를 이용하여 고객ID에서 50% 샘플링해 추출대상 ID를 얻는다

  #추출 대상 ID와 일치하는 행을 filter 함수로 추출한다
  filter(customer_id %in% sample(all_id, size=length(all_id) * 0.5))

Posted by 소율소희아빠

1. 2020/01/06 - [IT/R (데이터전처리대전 따라하기)] - R로 CSV 데이터 읽기

2. 2020/01/06 - [IT/R (데이터전처리대전 따라하기)] - R 데이터 행,열 지정 추출

#조건(where)에 따른 데이터 추출

#reserve_table에서 checkin_date 기준 2016-10-12 ~ 2016-10-13 데이터 추출
reserve_table %>%
  
  ##as.Date 함수로 문자열 -> 날짜형 변환
  filter(between(as.Date(checkin_date),
                 as.Date('2016-10-12'), as.Date('2016-10-13')))

 

#이 코드는 왜 에러나지..?
reserve_table %>%
  filter(between(checkin_date,'2016-10-12','2016-10-13'))

'IT > R (데이터전처리대전 따라하기)' 카테고리의 다른 글

R 분산, 표준편차 구하기  (0) 2020.01.08
R 데이터 요약하기  (0) 2020.01.08
R 데이터샘플링  (0) 2020.01.07
R 데이터 행,열 지정 추출  (0) 2020.01.06
R CSV 데이터 읽기  (0) 2020.01.06
Posted by 소율소희아빠

이전글 : 2020/01/06 - [IT/R] - R로 CSV 데이터 읽기

#행,렬 지정하여 추출하기1

reserve_table[10:20,c('reserve_id','hotel_id','customer_id'
                           ,'reserve_datetime','checkin_date'
                           ,'checkin_time','checkout_date')]
# R DataFrame 타입인 reserve_table 내 컬럼을 지정하여 추출
## 첫번째 배열 : 행 추출(미지정시 전체행), 10:20은 10행 ~ 20행까지
## 두번째 배열 : 컬럼지정

 

#행,렬 지정하여 추출하기2

# dplyr 패키지의 파이프를 통해 DataFrame에서 지정 한 열 추출
reserve_table %>%
  
  #select 함수를 통해 열을 지정 할 수 있음
  select(reserve_id, hotel_id,customer_id,reserve_datetime,checkin_date
         ,checkout_date) %>%
  
  #dataframe으로 변환
  as.data.frame()
  ## dplyr로 추출하게 될 경우 dplyr의 dataframe으로 반환됨
  ## R의 dataframe과 기본적인 호환에는 문제 없긴함

'IT > R (데이터전처리대전 따라하기)' 카테고리의 다른 글

R 분산, 표준편차 구하기  (0) 2020.01.08
R 데이터 요약하기  (0) 2020.01.08
R 데이터샘플링  (0) 2020.01.07
R 조건(where절)에 따른 데이터 추출  (0) 2020.01.07
R CSV 데이터 읽기  (0) 2020.01.06
Posted by 소율소희아빠

데이터전처리대전 Data다운로드

library(tidyverse)
#tidyverse 패키지

reserve_table <- read.csv('data/reserve.csv',fileEncoding='UTF-8',header = TRUE)
read.csv 함수를 통해 csv 파일 read 후 reserve_table 변수에 data.frame 오브젝트 할당
  ## 첫번째 파라미터 : 파일경로
  ## 두번째 파라미터 : file Encoding
  ## 세번째 파라미터 : 첫번째 행 Header 여부

reserve_table
#data 확인

Posted by 소율소희아빠

nc -z host port

 ex) nc -z 127.0.0.0 80

포트 확인되면 아래 text 출력 확인안되면 아무것도 안뜸

connection to 127.0.0.0 80 port [tcp/http] succeeded!

'IT > 리눅스' 카테고리의 다른 글

리눅스 포트 사용중인 프로세스 확인하기  (0) 2018.11.08
Posted by 소율소희아빠

포트사용중인 프로세스 id 확인하기

[test@test ~]$ netstat -anp | grep 8032

   >   tcp     0         0        :::8032         :::*        LISTEN         2265/java


    ▲ 2265 process id 확인


[test@test ~]$ fuser  -n tcp 8032

   > 8032/tcp:                 2265

   ▲ 2265 process id 확인


ps -ef | grep 2265

  > process 확인

'IT > 리눅스' 카테고리의 다른 글

리눅스 원격서버 포트 확인  (0) 2020.01.04
Posted by 소율소희아빠

2018. 4. 17. 08:51 IT/R

이항분포의 정규근사

1. 이항분포의 정규근사


   이항분포는 성공확률이 p인 베르누이 시행을 n번 반복한 경우 성공횟수가 가지는 확률분포

   이항분포의 특징은 n이 증가함에 따라 분포의 형태가 점차 대칭에 가까워지고 종모양을 이루게 됨 


이와같은 경향은 n이 커짐에 따라 더욱 확실하게 드러남, 실제로 이항분포는 n이 증가함에 따라 근사적으로 정규분포를 따르게 됨. 이때 정규분포의 평균과 분산은 이항분포에서와 일치하여야 하므로 다음과 같음



이항분포의 정규근사

확률변수 X가 성공 횟수를 나타내는 이산형 확률변수이고 X~ Bin(n,p) 일 때, np나 n(1-p)가 모두 충분히 클 경우( 보통 10 이상)에 확률변수 X는 근사적으로 다음의 정규분포를 따르게 된다

 




1) 이항분포의 정규근사확률을 활용한 R프로그램


확률변수 X가 n=150, p=0.6의 이항분포를 따른다고 하자. 이러한 확률변수 X가 82이상 102 미만일 확률은?


pbinom 함수를 이용하여 이항분포에서 직접적으로 계산한 확률(0.8945357)과 pnorm함수를 이용한 정규근사 확률(0.8940697)이 거의 비슷한 값을 가짐을 확인 할 수 있다.


> n=150

> p=0.6

> pbinom(101,n,p) - pbinom(81,n,p)

[1] 0.8945357

> mu = n*p

> sigma=sqrt(n*p*(1-p))

> pnorm(101.5,mu,sigma) - pnorm(81.5,mu,sigma)

[1] 0.8940697

'IT > R' 카테고리의 다른 글

R invalid factor level, NA generated 오류해결  (0) 2020.01.18
정규분포에서 확률구하기  (0) 2018.04.17
이항분포를 활용한 R프로그램  (0) 2018.04.04
도수분포표, 상대도수 구하기  (0) 2018.03.27
R 스튜디오 설치하기  (0) 2017.12.04
Posted by 소율소희아빠

1. 정규분포에서 확률구하기


   통계학의 모든 분야에서 가장 중요하게 생각되는 대표적인 연속확률 분포는 정규분포이다.

   정규곡선이라 불리는 정규분포의 확률밀도함수는 좌우 대칭의 종모양 곡선이다

   정규확률변수의 확률분포에 대한 수학적 방정식은 아래와 같다

   

   

    

   정규분포에서 μ와 σ^2이 가지는 의미를 살펴보면 μ는 확률분포의 중심위치를 나타내고

   σ^2은 정규곡선이 퍼져있는 정도를 나타낸다

   

   



   μ와 σ^2에 따라 다양한 모양으로 나타나는 정규분포 중에서 평균이 0이고

   분산이 1인 정규분포를 표준정규분표라 한다. 

   일반적으로 표준정규분포를 따르는 확률변수는 Z로 표현하는데, 

   Z ~ N(0,1)이므로 확률변수 Z는 E(Z) = μ = 0을 중심으로 좌우대칭인 정규분포를 따르며, 분산 Var = (Z) = σ^2 = 1 과 같다


   정규분포의 특징 중 하나는 정규분포를 따르는 확률변수에 상수를 이용한 사칙연산을 하더라도 여전히 정규분포를 따른다는 것이다. 확률변수 X를 평균이 0이고 분산이 1인 확률변수 Z로변환하는 과정을 표준화변환이라고 한다.



   1) R 프로그래밍 실습

      R 프로그램 내장함수 중 pnorm을 이용하면 정규분포에서의 확률을 쉽게 계산할 수 있다

      구문 형식은 아래와 같다

       

      pnorm(x, mean = 0, sd = 1, lower.tail = TRUE)


      이며, 여기서 x는 확률변수 X의 특정값을 의미한다. 

      이들 값을 입력하지 않으면 표준정규분포에서의 확률을 계산해준다.


      lower.tail은 확률계산의 방향을 선택하는 옵션으로 그 값을 TRUE(또는 T)로 설정하면 

      P(X ≤ x) 가 계산되고, FALSE(또는 F)로 하면 P(X ≥ x)가 계산되며, 

      기본값은 TRUE이므로 TRUE(또는 T)로 설정 시에는 생략 가능하다.      


      

    2) 문제

      LCD 제조회사에서 생산되는 패널의 수명시간은 정규분포를 따른다고함

      생산되는 LCD패널에 대한 평균 수명시간은 3000시간 이라 할 때 임의로 선택한

      LCD 패널 1개의 수명시간이  2948 ~ 3080 시간 사이일 확률을 구하여라


      > avg = 3000

      > sigma = 80

      > x1 = 2948

      > x2 = 3080

      > pnorm(x2,mean=avg,sd=sigma) - pnorm(x1,mean=avg,sd=sigma)

      [1] 0.5834986

      > z1 = (x1-avg) / sigma

      > z2 = (x2-avg) / sigma

      > pnorm(z2) - pnorm(z1)

      [1] 0.5834986 



'IT > R' 카테고리의 다른 글

R invalid factor level, NA generated 오류해결  (0) 2020.01.18
이항분포의 정규근사  (0) 2018.04.17
이항분포를 활용한 R프로그램  (0) 2018.04.04
도수분포표, 상대도수 구하기  (0) 2018.03.27
R 스튜디오 설치하기  (0) 2017.12.04
Posted by 소율소희아빠

1. 이항분포 R 프로그램의 내장함수 중 dbinom과 pbinom을 이용하여 

    이항분포에서의 확률을 쉽게 계산할 수 있음


1) 구문형식

- dbinom(x, size, prob)

  * x : 확률변수 X의 특정값  

  * size : 시행횟수

  * prob : 성공확률

- pbinom(x, size, prob, lower.tail = TRUE)

  * lower.tail은 확률 계산 방향 옵션

    ㄴ TRUE : P( X<= x )

    ㄴ FALSE : P( X >= x )


2) 예제

강의 수강생 중 30%만이 강의에 만족한다고 함 만약 이 강의생 중 20명을 임의로 선택 했을 때 이들 중 4명 미만의 수강생이 강의에 만족할 확률과 7명의 강의생이 만족할 확률은?


 > pbinom(3, size=20,prob=0.3, lower.tail = T)

   [1] 0.1070868

> dbinom(7,size=20,prob=0.3)

   [1] 0.164262


만약, 12명 이상의 수강생이 강의에 만족할 확률을 구하고자 한다면?

> pbinom(12,size=20,prob=0.3, lower.tail = F)

   [1] 0.00127888




'IT > R' 카테고리의 다른 글

이항분포의 정규근사  (0) 2018.04.17
정규분포에서 확률구하기  (0) 2018.04.17
도수분포표, 상대도수 구하기  (0) 2018.03.27
R 스튜디오 설치하기  (0) 2017.12.04
R설치하기  (0) 2017.12.04
Posted by 소율소희아빠

0. 데이터

 - 혈액형sample

> blood =c("B","A","AB","O","A","B","A","A","A","A","A","B"

,"B","B","B","B","B","B","B","B","B","B","B","B","B","O","O","O","O","O","O","O"

,"AB","AB","AB","AB","AB")


1. 도수분포표 구하기

> table(blood)

blood

 A AB  B  O 

 7  6 16  8 


2. 상대도수 구하기

> prop.table(table(blood))

blood

        A        AB         B         O 

0.1891892 0.1621622 0.4324324 0.2162162 


3. Bar Chart 그리기

> barplot(table(blood))


4. Pie Chart 그리기

> pie(table(blood))





R 코드 전문 복사

> blood = c("B","A","AB","O","A","B","A","A","A","A","A","B","B","B","B","B","B","B","B","B","B","B","B","B","B","O","O","O","O","O","O","O","AB","AB","AB","AB","AB")

> table(blood)

blood

 A AB  B  O 

 7  6 16  8 

> prop.table(table(blood))

blood

        A        AB         B         O 

0.1891892 0.1621622 0.4324324 0.2162162 

> prop.table(table(blood))

blood

        A        AB         B         O 

0.1891892 0.1621622 0.4324324 0.2162162 

> barplot(table(blood))

> pie(table(blood))



'IT > R' 카테고리의 다른 글

이항분포의 정규근사  (0) 2018.04.17
정규분포에서 확률구하기  (0) 2018.04.17
이항분포를 활용한 R프로그램  (0) 2018.04.04
R 스튜디오 설치하기  (0) 2017.12.04
R설치하기  (0) 2017.12.04
Posted by 소율소희아빠
이전버튼 1 2 3 이전버튼

블로그 이미지
소율소희아빠

공지사항

Yesterday
Today
Total

달력

 « |  » 2025.6
1 2 3 4 5 6 7
8 9 10 11 12 13 14
15 16 17 18 19 20 21
22 23 24 25 26 27 28
29 30

최근에 올라온 글

최근에 달린 댓글

글 보관함