저장소

R 기본 통계 본문

교육/빅데이터 청년인재_경희대 R

R 기본 통계

HB HB 2019. 7. 24. 17:25

#변수 다 제거(메모리 삭제) rm(list=ls())


###EDA탐색적 데이터 분석


autoparts=read.csv('autoparts.csv')

head(autoparts)

head(autoparts,10)


autoparts1=autoparts[autoparts$prod_no=='90784-76001',c(2:11)]

dim(autoparts1)


autoparts1[!complete.cases(autoparts1),] #채워져있지 않은 것이 있냐고 묻는 것, 결측치가 없다고 나옴

autoparts1[is.na(autoparts1),]


##기초통계량 summary

summary(autoparts1)


##데이터분포 boxplot

boxplot(autoparts1)

boxplot(autoparts1$separation)

boxplot(autoparts1$rate_terms)


#이상치제거

auto2=autoparts1[autoparts1$c_thickness<1000,] 

boxplot(auto2$c_thickness)

dim(auto2)

plot(auto2$c_thickness)


##데이터분포 ,breaks막대수

hist(auto2$c_thickness)

hist(auto2$c_thickness,breaks=50)


##왜도와 첨도 확인

x=auto2$c_thickness

install.packages('moments')

library(moments)

skewness(x)

kurtosis(x)


#정규분포 만드는  함수

plot(density(x)) #확률밀도곡선

den.norm=function(x)dnorm(x,mean=mean(x),sd=sd(x)

curve(den.norm,col='blue',add=T,lty=4) #정규분포곡선

abline(v=mean(x),col='pink',lty=1) #평균수직선


ta=read.csv('train.csv')

head(ta)


tam=ta[ta$Sex=='male',]

head(tam)

taf=ta[ta$Sex=='female',]


mean(tam$Survived)

mean(taf$Survived)

summary(tam)


t1 <- ta[ ,c(2, 3, 10)]

cor(t1) # Pclass -.3385 //  Fare .2573 => 음의 상관관계여도 값이 크기에 pclass 선택


pima=read.csv('pima-indians-diabetes.csv')

head(pima)

str(pima)

summary(pima)


library(dplyr)

pima%>%filter(Outcome==1)%>%boxplot

pima%>%filter(Outcome==0)%>%boxplot


out1=pima[pima$Outcome==1,]

out0=pima[pima$Outcome==0,]

par(mfrow=c(1,2))

boxplot(out1)

boxplot(out0)



###데이터 분석을 위한 통계 기초

score=c(85,90,93,86,82)

mean(score)

median(score)

var(score) #분산

sd(score) #표준편차


m=c('주시연','최경우','이은주','허민성','홍미나')

h=c(168,176,167,174,169)

w=c(52,68,47,82,51)


p=cbind(h,w)

class(p)

colMeans(p)

sd(p[,1])

sd(p[,2])



hei=rnorm(n=1000000,mean=168,sd=7)

hist(rnorm(n=1000000,mean=168,sd=7),breaks=30)

hist(rnorm(n=1000000,mean=168,sd=7),probability=T,breaks=30)

lines(density(hei,bw=0.5),col='yellowgreen',lwd=2)


wei=rnorm(n=100,mean=65,sd=5)


tt=read.csv('tdata.csv',header=T)

result=t.test(tt$성적,alternative=c('greater'),mu=75) #대립가설 75보다 크다


sco=read.csv('tdata2.csv')

sco

result2=t.test(sco$성적,alternative=c('greater'),mu=75)

result2


#빈도분석(table 빈도수 / probtest.table)

fr=read.csv('love_fruits.csv')

round(prop.table(table(fr$선호과일))*100,2) #퍼센트로 표현

table(fr$선호과일)


count=c(table(fr$선호과일))

pct=c(round(prop.table(table(fr$선호과일))*100,2))

love_fr=data.frame(건수=count,비율=pct);love_fr

barplot(love_fr$건수,names.arg=c('바나나','복숭아','사과','체리','포도'),ylim=c(0,15),col=rainbow(5))

#범주형,이산형 막대그래프, 연속형 히스토그램 사용


pie(love_fr$건수,col=rainbow(5),init.angle = 90,label=love_fr$비율)

legend(0.8,1,c('바나나','복숭아','사과','체리','포도'),cex=0.7,fill=rainbow(5)) #legend 범례(코드)



##카이제곱 / 크로스테이블

install.packages('gmodels')

library(gmodels)


study=read.csv('pass_cross.csv')

head(study)


CrossTable(study$공부함,study$합격,chisq=T)

#첫번째 줄은 해당 조건의 데이터 건수이고

#두번째줄은 해당 조건의 카이제곱 값이고

#세번째 줄은 전체 조건대비 해당 행의 비율이고

#네번째 줄은 전체 조건대비 해당 컬럼의 비율이고

#마지막줄은  전체 데이터 대비 해당 값의 비율임


##상관계수

x=c(3,5,8,11,13)

y=c(1,2,3,4,5)

cor(x,y)



###회귀분석

x=c(110,120,130,140,150)

y=c(100,105,128,115,142)

plot(x,y,pch=20,col='blue')

line=lm(y~x)

abline(line,col='green')


lm(formula = y~x)


##잔차 /lmㅜ회귀분석 함수

sco=read.table('score.txt',header=T,sep=',')

attach(sco)

sco

lm1=lm(성적~IQ);lm1


y=-5.2918+0.6714*125

y

plot(IQ,성적,pch=20,col='skyblue')

abline(lm1,col='pink')


coef(lm1)

predict(lm1,newdata=data.frame(x=c(125,125,125,125,125,125,125,125,125,125)))


lm3=lm(성적~IQ+다니는학원수+게임하는시간+TV시청시간)

lm3


y=23.2992+(0.4684*130)+(0.7197*3)-(0.8390*2)-(1.3854*1)

y

 


Comments