Upload
habet-madoyan
View
144
Download
4
Embed Size (px)
Citation preview
Ներածություն R վիճակագրական
համակարգ
Հաբեթ Մադոյան
ՀայաստանիԱմերիկյան Համալսարան
Դեյթամոտուս ՍՊԸ
CRRC Armenia, 20/04/2015-21/04/2015
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 – Մի շարք վիճակագրական փաթեթների համար
Ներբեռնել
R Studio
http://www.rstudio.com/products/rstudio/download/
R
http://cran.r-project.org/bin/windows/base/
R-Studio միջավայր
R Փաթեթների ներբեռնում
R համակարգու աշխատող ամբողջական փաթեթների ցանկը այստեղ՝
http://cran.r-project.org/web/packages/available_packages_by_name.html
, Յուրաքանչյուր փաթեթն ունի իր առանձին էջը որտեղ կարելի է ծանոթանալ , :փաթեթի հրամանների ֆունցկիոնալության հետ
http://cran.r-project.org/web/packages/tm/index.html
R փաթեթնեի ներբեռնում
install.packages (“package_name_here”)
library(package_name_here)
Տվյալների տեսակները R համակարգում
Վեկտոր՝
Number <-c(1:10) – թվային վեկտոր
Names <- c("A", "B", "C", "D")– տեքստային վեկտոր
Gender <-c(TRUE, TRUE, FALSE, TRUE) – նոմինալ վեկտոր (logical vector)
Մատրից
Մատրիցայի բոլոր սյուները պետք է ունենան նույն երկարությունն ու կազմված լինեն նույն տեսակի վեկտորներից
Data.frame
, , Կազմված է վեկտորներից որոնք պետք է ունենան նույն երկարությունը բայց կարող են լինել տարբեր տեսակների
List
, Ցանկացած տեսակի երկարության օբյեկտների հավաքածու է:
R մի քանի կարևոր հրամաններ
getwd() – Ցույց է տալիս ընթացիկ աշխատանքայինպանակը
setwd(“”) - Սահմանում է աշխատանքային պանակը
dir(“”) – ցույց է տալիս պանակի պարունակությունը
rm() – Հանում է օբյեկտը R միջավայրից
Այլ հրամաններ
# Ցույց է տալիս օբյեկտի կառուցվածքըstr(mtcars)
# Ցույց է տալիս օբյեկտի չափողականությունըdim(mtcars)
# Ցույց է տալիս օբյեկտի երկարությունը՝ այս դեպքում փոփոխականների քանակըlength(mtcars)
# / Ցույց է տալիս տողեր սյուներիի քանակըnrow(mtcars)ncol(mtcars)
# Ցույց է տալիս առաջին n տողերըhead(mtcars, n=1)
# Վերջին n տողերըtail (mtcars, n=5)
Այլ հրամաններ
# 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]]
Արտաքին տվյալների բեռնում և ձևափոխություններ
# 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)
Ներբեռնենք արտաքին տվյալներ-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)
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")
Պարզագույն վիճակագրական հաշվարկներ 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)
Պարզագույն վիճակագրական հաշվարկներ 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)
Աշխատանք նոմինալ փոփոխականների հետ
# Ցույց է տալիս կատեգորիկ փոփոխականի կատեգորիաներիհաճախականությունները
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) # %- յուրաքանչյուր խմբի ը սյան ընդհանուրի մեջ
Աշխատանք նոմինալ փոփոխականների հետ
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)
Պարզագույն գրաֆիկներ 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")
Պարզագույն գրաֆիկներ 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)
Գրաֆիկներ 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)
Գրաֆիկներ 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))
Ռեգռեսիոն վերլուծություն 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))
Ռեգռեսիոն վերլուծություն 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)
##################ՎԵՐՋ#################