24
ՆՆՆՆՆՆՆՆՆՆՆՆ R ՆՆՆՆՆՆՆՆՆՆՆՆ ՆՆՆՆՆՆՆՆ ՀՀՀՀՀ ՀՀՀՀՀՀՀ ՀՀՀՀՀՀՀՀՀ ՀՀՀՀՀՀՀՀՀ ՀՀՀՀՀՀՀՀՀՀ ՀՀՀՀՀՀՀՀՀՀՀ ՀՀՀ CRRC Armenia, 20/04/2015- 21/04/2015

Ներածություն R վիճակագրական համակարգ

Embed Size (px)

Citation preview

Page 1: Ներածություն R վիճակագրական համակարգ

Ներածություն R վիճակագրական

համակարգ

Հաբեթ Մադոյան

ՀայաստանիԱմերիկյան Համալսարան

Դեյթամոտուս ՍՊԸ

CRRC Armenia, 20/04/2015-21/04/2015

Page 2: Ներածություն R վիճակագրական համակարգ

R Վիճակագրական համակարգ

SPSS

Java

SQL

Python

SAS

R

8%

12%

31%

35%

36%

49%

Ի՞նչ վիճակագրական վերլուծական փաթեթից : եք ամենահաճախն օգտվում ( Հարցումն անց է

կացվել kdnuggets.com կայիք կողմից)

0

10

20

30

40

50

60

70

80

90

100

R Python SPSS SAS

Google Trends – Մի շարք վիճակագրական փաթեթների համար

Page 3: Ներածություն R վիճակագրական համակարգ

Ներբեռնել

R Studio

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

R

http://cran.r-project.org/bin/windows/base/

Page 4: Ներածություն R վիճակագրական համակարգ

R-Studio միջավայր

Page 5: Ներածություն R վիճակագրական համակարգ

R Փաթեթների ներբեռնում

R համակարգու աշխատող ամբողջական փաթեթների ցանկը այստեղ՝

http://cran.r-project.org/web/packages/available_packages_by_name.html

, Յուրաքանչյուր փաթեթն ունի իր առանձին էջը որտեղ կարելի է ծանոթանալ , :փաթեթի հրամանների ֆունցկիոնալության հետ

http://cran.r-project.org/web/packages/tm/index.html

Page 6: Ներածություն R վիճակագրական համակարգ

R փաթեթնեի ներբեռնում

install.packages (“package_name_here”)

library(package_name_here)

Page 7: Ներածություն R վիճակագրական համակարգ

Տվյալների տեսակները R համակարգում

Վեկտոր՝

Number <-c(1:10) – թվային վեկտոր

Names <- c("A", "B", "C", "D")– տեքստային վեկտոր

Gender <-c(TRUE, TRUE, FALSE, TRUE) – նոմինալ վեկտոր (logical vector)

Մատրից

Մատրիցայի բոլոր սյուները պետք է ունենան նույն երկարությունն ու կազմված լինեն նույն տեսակի վեկտորներից

Data.frame

, , Կազմված է վեկտորներից որոնք պետք է ունենան նույն երկարությունը բայց կարող են լինել տարբեր տեսակների

List

, Ցանկացած տեսակի երկարության օբյեկտների հավաքածու է:

Page 8: Ներածություն R վիճակագրական համակարգ

R մի քանի կարևոր հրամաններ

getwd() – Ցույց է տալիս ընթացիկ աշխատանքայինպանակը

setwd(“”) - Սահմանում է աշխատանքային պանակը

dir(“”) – ցույց է տալիս պանակի պարունակությունը

rm() – Հանում է օբյեկտը R միջավայրից

Page 9: Ներածություն R վիճակագրական համակարգ

Այլ հրամաններ

# Ցույց է տալիս օբյեկտի կառուցվածքըstr(mtcars)

# Ցույց է տալիս օբյեկտի չափողականությունըdim(mtcars)

# Ցույց է տալիս օբյեկտի երկարությունը՝ այս դեպքում փոփոխականների քանակըlength(mtcars)

# / Ցույց է տալիս տողեր սյուներիի քանակըnrow(mtcars)ncol(mtcars)

# Ցույց է տալիս առաջին n տողերըhead(mtcars, n=1)

# Վերջին n տողերըtail (mtcars, n=5)

Page 10: Ներածություն R վիճակագրական համակարգ

Այլ հրամաններ

# 3 4 dataframe-Ընտրենք առաջին փոփոխականները և վերափոխենք այն նոր իNew<-mtcars[,1:3]

# 20 Ընտրենք առաջին երեք փոփոխականներն ու առաջին տողերըNew<-mtcars[1:20,1:3]

