블로그 이미지
010-9967-0955 보미아빠

카테고리

보미아빠, 석이 (500)
밥벌이 (16)
싸이클 (1)
일상 (1)
Total
Today
Yesterday

달력

« » 2024.4
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

공지사항

최근에 올라온 글


공분산.xlsx





install.packages("data.table")

library("data.table")


DF <- fread("C:\\R\\2\\example_studentlist.csv", data.table=F)


DF <- read.csv("C:\\R\\2\\example_studentlist.csv", data.table=F)


DF <- read.csv("C:\\R\\2\\example_studentlist.csv")


# sp_help 같은거 

str(DF)

#컬럼리스트 

ls(DF)


#데이터 전체 조회

DF


#삭제

detach(DF)


#등록

attach (DF)


#등록된 항목 

search()


#평균

mean(height, na.rm=T)


#중앙값

median(height, na.rm=T)


#범위 (최소 최대값) 

range(height, na.rm=T)


#사분위

quantile(height,na.rm=T)


#사분위 -- 25% 와 75% 사이

#즉 중앙값을 구하는 기준으로 4분위를 구한다. InterQuartile Range

IQR(height, na.rm=T)



#평균, 중앙값, Q1, Q3 한번에 보기

summary(height, na.rm=T)


#box plot

boxplot(height)


#상관계수

cor(height, weight)


#피어슨 적률 상관계수

cor.test(height, weight)


#3개의 컬럼만 뽑아서 상관계수를 구해보자

cor(DF[,c(3,7,8)])

DF


#cor var 과 같은 다변량 함수의 결측치(빠진값) 는 디테일하게 다루어야 해서 

# var 는 되던데......설명이 이상하네...213page

#아래 명령어가 먹지 않음 

cor(weight, height, na.rm=T)


#대신 이게 먹는데, ns.rm=T 와 같은 의미임 

cor(weight, height, use="complete.obs")


#결측치 테스트를 위해 하나의 테이블을 더 만들고 

DF2<-DF


#두개의 값을 NA로 업데이트 한다.

DF2

DF2[2,7]<- NA

DF2[4,8]<- NA

DF2


detach(DF)

attach (DF2)

search()


#값중 NA 가 있으면 생깜...

cor(height, weight)

cor(weight, height, use="complete.obs") #전체 행 제

cor(weight, height, use="pairwise.complete.obs") #피어슨이 사용한 방법 해당 백터만 제거 

cor(weight, height, use="everything") # na.rm=F 와 같은 값 NA값도 포함해 구함 그러니 값이 안나오겠지 


#분산과 공분산 구하기 

var(height, na.rm=T)

var(height, weight, na.rm=T)

cov(height, weight, use="complete.obs")


var(DF2[,c(3,7,8)], na.rm=T)

DF2


#표준편차 구하기 (한개 변수만 넣어서 구할수 있음)

sd(height, na.rm=T)


#표준화

scale(height)

#무식하게 한번 해서 비교 해보면

#표준화는 평균을 0으로 만들고, 표준편차로 나누어 주면 된다. 

(height - mean(height, na.rm=T))/sd(height, na.rm=T)

mean(height)


#변동계수 

#서로 단위가 다른 평균과 표준편차를 비교하기 위해서 쓴다. 

#변공계수가 크면 값이 더 넓게 분포함 

sd(height, na.rm=T)/mean(height, na.rm=T)

sd(weight, na.rm=T)/mean(weight, na.rm=T)

#> sd(height, na.rm=T)/mean(height, na.rm=T)

#[1] 0.0476805

#> sd(weight, na.rm=T)/mean(weight, na.rm=T)

#[1] 0.1736455

# 아 몸무게가 더 넓게 퍼져 있구나.............


# 콘솔 지우기 ctrl - L

# 모든변수 지우기



###############################################################################

# EX 06

###############################################################################

rm(list=ls())

search()

detach (DF)

detach(DF2)


DF<-read.csv("C:\\R\\2\\example_salary.csv", stringsAsFactors=T, na="-")

DF<-read.csv("C:\\R\\2\\example_salary.csv", na="-")

DF<-read.csv("C:\\R\\2\\example_salary.csv")


search()

rm(DF)

detach(DF)

str(DF)


#컬럼이름 확인

colnames(DF)

#컬럼이름 변경 

colnames(DF) <- c("age", "salary", "specialSalary", "workingTime", "numberOfWorker", "career", "sex")


#검색목록에 데이터프레임 올리기

attach(DF)

#평균구하기 

Mean <- mean(salary, na.rm=T)

Mean

#중앙값 구하기 

Mid <- median(salary, na.rm=T)

Mid

#범위 구하기

Range <- range(salary, na.rm=T)

Range

#관측치 찾아보기 

w <- which(DF$salary==4064286)

DF[w,]

#사분위구하기

Qnt <- quantile(salary, na.rm=T)

Qnt



###############################################################################

# EX 07

###############################################################################


rm(list=ls())

search()

detach (DF)

detach(DF2)


DF<-read.csv("C:\\R\\2\\example_salary.csv", stringsAsFactors=F, na="-")

DF<-read.csv("C:\\R\\2\\example_salary.csv", na="-")

