190 likes | 206 Views
The BrailleR Project aims to empower blind individuals in education and work by developing software that allows them to perform statistical analyses and create accompanying graphs independently. By utilizing the R programming language, this project provides blind individuals with a free and universal solution for statistical work. The BrailleR software incorporates tactile and text-based solutions, making statistical analyses accessible to blind individuals with varying skill sets and language abilities. This project seeks to bridge the gap between blind individuals and their sighted counterparts, promoting independence and efficiency in statistical work.
E N D
The BrailleR Project A. Jonathan R. Godfrey
Philosophy Give a man a fish and you feed him for a day; teach a man to fish and you feed him for a lifetime. 魚を一匹やれば1日食いつなぐが、魚の取り方を教えてやれば一生食いはぐれることはない
AIM: Independence • A challenge for me personally, and many blind people. • In education or work. • How can we make the graphs, flow charts etc. that are so necessary for a visual audience? • How can we be as efficient and effective as our sighted colleagues when needing to perform statistical analyses? • The challenge: To create statistical analyses and accompanying graphs for a sighted audience, without any assistance from sighted support staff or colleagues.
The right software • Choosing the software that minimizes the gap between a blind person’s capacity and that of their sighted peers is crucial. • There are limited choices for the blind person. • Impossible: Statistica, GenStat • Difficult: Minitab, SPSS • Reasonable: Stata, SAS • Best: SPlus, R
R and SPlus • The best option, but not perfect. • R is free, SPlus is commercial. • Both use the same underlying syntax of the S programming language. • I favour R as it is free, runs on all platforms and is expanding to include more oral languages. • it is becoming universal. • R works for blind people without special scripts or modifications. We run it like the sighted run it.
Meeting the challenge • Work is being done on tactile solutions. • Audio solutions are possible for some mathematical work but less useful for statistical work. • Any developments need to work for a wide range of skill sets: • Statistical knowledge. • Visual acuity = braille vs synthetic speech (or both). • And language ability. • A simple text-based solution is favoured. • BrailleR is the result.
Storage of “objects” • No matter what task we are doing, R stores our work in an object. • An object is normally just a list of named elements, each of which is usually a series of values. • Each list element can be given attributes which tell the software what the element is for and how to use it.
Handling objects • Objects can be assigned a “class”. • A class signifies that all objects will have the same set of elements. • We can write functions that handle objects of a particular class. • A family of these functions is called a “method”. • A method must have a function to handle all objects that are not specifically handled by named functions. • Most common method is the print method. The plot method is also used frequently.
The VI method • I have started writing functions that handle objects that are normally used to make graphs. • A histogram is stored as a list of values that are subsequently fed into the plotting function. • Some of the elements are irrelevant or duplicative in order to ensure backwards compatibility with older ways of working. Some elements are only used under specific conditions for the histogram, such as unequal bin widths.
Creating a histogram • Typing y=rnorm(1000) x=hist(y, col=4) gives:
Explicit creation of an object • The object x can be printed out by typing print(x) $breaks [1] -3.0 -2.5 -2.0 -1.5 -1.0 -0.5 0.0 0.5 1.0 1.5 2.0 2.5 3.0 3.5 4.0 $counts [1] 3 13 45 91 154 202 199 146 83 38 13 10 2 1 $intensities [1] 0.006 0.026 0.090 0.182 0.308 0.404 0.398 0.292 0.166 0.076 0.026 0.020 [13] 0.004 0.002 $density [1] 0.006 0.026 0.090 0.182 0.308 0.404 0.398 0.292 0.166 0.076 0.026 0.020 [13] 0.004 0.002 $mids [1] -2.75 -2.25 -1.75 -1.25 -0.75 -0.25 0.25 0.75 1.25 1.75 2.25 2.75 [13] 3.25 3.75 $xname [1] "y" $equidist [1] TRUE attr(,"class") [1] "histogram"
BrailleR gives a better result • Typing VI(x) gives: This is a histogram, with y marked on the x-axis, unless you explicitly used the xlab argument. There are a total of 1000 elements for this variable. It has 14 bins with equal widths, starting at -3 and ending at 4. The mids and counts for the bins are... mid = -2.75 count = 3 mid = -2.25 count = 13 mid = -1.75 count = 45 mid = -1.25 count = 91 mid = -0.75 count = 154 mid = -0.25 count = 202 mid = 0.25 count = 199 mid = 0.75 count = 146 mid = 1.25 count = 83 mid = 1.75 count = 38 mid = 2.25 count = 13 mid = 2.75 count = 10 mid = 3.25 count = 2 mid = 3.75 count = 1
Selection of the best text • This is made difficult by the varying needs of intended users. • Reading the text should be equally clear in both braille and through synthetic speech. • For braille displays the text width should be minimised if possible, especially for tabulated results. • I’ve tried to minimize syllables for the synthetic speech users. • The text should transcend the language barriers that may exist (US vs UK English). • I’ve tried to keep the words simple.
Advantages of BrailleR • Many tasks done in statistical work creating graphs are experimental, or for one-time use. • Effort spent turning these work-in-progress graphs into tactile images is not a good use of time or energy.
Scatter plots • A challenge for any blind student: are two variables related to one another? • Sighted people just create a scatter plot and consider how the points lie. Are they randomly placed over the graph? Can any structure be identified? • I propose that dividing the plot area into a grid where each cell would have an equal number of points in it (under random conditions) and counting the number of points in the cells is roughly what the sighted person does.
In BrailleR • A function to do this for the blind person is now included in BrailleR.
What else? • There are many types of objects stored by R that have a class attribute assigned. • I intend working my way through these classes as time permits, and demand determines. • I have also made use of the work of other R developers to meet some challenges. • Notably, the issue of saving your work for later editing when a sighted person would use cut-and-paste actions has been resolved. • I also need to link the graphs with the ability to render them using tactile form, initially in hardcopy, but ultimately in preparation for the wider use of refreshable tactile displays.
Difficulties • The greatest issue I now have to deal with is the lack of class assignments in the base R functionality. • In many instances, the assignment has no value to the standard (sighted) R user. • If my lobbying is successful, there will be no negative impact on R users. Hopefully, I can show sufficient upside for the blind R user. • To meet the current shortfall, I have started writing functions that wrap around or replace the existing functions so that a blind person will get both the BrailleR output and the standard graph wanted by their sighted teachers/colleagues.
Jonathan Godfrey a.j.godfrey@massey.ac.nz Institute of Fundamental Sciences Massey University Palmerston North