# mpg, hp, wt Ընտրենք փոփոխականներըNew<-mtcars[,c("mpg","hp", "wt")]

# n- Ուսումնասիրենք երրորդ տողըmtcars[[10]]

# n- n- Գտնենք երրոդ տողի և րդ սյան թիվmtcars[[10,1]]

# Գտնենք մինիմումըmin(mtcars$mpg)

#Կամ# Գտնում է նվազագույն արժեքին համապատասխան տողը

which.min(mtcars$mpg)mtcars$mpg[[15]]

Page 11: Ներածություն R վիճակագրական համակարգ

Արտաքին տվյալների բեռնում և ձևափոխություններ

# CSV- R-Կարդում ենք ն ումcensus_csv<-read.csv("Census R.csv")

# , Ունենք նոմինալ և օրդինալ փոփոխականներ կարող ենք սահմանել նրանց կատեգորիաների անունները

# Նոմինալ փոփոխականների համարcensus_csv$sex<-factor(census_csv$sex, levels=c(1,2), labels=c("Male", "Female"))

# Օրդինալ փոփոխականների համարcensus_csv$happy<-ordered(census_csv$happy, levels=c(1,2,3), labels=c("Very Happy", "Pretty Happy", "Not too Happy"), exclude=c(8,9))

#handling missing values - Age 98,99 փոփոխականում թվանշաններով նշված են բացակայող տվյալները

census_csv$age[census_csv$age==99]<-NAcensus_csv$age[census_csv$age %in% c(98,99)] <- NA

# Կարդանք փոփոխականըstr(census_csv$age)

Page 12: Ներածություն R վիճակագրական համակարգ

Ներբեռնենք արտաքին տվյալներ-SPSS

# Օգտագործում ենք foreign փաթեթըinstall.packages(“foreign”)library(foreign

# SPSS- R-Կարդում ենք ն ումCensus_SPSS<-read.spss(file="Census R.sav", use.value.labels=TRUE,

to.data.frame=TRUE, trim_values=TRUE, use.missings = TRUE)

#dataframe- ի կառուցվածքը

str(Census_SPSS)

#dataframe- ի կառուցվածքը առանց փոփոխականների ատրիբուտների

str(Census_SPSS, give.attr=FALSE)

Page 13: Ներածություն R վիճակագրական համակարգ

Exporting data-SPSS

# SPSSՏվյալների արտահանում

# data.frameՍտեղծենք նոր

new.data1<-data.frame(Census_SPSS$sex, Census_SPSS$region)

# Վերանվանենք փոփոխականների անունները

colnames(new.data1)<-c("Gender", "Region")

write.foreign(new.data1, "Census1.sav", package="SPSS", codefile="out.sps")

Page 14: Ներածություն R վիճակագրական համակարգ

Պարզագույն վիճակագրական հաշվարկներ R-ում

# Վիճակագրական պարամետրերը բոլոր փոփոխականների համարsummary(Census_SPSS)

# Վիճակագրական պարամետրերը մի փոփոխականի համարsummary(Census_SPSS$age)

# Հաշվենք Միջին թվաբանականըmean(Census_SPSS$age)

# NA NA Հրամանը վերադարձնում է քանի որ փոփոխականն ունի արժեքներ# , NA Հետևյալ հրամաններն արդեն հաշվում են պարամետրերը արհամարելով արժեքները

mean(Census_SPSS$age, na.rm=TRUE)median(Census_SPSS$age, na.rm=TRUE)sd(Census_SPSS$age, na.rm=TRUE)

# Միջին թվաբանականը ըստ խմբերիaggregate(Census_SPSS$age, by=list(Census_SPSS$sex), FUN="mean", na.rm=TRUE)

# Սահմանում է թվերի ցուցադրման և հաշվարկի նիշերի քանակըoptions(digits=5)

Page 15: Ներածություն R վիճակագրական համակարգ

Պարզագույն վիճակագրական հաշվարկներ R-ում

#Մ իջին թվաբանականը ըստ խմբերի մի քանի փոփոխականներիհամար

aggregate(Census_SPSS[,c("age", "sibs")], by=list(Census_SPSS$sex), FUN="mean", na.rm=TRUE)

aggregate(Census_SPSS[,c("age", "sibs")], by=list(Census_SPSS$sex, Census_SPSS$region), FUN="mean", na.rm=TRUE)

# tapply Հաշվում է խմբի միջինները ֆունկցիայի միջոցով

tapply(X=Census_SPSS$age, INDEX=list(Census_SPSS$region), FUN=mean, na.rm=TRUE)

tapply(X=Census_SPSS$age, INDEX=list(Census_SPSS$region, Census_SPSS$sex), FUN=sd, na.rm=TRUE)

