Pleserau anhysbys R

 

Iaith sgriptio sy’n cael ei ddefnyddio gan fathemategwyr ac ystadegwyr yw R. Mae’n becyn defnyddiol iawn i brototeipio modelau ystadegol, ac y mae ganddi gefnogaeth dda i ddelweddu gwybodaeth ofodol a chreu mapiau. Un math o fap posib yw choropleth, sy’n cael ei ddangos yn dda gan Siôn Gwilym yma (rhagolwg isod – does gen i ddim syniad os yw wedi defnyddiodd R neu beidio, ond dyma’r hyn sydd i’w ddisgwyl).

Iaith sgriptio arall, ond un sydd bosib yn fwy poblogaidd erbyn hyn yw Python. Mae Python yn ddefnyddiol i wneud pob math o dasgau ailadroddus, ac yn syml, sef dileu cromfachau mewn 1000 ffeil mewn ffolder ar unwaith, trin gwybodaeth yn fathemategol, a graffio gwybodaeth. Ond mae’n ddigon pwerus i reoli synhwyrau electronig e.e. cofnodi tymheredd dros amser. Mantais Python yw bod cymuned fawr oddi amgylch hi, sy’n golygu bod mwy o bobl yn cynnig nodweddion newydd ac yn cyhoeddi gwelliannau cyffredinol. Er bod Python mymryn ar y blaen, tydi hi ddim o bell ffordd wedi curo R.

Yn dibynnu ar yr hyn yr ydych yn ceisio’i gyflawni, mae gan Python a R ei fanteision ac anfanteision. Felly, yn aml caiff y ddwy iaith sgriptio ei ddefnyddio ar y cyd.

Daw bôn y syniad yn y llun isod gan waith James Cheshire, sydd yn ddarlithydd mewn cartograffeg a gwybodaeth ofodol yn UCL, ac sydd yn aml yn cyhoeddi ei waith fel yn yr achos hwn. Mae’n cyfeirio at ddulliau gan ddau berson arall sy’n creu’r un effaith – oll yn rhannu eu cod. Ym mhob achos maent yn dibynnu ar ddata o’r byd cyfan gan y Cenhedloedd Unedig, sydd wedi ei drawsnewid i mewn i rid yn barod. H.y. pwyntiau o ddata wedi eu gwahanu i mewn i sgwariau cyson. Y broblem gyda phrosesu set o ddata mawr ar gyfrifiadur cyffredin yw eich bod angen lot o gof (RAM) a lle disg – anghenion sydd yn fwy na chyfrifiadur personol. (Mae’r data ei hun yn dibynnu ar amcangyfrifon poblogaeth yn seiliedig ar rid 1 km sgwâr.)

I osgoi’r broblem o ddiffyg adnoddau cyfrifiadurol, lawrlwythais gwybodaeth Cyfrifiad 2011, sydd yn rhoi’r nifer o bobl breswyl ym mhob cod post ar noson y cyfrifiad. Yn ogystal â hyn lawrlwythais wybodaeth Arolwg Ordnans (OS) Code-Point Open, sydd yn cynnwys data ar god post a hefyd manylion gogleddiad a dwyreiniad y canolbwynt. Mae llawer o wybodaeth yr Arolwg Ordnans o dan drwydded. Hefyd, mae’r system cod post gan y Post Brenhinol o dan hawlfraint, felly mae’n bosib cael mwy o wybodaeth ond ar yr amod eich bod yn talu!

Yn aml, yr ydym yn ystyried y Ddaear fel sffêr perffaith, ond tydi hi ddim, ac mae angen tafluniad daearyddol – newid o bwyntiau tri-dimensiwn y Ddaear i ddau-dimensiwn fflat i ddangos ar bapur. Mae trosi o un tafluniad daearyddol i un arall, sef gogleddiad a dwyreiniad i hydred a lledred, yn beth gymhleth. Nid yw crymedd y Ddaear yn yr Alban yr un fath yng Nghymru! I drosi o ogleddiad a dwyreiniad i hydred a lledred, mae angen gwybod beth yw’r hafaliadau sy’n berthnasol i ran o’r Ddaear sy’n cynnwys Ynysoedd Prydain, a gwneud lot o waith trigonometreg. Yr oeddwn yn rhy ddiog i fentro ar hyn, felly wnes i ddefnyddio gwasanaeth Google Maps API. Drwy ddefnyddio pecyn Python GeoPy, mae’n bosib anfon cod post i Google Maps, a chael cyfeiriad, hydred a lledred yn ôl. Felly cychwynnais drwy ail-adrodd y broses hon drwy ffeil llawn codau post sy’n ymwneud a Chymru. Fel llawer o wasanaethau API mae terfyn ar faint o wybodaeth a chewch yn ôl. Yn achos Google Maps, 2500 pob 24 awr yw hi – mae gan Gymru fyny at 100,000 o godau post; digon o amser i ffoi i’r anialwch am gyfnod (40 diwrnod)!

