20대 성장기/공부

R 프로그래밍 복습, k-mooc 데이터 과학을 위한 R프로그래밍 1주차~8주차

방구석주희 2021. 6. 22. 20:49
728x90

또 다시 시작된 R 프로그래밍의 늪..ㅎㅎ

 

1주차 오픈소스와 R 프로그램

 

아래 두 사이트에서 두 개 다 설치

 

https://cran.r-project.org/

 

The Comprehensive R Archive Network

 

cran.r-project.org

https://www.rstudio.com/products/rstudio/download/

 

Download the RStudio IDE

RStudio is a set of integrated tools designed to help you be more productive with R. It includes a console, syntax-highlighting editor that supports direct code execution, and a variety of robust tools for plotting, viewing history, debugging and managing

www.rstudio.com

 

실행 단축키 : Ctrl & Enter

#는 메모노트 (실행X)J

 

A. 코드 설명

x1<-c(1,3,5,7,9)

 

#X의 범주는? 숫자인지 문자인지

class(x1)

>is.numeric(x1) #x1은 숫자다

 

#X는 숫자인가?

is.numeric(x1)

>TRUE

 

#X의 길이는?

length(x1)

>5

 

B. 코드 설명

x2 <-c(1,4,9)#최솟값 min(x2)#최댓값 max(x2)#평균 mean(x2)#제곱근 sqrt(x2)#산점도 plot(x2)#로그 log10(10)#자연로그 log(10)

#엑스포넨셜 exp(10)

#현재까지 생성된 데이터 나열 list-up ls()

#값 설정 제거 rm(x1)

#소문자로변경 tolower(c1)

#대문자로변경 toupper(c1)

#정규분포로부터 데이터 생성 함수 rnorm(n, mean, std)

x3<-rnorm(100,0,5)#앞6개데이터 보여줘 head(x3)

 

추가패키지 설치 : ggplot2(그래픽에 필요한 툴), NLP, tm, worldcloud(텍스트마이닝에 필요한 패키지)install.packages("ggplot2")library(ggplot2)install.packages("scatterplot3d")library(scatterplot3d)

 

 

 

2주차 벡터, 행렬의 연산 및 함수

 

A. 벡터 생성 코드#0부터 10까지 20개의 값 생성y1<-seq(0,10,length=20)#0부터 10까지 0.5간격을 두고 값 생성y2<-seq(0,10,by=0.5)#반복문, 1에서 4까지 2번 반복하여 생성z1<-rep(1:4,2)#백터를 열기준으로 결함x<-c(1,3,5,7,9)c1<-c(2,4,6,8,10)c2<-cbind(x,c1)c3<-rbind(x,c1)

#벡터에 이름주기, 0=female, 1=male이라는 값을 부여

gender<-c(0,1)

names(gender)<-c("female","male")

#범주형변수 생성 factor함수

size<-c("s","m","l","xl")

size_factor<-factor(size)

#범주형 변수에서 순서 정의

size_factor3<-factor(size,order=TRUE,levels=c("s","m","l","xl"))

 

# 행렬 생성 matrix함수

#1부터10까지 숫자로 2행의 행렬 생성

m1<-matrix(1:10,nrow=2)

#1부터 6까지 숫자로 3열의 행렬을 생성

m2<-matrix(1:6, ncol=3)

#1열부터 채우기

m3<-matrix(1:6,nrow=2,byrow=T)

 

#고차원함수 array함수a1<-array(c(1:18),dim=c(3,3,2))

 

#함수생성square<-function(x){return(x*x)}>square(9)[1]81

 

#루프문(for)#1부터 10까지의 수 중 3으로 나눈 나머지가 1이 아닌 수 출력

for(i in 1:10){
  if(i%%3 == 1){
    next()
  }
  print(i)
}

 

#루프문(while)

#y가 5보다 적을 때는 {}을 수행

y=0
while(y <5){ print(y<-y+1) }

 

 

 

3주차 R데이터구조(생성,추출)

 

#불러들이기_폴더지정

setwd("C:/Users/ncufo/OneDrive/바탕 화면/moocr")
#파일읽기