Page 16: Ներածություն R վիճակագրական համակարգ

Աշխատանք նոմինալ փոփոխականների հետ

# Ցույց է տալիս կատեգորիկ փոփոխականի կատեգորիաներիհաճախականությունները

table(Census_SPSS$sex)

# contingency tableԿառուցում է երկփոփոխական

table(Census_SPSS$sex, Census_SPSS$region)

# Երեք փոփոխականի համար

table(Census_SPSS$sex, Census_SPSS$region, Census_SPSS$wrkstat)

# Հաշվում է յուրաքանչյուր խմբի տեսակարար կշիռները

my.table<-table(Census_SPSS$sex, Census_SPSS$region) # ստեղծում էօբյեկտ

prop.table(my.table) # % յուրաքանչյուր վանդակի ընդհանուրմեջ

prop.table(my.table, 1) # % յուարաքանչյուր խմբի տողի ընդհանուրի մեջ

prop.table(my.table, 2) # %- յուրաքանչյուր խմբի ը սյան ընդհանուրի մեջ

Page 17: Ներածություն R վիճակագրական համակարգ

Աշխատանք նոմինալ փոփոխականների հետ

install.packages("gmodels")library(gmodels)

# SPSS- crosstab Նման է ի ՀրամանինCrossTable(Census_SPSS$sex, Census_SPSS$region, digits=2,

prop.chisq=FALSE, prop.r=TRUE, prop.c=FALSE, prop.t=FALSE, format="SPSS")

#xtabs# երկու փոփոխականով

xtabs(~sex+region, data=Census_SPSS)

# Տեսակարար կշիռներն ըստ տողերիprop.table(xtabs(~Census_SPSS$sex+Census_SPSS$region,

data=Census_SPSS),2)

Page 18: Ներածություն R վիճակագրական համակարգ

Պարզագույն գրաֆիկներ R համակարգում

# Bar chart Ստեղծենք ցույց տալու համա տվյալների բաշխվածությունն ըստ սեռի

# նախ ստանանք սեռի հաճախականությունները և # գրանցենք այն որպես օբյեկտ

gender.distr<-table(Census_SPSS$sex)

# barplot օգտագործենք ֆունկցիան

barplot(gender.distr)

# ավելացնենք որոշ ատրիբուտներ

barplot(gender.distr, legend.text=c(" ", " "))Տղամարդ Կին

barplot(gender.distr, ylab="Frequency", xlab="Gender")

barplot(gender.distr, ylab="Frequency", xlab="Gender", main="Gender Frequency distribution")

Page 19: Ներածություն R վիճակագրական համակարգ

Պարզագույն գրաֆիկներ R համակարգում

# mtcars որպես օրինակ կօգտագործենք դաթասեթը

str(mtcars)

# scatterplot - mpg wtկառուցենք երկու փոփոխականների համար և

plot(mtcars$mpg, mtcars$wt)

# X Y Ավելացնենք և առանցքն երի անունները

plot(mtcars$mpg, mtcars$wt, xlab="Miles per gallon", ylab="Weight")

# Ավելացնենք վերնագիր

plot(mtcars$mpg, mtcars$wt, xlab="Miles per gallon", ylab="Weight",

main="Correllation between weight and miles per gallon")

# scale Կառուցենք փոփոխականի համար հիստոգրամ

hist(Census_SPSS$age)

hist(Census_SPSS$age, main="Histogram of Age")

hist(Census_SPSS$age, main="Histogram of Age", xlab="Age")

# Ցույց է տալիս հավանականությունները հաճախականություններիփոխարեն

hist(Census_SPSS$age, main="Histogram of Age", xlab="Age", freq=FALSE)

Page 20: Ներածություն R վիճակագրական համակարգ

Գրաֆիկներ ggplot2 փաթեթով

# GGplot#Ն ggplot2 երբեռնենք փաթեթը

install.packages("ggplot2")#Կ անչենք այն

library(ggplot2)str(diamonds)

#Պ ատահական ընտրանքի միջոցով ընտրենք մի խումբ տվյալներset.seed(1982)dsmall <- diamonds[sample(nrow(diamonds), 200), ]str(dsmall)

# scatterplotԿառուցենք qplot(carat, price, data=dsmall)#Վ երափոխենք փոփոխականները լոգարիթմականի qplot(log(carat), log(price), data=dsmall) # Ստանում ենք գծային պատկեր#Կ արող ենք գրաֆիկի վրա գույներով առանձնացնել ադամանդներ ն՝ ըստ իրենց գունային