Wrth i’r data hydred a lledred cael ei gasglu’n araf, ceisiais wneud plot miniog, fel un James Cheshire, o Gymru, ond mae’r pwyntiau wedi eu gwasgaru’n anhrefnus. I greu’r plot, mae angen gwybodaeth ar ffurf grid. Un ffordd o wneud hyn gyda’r data’r oeddwn wedi ei gasglu oedd trwy ryngosodiad – sef amcangyfrif poblogaeth mewn un pwynt, o wybod y boblogaeth mewn pwysiau eraill cyfagos. Un math o fodel rhyngosod yw Krige, sef dull ystadegol a ddatblygwyd gan Danie Krige yn Ne Affrica i amcangyfrif dwysedd mwyn aur yn y tir.

I ddangos enghraifft o ryngosod Krige, dyma dri phlot o boblogaeth y Bala, gyda gridiau o faint gwahanol.

Buasai gwneud hyn dros Gymru gyfan wedi cymryd oriau i ddyddiau. Am bob pwynt ychwanegol, mae rhyngosod Krige yn ail-gyfrifo’r gwerth i bob un cyfagos. I geisio lleihau’r amser prosesu, fe wnes i wnes i dalu am weinydd Elastic Compute 2 (EC2) ar Amazon Web Services a rhagosod R Studio Server, i gael mynediad at fwy o adnoddau, ond yr oedd hyn am fod yn rhy ddrud.

Felly es i’n ôl at y data yr oeddwn efo’n barod a cheisio trosi o ogleddiad a dwyreiniad i hydred a lledred. Cychwynnais ar geisio ysgrifennu’r hafaliadau angenrheidiol, cyn gwneud mwy o graffu ar y we am god wedi ei ysgrifennu gan rywun arall. Mae pecyn Python UTM ar gael, ond tydi o ddim i’w weld yn gweithio’n iawn. Yn ddigon lwcus i mi, mae Hannah Fry wedi casglu cod i wneud y trosi, ac mewn sawl iaith, gan gynnwys Python!

Felly yn Python, rhedeg ffwythiant i drosi gogleddiad/dwyreiniad i hydred/lledred i bob cod post yng Nghymru, wedyn defnyddio pecyn Pandas i uno cynnwys y ffeil gyda’r cyfesurynnau gyda ffeil arall sydd efo poblogaeth pob cod post. Wedyn mewnbynnu’r data i mewn i R gan ddefnyddio’r cod yn fan hyn gan Ryan Brideau gan newid un neu ddau o nodweddion. I gloi, gwneud dipyn o dacluso mewn Photoshop. Oherwydd adnabyddiad o ddiffyg adnoddau cyfrifiaduron, mae cod Ryan Brideau yn defnyddio pecyn sy’n cymryd mantais o brosesu paralel. Yn y mwyafrif o gyfrifiaduron y dyddiau hyn, mae sawl prosesydd. Os nad yw meddalwedd wedi ei ddylunio’n iawn, bydd ond yn defnyddio un prosesydd ar y tro yn lle e.e. pedwar, gan gymryd pedair gwaith yn hwy.

Felly dyma ail-greu map James Cheshire o Gymru, gydag addasiad bach i god Ryan Bridau i greu map o Gymru ar ffurf celf clawr albwm Joy Division, Unknown Pleasures. Mae’r map yn dangos poblogaeth gymarebol a dwysedd. Yn ddiddorol, mae’n bosib adnabod tirlun Cymru yn ôl y llefydd mae pobl yn trigo, heb ddangos unrhyw ffiniau.

This entry was posted in Uncategorized. Bookmark the permalink. Post a comment or leave a trackback: Trackback URL.

Post a Comment

Your email is never published nor shared. Required fields are marked *

You may use these HTML tags and attributes <a href="" title=""> <abbr title=""> <acronym title=""> <b> <blockquote cite=""> <cite> <code> <del datetime=""> <em> <i> <q cite=""> <s> <strike> <strong>

*
*