[Acest articol a fost publicat pentru prima data pe Blogul lui Yongfu si a contribuit cu drag la bloggerii R]. (Puteti raporta o problema despre continutul de pe aceasta pagina aici)
Vrei sa impartasesti continutul tau pe bloggerii R? faceti clic aici daca aveti un blog sau aici, daca nu.
Taiwan Language Survey este un proiect mic la care am lucrat in perioada mai pana in iunie in 2018. Ideea a fost sa creez un sondaj care colecteaza continuu date si o pagina web care vizualizeaza datele colectate. Pagina web este actualizata saptamanal folosind Travis-CI.
Scopul principal al acestui sondaj este de a sensibiliza publicul cu privire la pierderea de limbi in Taiwan. Prin urmare, sondajul este conceput pentru a colecta date care pot furniza informatii valoroase despre pierderea limbii, de exemplu, unele intrebari au fost invitate sa obtina cunostinte cu privire la schimbarea competentelor lingvistice generatii acide intr-o familie (adica intre parintii subiectului, subiectul si copiii subiectului). Pe langa schimbarile din cadrul familiei, informatiile despre varsta subiectilor sunt de asemenea colectate, ceea ce inseamna ca putem vedea cum se schimba competenta lingvistica intre diferitele grupe de varsta ale subiectilor dintr-o comunitate, adica o limba devine mai dominanta sau intra in procesul de moarte?
Vizualizarea este un instrument puternic pentru a surprinde modul in care se schimba competentele lingvistice ale diferitelor langauges. Crearea vizualizarilor necesita creativitate – cum poate fi vizualizata pierderea limbajului? Mai jos, ilustrez una dintre metodele pe care le-am creat pentru vizualizarea pierderii limbajului – o vizulare inspirata de piramida sexului de varsta.
Piramida limbajului de varsta-sex
Piramida sex-varsta este utilizata pentru a vizualiza structura populatiei unei comunitati. Axa verticala indica varsta si fiecare bara orizontala reprezinta o grupa de varsta. Axa orizontala indica dimensiunea populatiei de barbati sau femei dintr-un anumit grup de varsta.
Piramida sex-varsta este un instrument excelent pentru vizualizarea structurii populatiei, deoarece „forma” piramidei ofera cititorilor o multime de informatii. De exemplu, o “piramida expansiva” are bare mai lungi in partea inferioara a piramidei, ceea ce indica faptul ca populatia este tanara si in crestere. O „piramida stationara” arata ca o bara dreptunghiulara, ceea ce indica dimensiunile populatiei diferitelor grupe de varsta sunt aproximativ aceleasi. O piramida „constructiva” indica o populatie in scadere, care este restransa in partea de jos.
In mod similar, o versiune modificata a piramidei sex-varsta, pe care o voi numi „piramida sex-varsta a limbajului”, poate fi utilizata pentru a vizualiza structura populatiei unei limbi si prezice vitalitatea limbii. In loc sa vizualizeze dimensiunea populatiei, piramida limbajului de varsta-sex vizualizeaza fluenta medie a unei limbi pe axa orizontala.
Figura 1: O piramida sex-varsta din Taiwan. Barele rosii din stanga indica femele de diferite grupe de varsta, iar barele albastre din dreapta indica barbati. Fluenta medie (valorile pe axa orizontala) este calculata pe o scara de sase puncte (0-5) pe fluenta taiwaneza.
Dupa cum se arata in figura 1, forma piramidei sex-varsta a taiwanezului din Taiwan1 este un „triunghi inversat”, care nu se vede aproape niciodata in piramida conventionala a populatiei. Cu toate acestea, aceasta forma triunghiulara inversata este de asteptat sa apara destul de des, deoarece indica o pierdere de limba in curs intr-o comunitate.
Vitalitatea limbajului Forma de piramida Se micsoreaza si moare Triunghi inversat Triunghi in crestere Stabil Bar Retangualr
Piramida varstei sexuale cu ggplot2
Oricat de complex ar parea, o piramida sex-varsta creata cu ggplot2 este de fapt un grafic de bare (modificat). Am invatat asta pe stackoverflow, si trucul este
- Utilizati ifelse pentru a rula valoarea (aici, dimensiunea populatiei) in functie de sexul grupului de varsta
- Folositi geom_bar (stat = “identitate”) pentru a lasa inaltimile barelor sa reprezinte valori in cadrul de date, adica valoarea data la y
- Utilizati coord_flip () pentru a face barele orizontale
set.seed (1) df0 tibble :: tibble (Varsta = rep (c (’10 -19 ‘, ’20 -29’, ’30 -39 ‘), 2), Sex = rep (c (‘ Femeie ‘, „Masculin”), fiecare = 3), PopSize = esantion (0: 100, marime = 6, inlocuieste = T)) df0
library (ggplot2) pl ggplot (df0, aes (x = Age, y = ifelse (Sex == ‘Masculin’, PopSize, -PopSize), fill = Gender)) + geom_bar (stat = ‘identitate’) + coord_flip () pl
Pentru a centra parcela (adica pentru a face punctul in care dimensiunea populatiei este zero in centrul parcelei), trebuie sa scalam axa „dimensiunii populatiei” (y) cu scale_y_continuous:
pl + scale_y_continuous (limite = c (-100, 100), pauze = seq (-100, 100, 25), etichete = abs) + laboratoare (y = ‘Dimensiunea populatiei’)
unde abs in etichete este functia abs (). In mod implicit, ggplot2 trece valoarea data in pauze functiei specificate in etichete.
Vizualizarea pierderii limbajului
Pentru a crea o piramida de limba de varsta, structura de date necesara este exact aceeasi ca cea de mai sus, cu exceptia variabilei, PopSize, este inlocuita de „fluiditatea medie” a unei limbi. Dar, deoarece majoritatea oamenilor din Taiwan pot vorbi mai mult de o limba (de exemplu, mandarina-taiwaneza, mandarino-taiwaneza-hakka, mandarina-engleza etc.), datele reale ale sondajului sunt ceva mai complexe Practic, structura de date necesara pentru deseneaza o piramida de sex in varsta a limbajului arata:
Etnie de gen Grup de varsta mediu Femeie mandarina fluenta 20-24 4,53 masculi taiwaneze 20-24 2,78………… femeie Hakka 25-29 2,23 barbat taiwanez 35-39 3,57
Pregatirea datelor
Datele brute ale studiului lingvistic din Taiwan pot fi preluate aici. Sondajul si datele brute sunt in chineza traditionala. Voi omite pasul de curatare a datelor brute (de exemplu, voi transforma numele variabile in engleza) si voi folosi in schimb datele curatate survey.rds.
temp tempfile () download.file (‘https://raw.githubusercontent.com/twLangSurvey/twLangSurvey.github.io/master/data/survey.rds’, destfile = temp) date Reader :: read_rds (temp) head ( date, 3)
Datele sondajului, date, contin 22 de variabile si 257 de observatii (subiecti). Mai jos am nevoie de aceste variabile pentru a crea complotul pe care il doresc:
- sex: Genul subiectului
- varsta: varsta subiectului
- m_guard_identity: Masculul tutore al subiectului, ar trebui sa fie „tata” in majoritatea cazurilor
- f_guard_identity: femeia tutore a subiectului, ar trebui sa fie „mama” in majoritatea cazurilor
- _speak: Fluenta subiectului a unei limbi. este una dintre „Mand” (mandarina), „Tw” (taiwaneza), „Hak” (Hakka), „Ind” (limbile popoarelor indigene, denumite limbi Formosan, apartin limbilor austronesiene), „SEA” (limbi din Asia de Sud-Est) si „Eng” (engleza)
- dad__speak: Fluenta unei limbi a tutorelui masculin al subiectului. este la fel ca mai sus.
- mom__speak: Fluenta unei limbi a tutorelui feminin al subiectului. este la fel ca mai sus.
library (dplyr) lang c (‘Mand’, ‘Tw’, ‘Hak’, ‘Ind’, ‘SEA’, ‘Eng’) cols c (‘sex’, ‘varsta’, ‘m_guard_identity’, ‘f_guard_identity’, paste0 (lang, ‘_speak’), paste0 (‘dad_’, lang, ‘_speak’), paste0 (‘mom_’, lang, ‘_speak’)) data data [, cols]%>% filter (gen == ‘男 ‘| sex ==’ 女 ‘)
Intrucat un anumit continut al datelor sondajului este in chineza, codul de mai jos este utilizat pentru a traduce in limba engleza:
functia ch2eng (x) {if (x == ‘男’) return (‘Masculin’) if (x == ‘女’) return (‘Femeie’) if (x == ‘母親’) return (‘Mother’) ) if (x == ‘父親’) return (‘tata’) if (x == ‘無’) return (‘none’) if (x == ‘(外) 祖父’) return (‘bunicul’) if (x == ‘(外) 祖母’) returnare (‘Bunica’) daca (x% in% c (‘阿姨’, ‘嬸嬸’, ‘舅媽’, ‘姑姑’, ‘伯母’)) retur (‘Matusa’) ‘) if (x% in% c (‘ 叔叔 ‘,’ 伯伯 ‘,’ 舅舅 ‘,’ 姑丈 ‘,’ 姨丈 ‘)) returneaza mesajul (‘ Uncle ‘) (‘ Nu a fost gasita nicio traducere pentru ”, x, ‘ `’,’ \ n ‘) return (x)} functie ch2eng_vec (vec) {vector_vec nou (typeof (vec), lungime (vec)) pentru (i in seq_along (vec)) {new_vec [[i]] ch2eng ( vec [[i]])} returnare (nou_vec)} date date%>% muta (sex = ch2eng_vec (sex),m_guard_identity = ch2eng_vec (m_guard_identity), f_guard_identity = ch2eng_vec (f_guard_identity)) head (date)
Definirea etnicitatii
Este posibil sa observati ca nu exista nicio variabila in date care sa indice explicit etnia subiectului. Pentru a servi scopul acestui sondaj – vizualizarea vitalitatii limbilor intr-o comunitate, etnia este definita numai de competenta lingvistica a tutorilor unui subiect.
Pentru a da un exemplu specific, lasati subiectul A sa aiba o mama care poate vorbi2 Mandarina si taiwaneza si un tata care vorbeste mandarina si Hakka, apoi subiectul A este clasificat in mandarina, taiwanez si Hakka simultan.
Functia filter_ethnic () este utilizata pentru a filtra subiectii cu „etnie” specificata. Aceasta functie este utila pentru desenarea piramidei de sex in varsta pentru fiecare din cele sase limbi.
filter_ethnic function (df, lang, lev = 3) {sp_lang vector (“caractere”, 3) sp_lang [1] paste0 (“dad_”, lang, “_speak”) sp_lang [2] paste0 (“mom_”, lang, ” _speak “) sp_lang [3] paste0 (lang,” _speak “) df2 df%>% filter (m_guard_identity! = ‘Niciunul’ | f_guard_identity! = ‘Nimeni’)%>% filter (.data [[sp_lang [1]]) ]> = lev | .data [[sp_lang [2]]]> = lev)%>% select (varsta, sex, sp_lang) revenire (df2)}
Asocierea grupului de varsta la subiecti
Nu uitati ca structura de date necesara pentru trasarea piramidelor sexuale de varsta necesita ca grupul de varsta sa fie unitatea de baza. datele contin acum subiecte individuale si avem nevoie de informatii pentru a grupa subiectii in functie de varsta. mutate_age_group () creeaza o noua variabila age_group in functie de varsta subiectului.
functie mutate_age_group (df, interval = 5) {df $ age_group as.character (taiat (df $ age, right = F, pauze = seq (10, 95, dupa = range))) return (df)}
cut () ia un vector numeric ca prima intrare si codifica valorile vectorului in valori noi in functie de intervalul in care se incadreaza. In mutate_age_group (), cut () codeaza vectorii de intrare in functie de intervalele specificate in pauzele argumentului.
Acum putem folosi aceste functii pentru a adauga mai multe informatii in cadrul de date. Ideea este sa cream mai intai un cadru de date separat pentru fiecare etnicitate3 (prin filter_ethnic ()), apoi sa atacam noi variabile la cadrul de date care indica etnia unui subiect (etn_grup) si grupul de varsta (varsta_grup).
lang c (‘Mand’, ‘Tw’, ‘Hak’, ‘Ind’, ‘SEA’, ‘Eng’) lev c (3, 3, 3, 3, 3, 0) vector etn_list_df (“lista”, lungime (lang)) pentru (i in seq_along (lang)) {ethn_list_df [[i]] filter_ethnic (date, lang = lang [i], lev = lev [i])%>% mutate (ethn_group = lang [i]) %>% mutate_age_group ()%>% select (varsta, sex, varsta_grup, ethn_group, paste0 (lang [i], “_speak”))%>% renume (lang_fluency = paste0 (lang [i], “_speak”)) }
Apoi, putem recombina aceste cadre de date la unul singur, iar acest nou cadru de date are acum informatii despre etinitatea si grupa de varsta din care face parte. (Retineti ca noul cadru de date este cheltuit, deoarece un subiect poate avea mai multe etnii, adica un subiect poate aparea in randuri diferite ale cadrului de date cu etnie diferita.)
bind_rows (ethn_list_df)%>% cap ()
Date pentru complot
In sfarsit, suntem pregatiti sa grupam subiectii in functie de sex, etnie si grup de varsta. Dupa grupare, putem folosi dplyr :: summum () pentru a calcula fluenta fiecarui grup a limbii, care va fi utilizata ca variabila pe axa orizontala a piramidei sex-varsta.
pl_data bind_rows (ethn_list_df)%>% group_by (sex, etn_group, age_group)%>% rezuma (medie (lang_fluency))%>% renume (avg_fluency = `mean (lang_fluency)`) head (pl_data)
Functia de planificare
Vom desena 6 piramidele sexuale de varsta, una pentru fiecare limba. Deci, in loc sa scriu ggplot () de sase ori, am scris o functie de complot:
library (ggplot2) pl_pyramid function (data, title = NULL) {ggplot (data, aes (x = age_group, y = ifelse (gender == ‘Male’, avg_fluency, -avg_fluency), fill = sex)) + geom_bar (stat = “identitate”, latime = 0,7) + scale_y_continuous (limite = c (-5, 5), pauze = urmarire (-5, 5, 1), etichete = abs (urm (-5, 5, 1)) + coord_flip () + scale_fill_manual (valori = c (“# E41A1C”, “# 377EB8”), pauze = c (“Femeie”, “Masculin”)) + laboratoare (x = “Varsta”, y = “Fluenta”, completare = “”, title = title)}
Acum putem incepe sa complotam. Sa incercam mai intai Mand (mandarin) si Hak (Hakka). Putem folosi dplyr :: filter () pentru a filtra persoanele care vorbesc aceste limbi:
tweak theme_bw () + theme (axis.text = element_text (marime = 15), legend.justification = “right”, legend.
porno italiene http://curzonprints.com/__media__/js/netsoltrademark.php?d=filmeporno2.com/
filme porno cu surori http://mariabingosverige.com/__media__/js/netsoltrademark.php?d=filmeporno2.com/
andreea banica porno http://smilesource.us/__media__/js/netsoltrademark.php?d=filmeporno2.com/
filme porno masaj http://dellsscenictours.com/__media__/js/netsoltrademark.php?d=filmeporno2.com/filme-porno/amatori
gypsy porno http://vitechamerica.com/__media__/js/netsoltrademark.php?d=filmeporno2.com/filme-porno/anal
flocoase porno http://moomooski.com/__media__/js/netsoltrademark.php?d=filmeporno2.com/filme-porno/asiatice
porno cu mia khalifa http://sunqatar.com/__media__/js/netsoltrademark.php?d=filmeporno2.com/filme-porno/beeg
porno hiden http://askalternativedoc.com/__media__/js/netsoltrademark.php?d=filmeporno2.com/filme-porno/blonde
filme porno cu ejaculare in pizda http://mysteriesofgiftspassionandpower.com/__media__/js/netsoltrademark.php?d=filmeporno2.com/filme-porno/brazzers
fimle porno http://www.thisisyour-life.com/__media__/js/netsoltrademark.php?d=filmeporno2.com/filme-porno/brunete
porno extrem bizare http://hackerscamp.com/__media__/js/netsoltrademark.php?d=filmeporno2.com/filme-porno/chaturbate
porno cu ciini http://extramillionkeno.com/__media__/js/netsoltrademark.php?d=filmeporno2.com/lesbiene-bune-rau-se-ling-in-pizda
filme porno mama http://locolarry.com/__media__/js/netsoltrademark.php?d=filmeporno2.com/blonda-cu-fundul-mare-se-fute-incredibil-in-pizda
dezvirginare porno http://ledforum.com/__media__/js/netsoltrademark.php?d=filmeporno2.com/latina-cu-tate-mari-e-fututa-intr-un-magazin
porno overwatch http://metairieguitarlessons.com/__media__/js/netsoltrademark.php?d=filmeporno2.com/asiatica-cu-sanii-imensi-e-fututa-pasional-de-prietenul-ei
caut film porno http://townandcountrymagazine.info/__media__/js/netsoltrademark.php?d=filmeporno2.com/fata-mica-sexy-rau-sta-in-genunchi-si-suge-pula
filme porno fete mici http://kondorentertainment.org/__media__/js/netsoltrademark.php?d=filmeporno2.com/cuplu-de-asiatici-fac-sex-in-mai-multe-pozitii-in-bucatarie
filme porno gratis subtitrate http://ostergar.org/__media__/js/netsoltrademark.php?d=filmeporno2.com/pustoaica-fututa-salbatic-intr-o-masina
porno gey http://pro-pulseur.com/__media__/js/netsoltrademark.php?d=filmeporno2.com/asistenta-medicala-fututa-de-un-doctor
filme porno strap on http://remgeorgia.com/__media__/js/netsoltrademark.php?d=filmeporno2.com/doi-minori-se-filmeaza-cum-se-fut-pentru-prima-data1
position = “bottom”, legend.box = “vertical”) pl_data%>% filter (ethn_group = = ‘Mand’)%>% pl_pyramid (title = ‘Mandarin’) + tweak pl_data%>% filter (ethn_group == ‘Ind’)%>% pl_pyramid (title = ‘Limbi Formosan’) + tweak
Astepta! Pare destul de ciudat. Piramida sex-varsta din „Limbi Formosan” nu arata deloc ca o piramida!
Acest lucru se datoreaza faptului ca au fost foarte putini subiecti definiti ca „indigeni” in sondaj. Pentru a face comploturi de acest fel (cu doar una sau doua grupe de varsta) comparabile cu altele (cum ar fi cea din „Mandarin”), avem nevoie de o alta functie pentru a insera grupuri de varsta lipsa in cadrul de date, astfel incat ggplot sa poata atrage bare goale pentru noi .
In primul rand, trebuie sa aflam toate grupele de varsta din date:
age_groups unic (pl_data $ age_group) age_groups [1] “[15,20)” “[20,25)” “[25,30)” “[30,35)” “[35,40)” “[40, 45) “” [45,50) “[8]” [50,55) “” [55,60) “” [60,65) “” [65,70) ”
Apoi putem scrie o functie fill_empty_age_group (), care ia un cadru de date ca prim argument si verifica daca lipsesc grupe de varsta in cadrul de date (folosind al doilea argument, age_group_all, ca comparatie). Daca grupul de varsta lipseste, fill_empty_age_group () adauga un nou rand, care are age_group setat pe grupul de varsta lipsa si avg_fluency setat pe 0 (creeaza o bara goala), la cadrul de date de intrare.
fill_empty_age_group function (df, age_group_all) {for (i in seq_along (age_group_all)) {if (! (age_group_all [i]% in% df $ age_group)) “does_matter”, age_group = age_group_all [i], avg_fluency = 0))}} return (df)}
Acum suntem pregatiti sa exploram pierderea de limbi straine in Taiwan.multiplot () este folosit pentru a pune mai multe parcele. Codul sursa al multiplototului () este copiat direct din Cartea de bucate a lui Winston Chang pentru R.
tweak2 theme_bw () + theme (legend.justification = “right”, legend.position = “bottom”, legend.box = “vertical”) py1 pl_data%>% filter (ethn_group == ‘Mand’)%>% fill_empty_age_group ( age_groups)%>% pl_pyramid (title = ‘Mandarin’) + tweak2 py2 pl_data%>% filter (ethn_group == ‘Tw’)%>% fill_empty_age_group (age_groups)%>% pl_pyramid (title = ‘Taiwanese’) + tweak2 py3 pl_data%>% filter (ethn_group == ‘Hak’)%>% fill_empty_age_group (age_groups)%>% pl_pyramid (title = ‘Hakka’) + tweak2 py4 pl_data%>% filter (ethn_group == ‘Ind’)%>% fill_empty_age_group (age_groups)%>% pl_pyramid (title = ‘Limbi Formosan’) + tweak2 py5 pl_data%>% filter (ethn_group == ‘SEA’)%>% fill_empty_age_group (age_groups)%>% pl_pyramid (title = ‘Limbi din Asia de Sud-Est’) + tweak2 py6 pl_data%>% filter (ethn_group == ‘Eng’)%>% fill_empty_age_group (age_groups)%>% pl_pyramid (title = ‘Engleza’) + tweak2 multiplot (py1, py2, py3, py4, py5, py6, cols = 2)
Pierderea limbajului in Taiwan
Asa cum s-a descris in Piramida varstei sexuale de mai sus, putem afla despre vitalitatea unei limbi in Taiwan din piramidele sexuale de varsta trasate mai sus.
Pentru limbile formosane si sud-estul Asiei, exista prea putine date si nu putem invata prea multe despre aceste limbi din comploturi. Pentru mandarina, forma piramidei este retangulara, ceea ce indica competenta lingvistica a mandarinei este stabila la toti oamenii de toate varstele. Aceasta este de asteptat, intrucat mandarina, in Taiwan, este cea mai raspandita limba, iar majoritatea oamenilor o folosesc ca limba principala la locul de munca si acasa.
Piramidele din Taiwan si Hakka au forme trianglulare inversate, ceea ce indica o competenta lingvistica mai scazuta in randul persoanelor yongere. Intr-adevar, nu este ceva neobisnuit sa vezi tatii si mamele vorbind cu copiii lor in mandarina, ci sa vorbeasca cu parintii lor din Taiwan. Taiwanul este a doua limba predominanta in Taiwan, dar este in scadere, in special in randul tinerilor. Hakka ocupa locul trei in prevalenta. Se confrunta cu o situatie similara cu cea a Taiwanului, dar situatia este si mai grava, deoarece utilizarea Hakka este in mare parte limitata la populatia Hakka, in timp ce utilizarea taiwanezului nu se limiteaza la anumite grupuri de oameni (multe persoane indigene si Hakka vorbesc fluent taiwanezul).
Engleza are un statut special in Taiwan. Nu este o limba materna pentru oamenii nascuti si crescuti in Taiwan, dar multi stiu cel putin putin engleza. Aceasta deoarece educatia formala si (constientizarea) globalizarii ii determina pe parinti sa acorde importanta educatiei engleze a copiilor lor. Acest lucru ofera, de asemenea, piramida sex-varsta a limbii engleze – o forma triunghiulara cu fundul mai larg decat partea superioara. Engleza este singura limba care creste in Taiwan si, probabil, limba cu cea mai puternica vitalitate. Tabelul 1 rezuma discutia de mai sus.
Tabelul 1: Situatiile celor patru limbi predominante din Taiwan. Vitalitatea limbajului Exemple de forma de piramida (Taiwan) Reducerea si moartea Triunghi inversat Taiwan, Triunghi in crestere Hakka Engleza Stabila Retangualr Bar Mandarina
Ultima actualizare: 2017-02-17
Legate de
Daca ai ajuns pana acum, de ce sa nu te abonezi pentru actualizari de pe site? Alege-ti aroma: e-mail, twitter, RSS sau facebook …