դասակարգման qplot(carat, price, data=dsmall, colour=color)# Կարող ենք կետերն առանձնացնել կաղապարներով qplot(carat, price, data=dsmall, shape=cut)# geom qplot արգումենտի միջոցով ֆունկցիայով կարող ենք ստանալ ցանկացած տեսքի գրաֆիկ qplot(carat, price, data=dsmall, geom="smooth") qplot(carat, price, data=dsmall, geom=c("point","smooth")) qplot(log(carat), log(price), data=dsmall, geom=c("point","smooth"))

# , Ստացել ենք ալիքաձև կոր կարող ենք այն ավելի ուղիղ սարքել և հանել վստահելիությանմիջակայքերը qplot(carat, price, data=dsmall, geom=c("point","smooth"), span=1, se=FALSE)

Page 21: Ներածություն R վիճակագրական համակարգ

Գրաֆիկներ ggplot2 փաթեթով

# geom Այլ գրաֆիկներ ատրիբուտի փոփոխությամբqplot(color, price/carat, data=diamonds, geom="jitter")

# Ավելացնենք այլ էսթետիկաներqplot(color, price/carat, data=diamonds, geom="jitter", main="Price per carat for colors", ylab="Price per Carat")

# boxplotԿառուցենքqplot(color, price/carat, data=diamonds, geom="boxplot")

# Կառուցենք հիստոգրամqplot(price, data=diamonds, geom="histogram")

# bin- Կարո ենք կարգավորել երի լայնություններըqplot(carat, data=diamonds, geom="histogram", binwidth=0.1)

# x Սահմանենք եճրի առանցքի համար սահմափակումqplot(carat, data=diamonds, geom="histogram", binwidth=0.2, xlim=c(0,3))qplot(price, data=diamonds, geom="density")

# Ստանանք խտության ֆունկցիանqplot(carat,data=diamonds, geom="density")

# Ստանանք խտության ֆունկցիան՝ ըստ քարերի գույներիqplot(carat,data=diamonds, geom="density", colour=color)

# Հիստոգրամն ըստ գույներիqplot(carat, data=diamonds, geom="histogram", fill=color, binwidth=0.2)

# barchartԿառուցում ենքqplot(color, data=diamonds, geom="bar")

#facetingqplot(carat, data=diamonds, geom="histogram", facets=color~.)

#Լավացնենքqplot(carat, data=diamonds, geom="histogram", facets=color~.,binwidth=0.1, xlim=c(0,2))

Page 22: Ներածություն R վիճակագրական համակարգ

Ռեգռեսիոն վերլուծություն R համակարգում

# R Ներբեռնենք ֆայլը համակարգhome<-read.csv("Home sales.csv")str(home)

# Area փոփոխականը դարձնենք ֆակտոր home$Area<-factor(home$Area, levels=c(0,1), labels=c("Downtown", "Suburbans")) str(home)# Ստանանք կորելացիոն մատրիցը cor(home) # , վերադրաձնում է սխալ քանի որ ունենք ֆակտոր փոփոխական# 6 Ընտրենք առաջին փոփոխականները cor(home[,1:6])# Կառուցենք ռեգռեսիոն մոդելը Fit<-lm(Price~., data=home)# fit օբյեկտում պահված է ամբողջ ինֆորմացիան ռեգռեսիոն հավասարման մասին summary(fit)# Bathrooms Կառուցենք նոր մոդել առանց փոփոխականի fit<-lm(Price~.-Bathrooms, data=home) summary(fit)# Վերադարձնում է ռեգռեսիոն հավասարման գործակիցները coef(fit)# Տալիս է ռեգռեսիոն հավասարման գործակիցների վստահելիության միջակայքերը confint(fit) confint(fit, level=0.9)# Արտաբերում է հավասարման մնացորդների վեկտորը residuals(fit)# Արտաբերում է կանխատեսմված մեծությունները fitted(fit)#Residual plots plot(fitted(fit), residuals(fit))# Անկախ փոփոխականների հետ plot(home$Age, residuals(fit))

Page 23: Ներածություն R վիճակագրական համակարգ

Ռեգռեսիոն վերլուծություն R համակարգում

# testing dataset- Կանխատեսում ի վրա# , Բաժանենք մեր դեյթասեթը երկու մասերի որոնցից մեկի վրա

, կկառուցենք մոդելը մյուսի վրա այն կփորձարկենքlibrary(caTools)set.seed(2015)spl = sample.split(home, 0.7)

train = subset(home, spl == TRUE)test = subset(home, spl == FALSE)

model<-lm(Price~.-Bathrooms, data=train)summary(model)

# test dataset- Անենք կանխատեսում ի վրա Predicted<-predict.lm(model, test)

# Հաշվենք միջին քառակուսային սխալը mean((Predicted-test$Price)^2)

Page 24: Ներածություն R վիճակագրական համակարգ

##################ՎԵՐՋ#################