DF<-read.csv("C:\\R\\2\\example_salary.csv")


# top 으로 보기 

head(DF, 5)

str(DF)


#컬럼이름 확인

colnames(DF)

#컬럼이름 변경 

colnames(DF) <- c("age", "salary", "specialSalary", "workingTime", "numberOfWorker", "career", "sex")

#성별로 평균 구하기 


# 필요 라이브러리 

install.packages("ggplot2")

library("ggplot2")

install.packages("reshape2")

library("reshape2")


str(DF)


#tapply 는 group by 로 이해하면 된다. 남여 평균 급여 

temp <- tapply(DF$salary,DF$sex, mean, na.rm=T)

temp

melt<-melt(temp)

ggplot(melt, aes(x=Var1, y=value, fill=Var1))+geom_bar(stat="identity")





########################### 기본 그림 그리기 인듯

pie(temp)

pie(temp,col=rainbow(10)) 

pct <- round(temp/sum(temp)*100,1)

names(pct)

lab <- paste(names(temp),"\n",pct,"%")

pie(temp,main="남여 평균 연봉",col=rainbow(10),cex=0.8, labels=lab )

pie(pct)


pie(temp,main="남여 평균 연봉",col=rainbow(10),cex=0.8, labels=lab )

par(new=T)

pie(temp,radius=0.6, col="white", labels=NA, border=NA)


barplot(temp,main="남여 평균 연봉",col=rainbow(10), space=0.1,ylim=c(0,3000000), cex.name=0.7 )

barplot(temp,main="남여 평균 연봉",col=rainbow(10), space=0.1,xlim=c(0,3000000),  cex.name=0.7, horiz=T)

########################### 기본 그림 그리기 인듯


# 에러남 찾아볼것 

savePlot("a.png", type="png")


# 남여 표준편차 : 격차도 심하네 

sd <- tapply(DF$salary,DF$sex, sd, na.rm=T)

sd


# 남여 Range :

rg <- tapply(DF$salary,DF$sex, range, na.rm=T)

rg


#경력별 평균월급

temp <- tapply(DF$salary,DF$career, mean, na.rm=T)

temp


melt <- melt(temp)

ggplot(melt, aes(x=Var1, y=value, group=1)) +geom_line(colour="skyblue2", size=2)  +coord_polar() + ylim(0,max(melt$value))


#표준편차 

temp <- tapply(DF$salary,DF$career, sd, na.rm=T)

temp


#경력별 범위

temp <- tapply(DF$salary,DF$career, range, na.rm=T)

temp


#가장 적게 받는 월급 집단

a1 <-DF[which(DF$salary==1172399),]

a2 <-DF[which(DF$salary==1685204),]

a3 <-DF[which(DF$salary==1117605),]

a4 <-DF[which(DF$salary==1245540),]

a5 <-DF[which(DF$salary==1548036),]


list <-list(a1,a2,a3,a4,a5)

list



###############################################################################

# EX 08

###############################################################################

rm(list=ls())

detach (DF)

search()


install.packages("ggthemes")

DF<-read.csv("C:\\R\\2\\example_cancer.csv", stringsAsFactors=F, na="-")

str(DF)



attach(DF)

mean(age)

summary(age)


boxplot(age)

boxplot(age,range=1.5)

grid


boxplot(age,range=3)

distIQR<-IQR(age,na.rm=T)

distIQR


posIQR <- quantile(age,probs = c(0.25,0.75), na.rm=T)

posIQR

posIQR <- quantile(age,probs = c(0.1,0.9), na.rm=T)

posIQR


DownWhisker <- posIQR[[1]] -distIQR*1.5

UpWhisker <- posIQR[[2]] +distIQR*1.5


DownWhisker; UpWhisker

Outlier <-subset(DF, subset = (DF$age < DownWhisker | DF$age > UpWhisker))

Outlier



###############################################################################

# EX 09

###############################################################################

rm(list=ls())

detach (DF)

search()


DF<-read.csv("C:\\R\\2\\example_salary.csv", stringsAsFactors=F, na="-")

head(DF,5)

head(DF)


#컬럼이름 확인

colnames(DF)

#컬럼이름 변경 

colnames(DF) <- c("age", "salary", "specialSalary", "workingTime", "numberOfWorker", "career", "sex")

#성별로 평균 구하기 


head(DF)

#표준화시키기

Scale <- scale(DF$salary)

Scale

head(Scale,10)

#표준화 한 값을 데이터프레임에 포함시키기 

DF <-cbind(DF,scale = Scale)

str(DF)

g1<-ggplot(DF,aes(x=scale,y=age))

g2<-geom_segment(aes(yend=age),xend=0)

g3<-g1+g2+geom_point(size=7,aes(colour=sex, shape=career))+theme_minimal()

g3



DF

install.packages("combinat")

library("combinat")

nrow(combn(45,6))

720/48


install.packages("gtools")

library("gtools")

1/nrow(combinations(45,6))

nrow(combinations(6,4))



#이항분포 9번성공 

dbinom(9, 10000, 0.0009)



Posted by 보미아빠
, |

최근에 달린 댓글

최근에 받은 트랙백

글 보관함