This is an R Markdown document. Markdown is a simple formatting syntax for authoring HTML, PDF, and MS Word documents. For more details on using R Markdown see http://rmarkdown.rstudio.com.
When you click the Knit button a document will be generated that includes both content as well as the output of any embedded R code chunks within the document. You can embed an R code chunk like this:
##### Lesson CATEGORICAL ANALYSES #####
### Φόρτωμα αρχείου από ερωτηματολόγιο
setwd("G:/DATA/CATEGORICAL")
###### 1.2 εισαγωγή του αρχείου excel
# φορτωμα βιβλιοθήκης για διάβασμα αρχείου Excel
library(readxl)
## φόρτωση του αρχείου Excel
zante <- read_xlsx("ZANTE_ECOTOURISM.xlsx", col_names = TRUE)
##ονόματα πεδίων (επικεφαλίδες των στηλών)
labels (zante)
## [[1]]
## [1] "1" "2" "3" "4" "5" "6" "7" "8" "9" "10" "11" "12"
## [13] "13" "14" "15" "16" "17" "18" "19" "20" "21" "22" "23" "24"
## [25] "25" "26" "27" "28" "29" "30" "31" "32" "33" "34" "35" "36"
## [37] "37" "38" "39" "40" "41" "42" "43" "44" "45" "46" "47" "48"
## [49] "49" "50" "51" "52" "53" "54" "55" "56" "57" "58" "59" "60"
## [61] "61" "62" "63" "64" "65" "66" "67" "68" "69" "70" "71" "72"
## [73] "73" "74" "75" "76" "77" "78" "79" "80" "81" "82" "83" "84"
## [85] "85" "86" "87" "88" "89" "90" "91" "92" "93" "94" "95" "96"
## [97] "97" "98" "99" "100" "101" "102" "103" "104" "105" "106" "107" "108"
## [109] "109" "110" "111" "112" "113" "114" "115" "116" "117" "118" "119" "120"
## [121] "121" "122" "123" "124" "125" "126" "127" "128" "129" "130" "131" "132"
## [133] "133" "134" "135" "136" "137" "138" "139" "140" "141" "142" "143" "144"
## [145] "145" "146" "147" "148" "149" "150" "151" "152" "153" "154" "155" "156"
## [157] "157" "158" "159" "160" "161" "162" "163" "164" "165" "166" "167" "168"
## [169] "169" "170" "171" "172" "173" "174" "175" "176" "177" "178" "179" "180"
## [181] "181" "182" "183" "184" "185" "186" "187" "188" "189" "190" "191"
##
## [[2]]
## [1] "Column1" "Groups"
## [3] "GENDER" "AGE"
## [5] "Education level" "INCOME"
## [7] "Prostasia_proteraiotita" "Perivallon > Oikonomia"
## [9] "Metra with cost of locals" "Metra with local acceptance"
## [11] "Tourismos for all locals"
## αφαίρεση της 1ης στηλής
zante2 <- zante [,-1]
labels(zante2)
## [[1]]
## [1] "1" "2" "3" "4" "5" "6" "7" "8" "9" "10" "11" "12"
## [13] "13" "14" "15" "16" "17" "18" "19" "20" "21" "22" "23" "24"
## [25] "25" "26" "27" "28" "29" "30" "31" "32" "33" "34" "35" "36"
## [37] "37" "38" "39" "40" "41" "42" "43" "44" "45" "46" "47" "48"
## [49] "49" "50" "51" "52" "53" "54" "55" "56" "57" "58" "59" "60"
## [61] "61" "62" "63" "64" "65" "66" "67" "68" "69" "70" "71" "72"
## [73] "73" "74" "75" "76" "77" "78" "79" "80" "81" "82" "83" "84"
## [85] "85" "86" "87" "88" "89" "90" "91" "92" "93" "94" "95" "96"
## [97] "97" "98" "99" "100" "101" "102" "103" "104" "105" "106" "107" "108"
## [109] "109" "110" "111" "112" "113" "114" "115" "116" "117" "118" "119" "120"
## [121] "121" "122" "123" "124" "125" "126" "127" "128" "129" "130" "131" "132"
## [133] "133" "134" "135" "136" "137" "138" "139" "140" "141" "142" "143" "144"
## [145] "145" "146" "147" "148" "149" "150" "151" "152" "153" "154" "155" "156"
## [157] "157" "158" "159" "160" "161" "162" "163" "164" "165" "166" "167" "168"
## [169] "169" "170" "171" "172" "173" "174" "175" "176" "177" "178" "179" "180"
## [181] "181" "182" "183" "184" "185" "186" "187" "188" "189" "190" "191"
##
## [[2]]
## [1] "Groups" "GENDER"
## [3] "AGE" "Education level"
## [5] "INCOME" "Prostasia_proteraiotita"
## [7] "Perivallon > Oikonomia" "Metra with cost of locals"
## [9] "Metra with local acceptance" "Tourismos for all locals"
## δημιουργία αντικειμένων
group <- zante$Groups
age <- zante$AGE
gender <- zante$GENDER
edu <- zante$`Education level`
inc <- zante$INCOME
## δημουργία data.frame
ecotour <- data.frame(group, age, gender, edu, inc)
###### ENOTHTA 1: Creating a contingency table ###########
### 1.1. Δημιουργία πίνακα
## με την εντολή table (ισχύει για 2 μεταβλητές)
group.edu <- table(group, edu)
group.edu
## edu
## group deuterova metapty panepist protova technolo
## ektos parkou 17 1 8 3 19
## ektos parkou oreina 24 0 2 11 8
## entos parkou 22 0 5 9 12
## epixirisis 25 0 12 2 11
## υπολογισμός εγγραφών ανά μεταβλητή
margin.table(group.edu,1) # αριθμός ανά ομάδα
## group
## ektos parkou ektos parkou oreina entos parkou epixirisis
## 48 45 48 50
margin.table(group.edu,2) # αριθμός ανά εκπαίδευση
## edu
## deuterova metapty panepist protova technolo
## 88 1 27 25 50
### 1.2 Proportions table (Δημιουργια πίνακα ποσοστού συμμετοχής)
prop.gr.edu <- prop.table(group.edu)
prop.gr.edu
## edu
## group deuterova metapty panepist protova
## ektos parkou 0.089005236 0.005235602 0.041884817 0.015706806
## ektos parkou oreina 0.125654450 0.000000000 0.010471204 0.057591623
## entos parkou 0.115183246 0.000000000 0.026178010 0.047120419
## epixirisis 0.130890052 0.000000000 0.062827225 0.010471204
## edu
## group technolo
## ektos parkou 0.099476440
## ektos parkou oreina 0.041884817
## entos parkou 0.062827225
## epixirisis 0.057591623
## Εκτύπωση table με λιγότερα δεκαδικά
print(round(prop.gr.edu, 3))
## edu
## group deuterova metapty panepist protova technolo
## ektos parkou 0.089 0.005 0.042 0.016 0.099
## ektos parkou oreina 0.126 0.000 0.010 0.058 0.042
## entos parkou 0.115 0.000 0.026 0.047 0.063
## epixirisis 0.131 0.000 0.063 0.010 0.058
## Δημιουργία αντικειμένου με λιγότερα δεκαδικά
prop.gr.edu3 <- (round(prop.gr.edu, 3))
prop.gr.edu3
## edu
## group deuterova metapty panepist protova technolo
## ektos parkou 0.089 0.005 0.042 0.016 0.099
## ektos parkou oreina 0.126 0.000 0.010 0.058 0.042
## entos parkou 0.115 0.000 0.026 0.047 0.063
## epixirisis 0.131 0.000 0.063 0.010 0.058
### 1.3 υπολογισμός της τιμής κάθε κελιού σε έναν πίνακα ως ποσοστό όλων των τιμών
# proportions συνολικά για όλο το δείγμα
prop.table(group.edu)
## edu
## group deuterova metapty panepist protova
## ektos parkou 0.089005236 0.005235602 0.041884817 0.015706806
## ektos parkou oreina 0.125654450 0.000000000 0.010471204 0.057591623
## entos parkou 0.115183246 0.000000000 0.026178010 0.047120419
## epixirisis 0.130890052 0.000000000 0.062827225 0.010471204
## edu
## group technolo
## ektos parkou 0.099476440
## ektos parkou oreina 0.041884817
## entos parkou 0.062827225
## epixirisis 0.057591623
# proportions edu ανά group
## πόσοι στην ομάδα επιχειρήσεις είχαν edu
## άθροιση ποσοστών οριζόντια
prop.table(group.edu,1)
## edu
## group deuterova metapty panepist protova technolo
## ektos parkou 0.35416667 0.02083333 0.16666667 0.06250000 0.39583333
## ektos parkou oreina 0.53333333 0.00000000 0.04444444 0.24444444 0.17777778
## entos parkou 0.45833333 0.00000000 0.10416667 0.18750000 0.25000000
## epixirisis 0.50000000 0.00000000 0.24000000 0.04000000 0.22000000
prop.oma <- prop.table(group.edu,1)
prop.oma3 <- (round(prop.oma, 3))
prop.oma3
## edu
## group deuterova metapty panepist protova technolo
## ektos parkou 0.354 0.021 0.167 0.062 0.396
## ektos parkou oreina 0.533 0.000 0.044 0.244 0.178
## entos parkou 0.458 0.000 0.104 0.188 0.250
## epixirisis 0.500 0.000 0.240 0.040 0.220
## πόσοι ανά edu ανήκουν σε ένα group
## π.χ. όλοι με μεταπτυχιακό είναι εκτός πάρκου
## το 44% από ΠΕ ειναι από επιχειρήσεις
## άθροιση γραμμών κάθετα
prop.table(group.edu,2)
## edu
## group deuterova metapty panepist protova technolo
## ektos parkou 0.19318182 1.00000000 0.29629630 0.12000000 0.38000000
## ektos parkou oreina 0.27272727 0.00000000 0.07407407 0.44000000 0.16000000
## entos parkou 0.25000000 0.00000000 0.18518519 0.36000000 0.24000000
## epixirisis 0.28409091 0.00000000 0.44444444 0.08000000 0.22000000
prop.edu <- prop.table(group.edu,2)
prop.edu3 <- (round(prop.edu, 3))
prop.edu3
## edu
## group deuterova metapty panepist protova technolo
## ektos parkou 0.193 1.000 0.296 0.120 0.380
## ektos parkou oreina 0.273 0.000 0.074 0.440 0.160
## entos parkou 0.250 0.000 0.185 0.360 0.240
## epixirisis 0.284 0.000 0.444 0.080 0.220
######## ENOTHTA the chi-square #################
### 2.1: Applying the chi-square test function
chi.gr.edu <- chisq.test(group.edu)
## Warning in chisq.test(group.edu): Chi-squared approximation may be incorrect
# Viewing the result
print(chi.gr.edu)
##
## Pearson's Chi-squared test
##
## data: group.edu
## X-squared = 27.31, df = 12, p-value = 0.006971
### 2.2: Applying the chi-square test function
## μέσω ftable για δύο μεταβλητές
## (με 3 μεταβλητές λειτουργεί ως contingency table )
# Φόρτωση του πίνακα από το table
ftable (group.edu)
## edu deuterova metapty panepist protova technolo
## group
## ektos parkou 17 1 8 3 19
## ektos parkou oreina 24 0 2 11 8
## entos parkou 22 0 5 9 12
## epixirisis 25 0 12 2 11
# σύνοψη
summary(group.edu)
## Number of cases in table: 191
## Number of factors: 2
## Test for independence of all factors:
## Chisq = 27.31, df = 12, p-value = 0.006971
## Chi-squared approximation may be incorrect
## νέος πίνακας
age.edu <- table(age,edu)
ftable (age.edu)
## edu deuterova metapty panepist protova technolo
## age
## <18 4 0 0 5 0
## >60 9 0 0 13 5
## 19-30 15 0 8 1 15
## 31-45 28 1 11 2 21
## 46-50 32 0 8 4 9
summary (age.edu)
## Number of cases in table: 191
## Number of factors: 2
## Test for independence of all factors:
## Chisq = 67.79, df = 16, p-value = 2.425e-08
## Chi-squared approximation may be incorrect
###### ΕΝΟΤΗΤΑ 3 - Cramer's V measure of association ############
library (lsr) # για Cramer
## Cramér's V (sometimes referred to as Cramér's phi) is a measure of association
## between two nominal variables, giving a value between 0 and +1 (inclusive).
cramersV(group.edu)
## Warning in stats::chisq.test(...): Chi-squared approximation may be incorrect
## [1] 0.2183144
###### ΕΝΟΤΗΤΑ 4 - ΑΠΕΙΚΟΝΙΣΕΙΣ ############
### 4.1. Απεικονιση ως ραβδογράμματα
## 4.1.1. μέσω productplots
#install.packages("productplots")
library(productplots)
library(ggplot2)
prodplot (ecotour,~ group + edu) + aes(fill=group)
prodplot (ecotour,~ group + edu, stacked(direction = "h")) + aes(fill=group)
prodplot (ecotour,~ group + edu, mosaic(direction = "h")) + aes(fill=group)
## 4.1.2 μέσω PlotXtabs
# Για PloXTabs graphs
#install.packages("CGPfunctions") ## graphs
library (CGPfunctions)
library (ggplot2)
PlotXTabs(ecotour, group, edu)
## Plotted dataset ecotour variables group by edu
## Διμεταβλητά διαγράμματα ράβδων (στηλών) με στατιστικούς ελέγχους
## πλοτάριαμα της διαφοροποίησης; εκπαίδευσης ανά ομάδα
## 1o group & 2o edu
PlotXTabs2(ecotour, group, edu, title = "Τίτλος διαγράμματος")
## με δυνατότητα αλλαγής των λεζάντων (συνεργασία με ggplot)
PlotXTabs2(ecotour, group, edu, title = "Τίτλος διαγράμματος",legend.title="text",
xlab ="όνομα χ άξονα",ylab ="όνομα Y άξονα" ) +
scale_x_discrete(labels=c('label1', 'label2', 'label3', "label4"))+
scale_fill_discrete(labels=c('label1', 'label2', 'label3',
"label4", "label5"))
## Scale for fill is already present.
## Adding another scale for fill, which will replace the existing scale.
## πλοτάριαμα της διαφοροποίησης; ομάδα ανά εκπαίδευση
## 1o edu & 2o group
PlotXTabs2(ecotour, edu, group)
## πλοτάριαμα της διαφοροποίησης; φύλο ανά ομάδα
## 1o gender & 2o group
PlotXTabs2(ecotour, gender, group)
## πλοτάριαμα της διαφοροποίησης; φύλο ανά εκπαίδευση
## 1o gender & 2o edu
PlotXTabs2(ecotour, gender, edu)
## πλοτάρισμα συγκεκριμένων ομάδων
library (dplyr) # για φιλτράρισμα πληροφορίας
##
## Attaching package: 'dplyr'
## The following objects are masked from 'package:stats':
##
## filter, lag
## The following objects are masked from 'package:base':
##
## intersect, setdiff, setequal, union
# επιλογή δύο ομάδες από τις τέσσερις
new.table1 <- ecotour %>% filter(group == "entos parkou" | group == "ektos parkou")
PlotXTabs2(new.table1, edu, group)
PlotXTabs2(new.table1, gender, group)
# επιλογή δύο ομάδες από τις τέσσερις
new.table2 <- ecotour %>%filter(group == "entos parkou" | group == "epixirisis")
PlotXTabs2(new.table2, edu, group)
PlotXTabs2(new.table2, gender, group)
##### END OF CODE ######
Note that the echo = FALSE
parameter was added to the
code chunk to prevent printing of the R code that generated the
plot.