brain<-read.csv("brain2210.csv")head(brain)dim(brain) #데이터의 관측치수와 변수의 갯수를 알려줌

#데이터이름을 따로 지정하지 않아도 됨_그냥 해주기

attach(brain)

#tabel(변수)

#히스토그램 hist(변수)

brain파일에 있는 wt를 불러오고 싶을 때 attach를 안해주면

hist(brain$wt)로 해야되지만 attach해주면 hist(wt)만 입력해도 되는 것

 

#excel파일에 worksheet가 여러개 있을 땐 readxl패키지 설치

install.packages("readxl")

library(readxl)

mtcars1<-read.excel("C:/Users/ncufo/OneDrive/바탕 화면/moocr/brain2210",sheet="brain")

 

#brain데이터에서 female만 있는 subset데이터 생성(데이터추출)

brainf<-subset(brain, sex=='f')

#brain데이터에서 wt<1300이하인 데이터 생성

brain1300<-subset(brain,wt<1300)

 

#데이터핸들링

install.packages("dplyr")

library(dplyr)

#select 일부변수선택

#filter 필터링기능

#mutate 새로운 변수 생성

#group_by 그룹별 통계량을 얻을 때

#summarize 요약통계량

#변수특성 변경(as.numeric, as.integer, factor)

#summary(데이터이름)

 

#car데이터에서 mpg로 시작하는 변수를 제외하고 set2라는 데이터를 생성

set2<-select(car,-starts_with("mpg"))

#조건식에 맞는 데이터 추출 : car데이터에서 mpg가 30보다 큰 행 추출)

set3<-filter(car,mpg>30)

 

 

4주차 데이터시각화

5주차 데이터탐색

 

#정규성검정qqnorm()

#정규성검정

shapiro.test(g3)

p.value가 0에 가까우면 g3는 정규분포한다고 볼 수 없다.

 

 

6주차 통계분석

 

1. 두 그룹간 평균비교분석 t-test

*단일 표본의 평균 검정

가설 1 : G3(최종성적)의 평균은 10인가? H1(귀무가설) : 평균(mu)=10

t.test(G3,mu=10)

*p-value가 0.07이 나오고 알파=0.05에서 G3의 평균이 10이라고 할 수 있는 근거가 있다.

*두 집단의 표본평균 비교검정

가설 2 : 거주지역(R, U)에 따른 G3(최종성적) 평균에 차이가 있는가? (양측검정)

t.test(G3~address, data=stud)

*p-value가 0.03으로 유의수준 0.05에서 거주지역에 따라 G3는 유의한 차이가 있다고 할 수 있다. (0이 아니다)

 

2. 짝을 이룬 그룹간 평균 비교

*동일한 표본에 before&after측정

t.test(before,after,mu=0,paired=T))

 

3. 분산분석 anova

: 전체 분산을 분석하여 어떤 요인(factor)의 영향이 유의한지 검정하는 방법

예) Drug effect(5mg, 10mg, placebo) Age effect(young, old)

(1) Factor가 한 개 일 때

거주지역에 따른 학업성취도 : 거주지역(factor:R/U), 학업성적(1-20)

- 도심지역 학생들 성적이 외곽지역 학생들보다 높다.

a1<-aov(G3~address)

summary(a1)

*p-value가 0.03으로 유의수준 0.05에서 거주지역에 따른 학업 성적에 유의한 차이가 있다.

사후검정 : ANOVA에서 어떤 factor의 유의성이 검정되면, 그 다음 단계에서 하는 검정

TukeyHSD(a2, "travelrime", ordered=TRUE)

plot(TukeyHSD(a2, "traveltime"))

 

 

7주차 상관분석과 회귀분석

 

#상관분석 cor(변수1, 변수2)

#단순회귀모형

r1<-lm(mpg~wt, data=car1)

summary(r1)

anova(r1)

 

 

8주차 데이터마이닝 기초

 

#다중회귀분석

r1<-lm(y~x1+x2+x3,data=car1)

#다중공선성

install.packages("car")

library(car)

vif(lm(mpg~disp+hp+wt+accler, data=car))

*disp와 wr의 VIF가 10에 가까움 크게 문제되지 않는다고 볼 수 있음

 

 

728x90