• 沒有找到結果。

未來研究⽅向

第六章 結論與建議

第五節 未來研究⽅向

在前⽂,將眼動的分析⽅法分為三⼤類,眼動現象分析、時間與空間分析、

掃視路徑分析,本研究的時間加權分析定位,是位於時間與空間分析的興趣時域 分析,但該⽅法也適⽤於掃視路徑分析,例如在掃視路徑的轉換AOI中加⼊時間 維度的資訊,建議未來可將掃視路徑分析的時間加權分析進⼀步研究。

本研究主要分析的是凝視眼動現象的分析,本分析⽅法也可適⽤於掃視現 象、回視現象等等的眼動現象分析。

應⽤⽅式

本演算法的應⽤⽅式,除了本研究的單詞⾃由回憶測驗外,也可以應⽤在其 他需要關注時間要素的眼動歷程情境,例如:學習者學習的⽅式探討,圖⽂參照 的⽅式。⾃閉症患者在社會情境中,依據社交事件發⽣時間,進⾏時間加權分 析。第⼀印象與眼動現象關聯的研究等等。

案例分析

未來案例分析可做閱讀相關的研究,透過時間加權分析法,研究閱讀的眼動 資料之時間分佈與認知的關聯性,⼀⽅⾯可了解閱讀時的認知歷程,另⼀⽅⾯也 可提供⽂章結構編排的依據。

本案例分析單詞⾃由回憶測驗是分析單⼀的受試者,其個體的記憶與眼動現 象分析,未來研究可試著進⾏群體的眼動分析,但要注意的是,實驗的設計需考 量,不同的個體可能會有不同的記憶策略⽅式,⽽不同的記憶策略⽅式,其眼動 的模式不相同,因此在群體分析時,可能要在進⾏時間加權分析時,先進⾏分群 的分析,將同個記憶策略的群體統計時間加權分析。

與⽣理訊號的資料結合分析

⽣理訊號與時間有⾮常相關的關係,因此使⽤時間加權分析,可以適時的了 解眼動資料與⽣理訊號資料的關係,幫助研究者了解視覺刺激材料與⽣理現象的 關係,或是了解眼動現象與⽣理現象之間的關聯性。

參考⽂獻

中⽂部分

宋曜廷(2017)。⼤數據語料:分析⼯具、指標建⽴、與教育應⽤-總計畫:⼤數 據語料:分析⼯具、指標建⽴、與教育應⽤。科技部專題研究計畫(編號:

MOST104-2511-S003-017-MY3)。

陳學志、賴惠德、邱發忠(2010)。眼球追蹤技術在學習與教育上的應⽤。教育 科學研究期刊,55(4),39-68。

蔡介⽴(2000)。從眼動控制探討中⽂閱讀的訊息處理歷程:應⽤眼動誘發呈現 技術之系列研究。國⽴政治⼤學⼼理學研究所博⼠論⽂。

西⽂部分

Abrams, R. A., Meyer, D. E., & Kornblum, S. (1989). Speed and accuracy of saccadic eye movements: characteristics of impulse variability in the oculomotor system. Journal of Experimental Psychology: Human Perception and Performance, 15(3), 529.

Anderson, N. C., Bischof, W. F., Laidlaw, K. E., Risko, E. F., & Kingstone, A. (2013).

Recurrence quantification analysis of eye movements. Behavior research methods, 45(3), 842-856.

Avons, S. E. (1998). Serial report and item recognition of novel visual patterns. British Journal of Psychology, 89(2), 285-308.

Barbuceanu, F., & Antonya, C. (2009). EYE TRACKING APPLICATIONS. Bulletin of the Transilvania University of Brasov. Engineering Sciences, 2(51), 17-24.

Benel, D. C., Ottens Jr, D., & Horst, R. (1991). Use of an eyetracking system in the usability laboratory. Paper presented at the Proceedings of the Human Factors Society Annual Meeting.

reflect the content of the visual scene. Journal of cognitive neuroscience, 9(1), 27-38.

Burmester, M., & Mast, M. (2010). Repeated web page visits and the scanpath theory: A recurrent pattern detection approach. Journal of Eye Movement Research, 3(4), 1-20.

Byrne, M. D., Anderson, J. R., Douglass, S., & Matessa, M. (1999). Eye tracking the visual search of click-down menus. Paper presented at the Proceedings of the SIGCHI conference on Human Factors in Computing Systems.

Card, S. K. (1984). Visual search of computer command menus. Attention and performance X:

Control of language processes, 97-108.

Cherubini, M., Nüssli, M.-A., & Dillenbourg, P. (2010). This is it!: Indicating and looking in collaborative work at distance. Journal of Eye Movement Research, 3(5), 1-20.

Chuk, T., Chan, A. B., & Hsiao, J. H. (2014). Understanding eye movements in face recognition using hidden Markov models. Journal of vision, 14(11), 1-14.

Cristino, F., Mathôt, S., Theeuwes, J., & Gilchrist, I. D. (2010). ScanMatch: A novel method for comparing fixation sequences. Behavior research methods, 42(3), 692-700.

Dale, R., Kirkham, N. Z., & Richardson, D. C. (2011). The dynamics of reference and shared visual attention. Frontiers in psychology, 2, 355.

Dale, R., Warlaumont, A. S., & Richardson, D. C. (2011). Nominal cross recurrence as a generalized lag sequential analysis for behavioral streams. International Journal of Bifurcation and Chaos, 21(4), 1153-1161.

Duchowski, A. T. (2002). A breadth-first survey of eye-tracking applications. Behavior Research Methods, Instruments, & Computers, 34(4), 455-470.

Duncker, K., & Lees, L. S. (1945). On problem-solving. Psychological monographs, 58(5), i-113.

Foulsham, T., Dewhurst, R., Nyström, M., Jarodzka, H., Johansson, R., Underwood, G., &

Holmqvist, K. (2012). Comparing scanpaths during scene encoding and recognition: A multi-dimensional approach. Journal of Eye Movement Research, 5(4), 1-14.

Foulsham, T., & Kingstone, A. (2013). Fixation-dependent memory for natural scenes: An experimental test of scanpath theory. Journal of Experimental Psychology:

General, 142(1), 41-56.

Foulsham, T., & Underwood, G. (2008). What can saliency models predict about eye movements? Spatial and sequential aspects of fixations during encoding and recognition. Journal of Vision, 8(2), 6-6.

Goldberg, J. H., & Kotval, X. P. (1998). Eye movement-based evaluation of the computer interface. In Kumar, S. (Ed.), Advances in occupational ergonomics and safety (pp.

529-532). Amsterdam, The Netherlands: ISO press.

Goldberg, J. H., Stimson, M. J., Lewenstein, M., Scott, N., & Wichansky, A. M. (2002). Eye tracking in web search tasks: design implications. Paper presented at the Proceedings of the 2002 symposium on Eye tracking research & applications.

Graf, W., & Krueger, H. (1989). Ergonomic evaluation of user-interfaces by means of eye-movement data. Paper presented at the Proceedings of the third international conference on human-computer interaction, Vol. 1 on Work with computers: organizational, management, stress and health aspects.

Grant, E. R., & Spivey, M. J. (2003). Eye movements and problem solving: Guiding attention guides thought. Psychological Science, 14(5), 462-466.

Harding, G., & Bloj, M. (2010). Real and predicted influence of image manipulations on eye movements during scene recognition. Journal of Vision, 10(2), 1-17.

Hegarty, M., Mayer, R. E., & Green, C. E. (1992). Comprehension of arithmetic word problems: Evidence from students' eye fixations. Journal of Educational Psychology, 84(1), 76.

Hegarty, M., Mayer, R. E., & Monk, C. A. (1995). Comprehension of arithmetic word problems: A comparison of successful and unsuccessful problem solvers. Journal of Educational Psychology, 87(1), 18.

Hejmady, P., & Narayanan, N. H. (2012). Visual attention patterns during program debugging with an IDE. In Proceedings of the Symposium on Eye Tracking Research and

Applications (pp. 197-200). New York, NY: ACM.

Huey, E. B. (1908). The psychology and pedagogy of reading. New York, NY: The Macmillan Company.

Javal, É. (1906). Physiologie de la lecture et de l'écriture. Paris, France: F. Alcan.

Johansson, R., Holsanova, J., & Holmqvist, K. (2006). Pictures and spoken descriptions elicit similar eye movements during mental imagery, both in light and in complete darkness.

Cognitive Science, 30(6), 1053-1079.

Johansson, R., Holsanova, J., & Homqvist, K. (2011). The dispersion of eye movements during visual imagery is related to individual differences in spatial imagery ability. Paper presented at the Proceedings of the Annual Meeting of the Cognitive Science Society.

Just, M. A., & Carpenter, P. A. (1976). Eye fixations and cognitive processes. Cognitive

151-182). Hillsdale, NJ: Erlbaum.

Klin, A., Jones, W., Schultz, R., & Volkmar, F. (2003). The enactive mind, or from actions to cognition: lessons from autism. Philosophical Transactions of the Royal Society of London B: Biological Sciences, 358(1430), 345-360.

Klin, A., Jones, W., Schultz, R., Volkmar, F., & Cohen, D. (2002a). Defining and quantifying the social phenotype in autism. American Journal of Psychiatry, 159(6), 895-908.

Klin, A., Jones, W., Schultz, R., Volkmar, F., & Cohen, D. (2002b). Visual fixation patterns during viewing of naturalistic social situations as predictors of social competence in individuals with autism. Archives of general psychiatry, 59(9), 809-816.

Knoblich, G., Ohlsson, S., & Raney, G. E. (2001). An eye movement study of insight problem solving. Memory & Cognition, 29(7), 1000-1009.

Kolers, P. A., Duchnicky, R. L., & Ferguson, D. C. (1981). Eye movement measurement of readability of CRT displays. Human Factors, 23(5), 517-527.

Kuo, F.-Y., Chu, T.-H., Hsu, M.-H., & Hsieh, H.-S. (2004). An investigation of effort–accuracy trade-off and the impact of self-efficacy on Web searching behaviors. Decision Support Systems, 37(3), 331-342.

Laeng, B., & Teodorescu, D.-S. (2002). Eye scanpaths during visual imagery reenact those of perception of the same visual scene. Cognitive Science, 26(2), 207-231.

McConkie G.W., Kerr P.W., Reddix M.D., Zola D. (1988). Eye movement control during reading: I. The location of initial eye fixations on words. Vision Research, 28(10), 1107-1118.

Murdock Jr, B. B. (1962). The serial position effect of free recall. Journal of experimental psychology, 64(5), 482-488.

Noton, D., & Stark, L. (1971). Scanpaths in saccadic eye movements while viewing and recognizing patterns. Vision research, 11(9), 929-IN928.

Pomplun, M., Sichelschmidt, L., Wagner, K., Clermont, T., Rickheit, G., & Ritter, H. (2001).

Comparative visual search: A difference that makes a difference. Cognitive Science, 25(1), 3-36.

Rayner, K. (1979). Eye guidance in reading: Fixation locations within words. Perception, 8(1), 21-30.

Rayner, K. (1998). Eye movements in reading and information processing: 20 years of research. Psychological bulletin, 124(3), 372.

Rayner, K. (2009). The 35th Sir Frederick Bartlett Lecture: Eye movements and attention in reading, scene perception, and visual search. Quarterly journal of experimental

psychology, 62(8), 1457-1506.

Richardson, D. C., & Dale, R. (2005). Looking to understand: The coupling between speakers' and listeners' eye movements and its relationship to discourse comprehension. Cognitive Science, 29(6), 1045-1060.

Richardson, D. C., Dale, R., & Tomlinson, J. M. (2009). Conversation, gaze coordination, and beliefs about visual context. Cognitive Science, 33(8), 1468-1482.

Shepherd, S. V., Steckenfinger, S. A., Hasson, U., & Ghazanfar, A. A. (2010). Human-monkey gaze correlations reveal convergent and divergent patterns of movie viewing. Current Biology, 20(7), 649-656.

Shockley, K., Richardson, D. C., & Dale, R. (2009). Conversation and coordinative structures.

Topics in Cognitive Science, 1(2), 305-319.

Tsang, H. Y., Tory, M., & Swindells, C. (2010). eSeeTrack—visualizing sequential fixation patterns. IEEE Transactions on Visualization and Computer Graphics, 16(6), 953-962.

Underwood, G., Foulsham, T., & Humphrey, K. (2009). Saliency and scan patterns in the inspection of real-world scenes: Eye movements during encoding and

recognition. Visual Cognition, 17(6-7), 812-834.

White, S. J. (2008). Eye movement control during reading: Effects of word frequency and orthographic familiarity. Journal of Experimental Psychology: Human Perception and Performance, 34(1), 205-223.

Yang, J., Wang, S., Chen, H.-S., & Rayner, K. (2009). The time course of semantic and syntactic processing in Chinese sentence comprehension: Evidence from eye movements. Memory & Cognition, 37(8), 1164-1176.

附錄⼀ 眼動資料模擬之資料結構

Sample為樣本,Fixation為凝視資料,Aoi為AOI興趣區域,

FixationCalculationResult為「凝視次數加權分析模式」與「凝視次數加權分析模 式」的凝視資料計算結果,其Model的資料結構如圖1-1資料結構⽰意圖,型別與 定義如表1-1資料結構之型別與定義。

圖 1-1 資料結構⽰意圖

表1-1 資料結構之型別與定義

Models Field 型別 定義

Sample _id ObjectId 樣本id

fixations ObjectId Array 凝視資料id陣列

Fixation _id ObjectId 凝視資料id

aoi ObjectId AOI id

time Date 時間

duration Float 持續時間

Aoi _id ObjectId AOI id

code String 編號

FixationCalculationResult _id ObjectId 計算結果id countTimePower Float 次數加權值 durationTimePower Float 持續時間加權值

附錄⼆ 眼動資料模擬之程式碼

const express = require('express');

const router = express.Router();

const _ = require('lodash');

const gaussian = require('gaussian');

const ss = require('simple-statistics');

router.post('/eye-data', function(req, res, next) { let aoiCodes = req.body['aoiCodes[]'];

let sampleSize = parseInt(req.body['sampleSize']);

let minutes = parseFloat(req.body['minutes']);

let fixationMean = parseFloat(req.body['fixationMean']);

let fixationSd = parseFloat(req.body['fixationSd']);

let saccadeMean = parseFloat(req.body['saccadeMean']);

let saccadeSd = parseFloat(req.body['saccadeSd']);

let opts = {

let report = dataProcess(opts);

res.json({report: report});

});

function dataProcess(opts){

try {

opts.aoiCodes = opts.aoiCodes || ['A', 'B', 'C', 'D', 'E', 'F', 'G', 'H', 'I'];

opts.minutes = opts.minutes || 10;

opts.fixationMean = opts.fixationMean || 295;

opts.fixationSd = opts.fixationSd || 147.5;

opts.saccadeMean = opts.saccadeMean || 35;

opts.saccadeSd = opts.saccadeSd || 17.5;

console.log('opts', opts);

let aoiCodes = opts.aoiCodes;

let minutes = opts.minutes;

let sampleSize = opts.sampleSize;

let fixationMean = opts.fixationMean;

let fixationSd = opts.fixationSd;

let saccadeMean = opts.saccadeMean;

let saccadeSd = opts.saccadeSd;

let seqs = [];

let aoiCodesWithTarget = ['T'].concat(aoiCodes);

let ms = minutes * 60 * 1000;

let codeProb = 1 / ( aoiCodes.length + 1 );

let frontTargetProb = codeProb * .8;

let behindTargetProb = codeProb * 1.2;

let saccadeDistribution = gaussian(saccadeMean, saccadeSd);

let fixationDistribution = gaussian(fixationMean, fixationSd);

let aoiLength = _.round(ms / ( saccadeMean + fixationMean ));

let halfSeqLength = aoiLength / 2;

let generateDataStart;

let generateDataDuration;

let calcDataStart;

let calcDataDuration;

let distribution = gaussian(0, .1);

let pDistribution = gaussian(0, 1);

generateDataStart = _.now();

let code;

saccadeDuration = saccadeDistribution.ppf(Math.random());

time += saccadeDuration + prevDuration;

eye.time = time;

eye.fixationDuration = fixationDistribution.ppf(Math.random());

prevDuration = eye.fixationDuration;

// console.log(eye);

eyes.push(eye);

} });

generateDataDuration = _.now() - generateDataStart;

calcDataStart = _.now();

resultMap[codeHash].timePower = resultMap[codeHash].timePower || 0;

resultMap[codeHash].count = resultMap[codeHash].count || 0;

resultMap[codeHash].fixationDuration = resultMap[codeHash].fixationDuration || 0;

resultMap[codeHash].timePowerIntegral = resultMap[codeHash].timePowerIntegral || 0;

let timePower = calcTimePower(eye.time / timeBase);

let timePowerIntegral = calcTimePowerIntegral(eye.time / timeBase, ( eye.time + eye.fixationDuration ) / timeBase);

eye.timePower = timePower;

eye.timePowerIntegral = timePowerIntegral;

resultMap[codeHash].timePower += timePower;

resultMap[codeHash].fixationDuration += eye.fixationDuration;

resultMap[codeHash].count++;

resultMap[codeHash].timePowerIntegral += timePowerIntegral;

let avgTimePowers = [];

_.keys(resultMap).forEach((key) => { let r = resultMap[key];

r.avgTimePower = r.timePower / r.count;

r.avgFixationDuration = r.fixationDuration / r.count;

r.avgTimePowerIntegral = r.timePowerIntegral / r.count;

timePowers.push(r.timePower);

avgTimePowers.push(r.avgTimePower);

avgFixationDurations.push(r.avgFixationDuration);

timePowerIntegrals.push(r.timePowerIntegral);

avgTimePowerIntegrals.push(r.avgTimePowerIntegral);

counts.push(r.count);

fixationDurations.push(r.fixationDuration);

});

let timePowerMean = ss.mean(timePowers);

let timePowerSd = ss.standardDeviation(timePowers);

let avgTimePowerMean = ss.mean(avgTimePowers);

let avgTimePowerSd = ss.standardDeviation(avgTimePowers);

let avgTimePowerIntegralMean = ss.mean(avgTimePowerIntegrals);

let avgTimePowerIntegralSd = ss.standardDeviation(avgTimePowerIntegrals);

let timePowerIntegralMean = ss.mean(timePowerIntegrals);

let timePowerIntegralSd = ss.standardDeviation(timePowerIntegrals);

let countMean = ss.mean(counts);

let countSd = ss.standardDeviation(counts);

let fixationDurationMean = ss.mean(fixationDurations);

let fixationDurationSd = ss.standardDeviation(fixationDurations);

let avgFixationDurationMean = ss.mean(avgFixationDurations);

let avgFixationDurationSd = ss.standardDeviation(avgFixationDurations);

_.keys(resultMap).forEach((key) => { let r = resultMap[key];

r.timePowerZ = ss.zScore(r.timePower, timePowerMean, timePowerSd);

r.timePowerAlpha = ( 1 - pDistribution.cdf(Math.abs(r.timePowerZ)) ) * 2;

r.avgTimePowerZ = ss.zScore(r.avgTimePower, avgTimePowerMean, avgTimePowerSd);

r.avgTimePowerAlpha = ( 1 - pDistribution.cdf(Math.abs(r.avgTimePowerZ)) )

* 2;

r.timePowerIntegralZ = ss.zScore(r.timePowerIntegral, timePowerIntegralMean, timePowerIntegralSd);

r.timePowerIntegralAlpha = ( 1 -

pDistribution.cdf(Math.abs(r.timePowerIntegralZ)) ) * 2;

r.avgTimePowerIntegralZ = ss.zScore(r.avgTimePowerIntegral, avgTimePowerIntegralMean, avgTimePowerIntegralSd);

r.avgTimePowerIntegralAlpha = ( 1 -

pDistribution.cdf(Math.abs(r.avgTimePowerIntegralZ)) ) * 2;

r.countZ = ss.zScore(r.count, countMean, countSd);

r.countAlpha = ( 1 - pDistribution.cdf(Math.abs(r.countZ)) ) * 2;

r.fixationDurationZ = ss.zScore(r.fixationDuration, fixationDurationMean, fixationDurationSd);

r.fixationDurationAlpha = ( 1 -

pDistribution.cdf(Math.abs(r.fixationDurationZ)) ) * 2;

r.avgFixationDurationZ = ss.zScore(r.avgFixationDuration, avgFixationDurationMean, avgFixationDurationSd);

r.avgFixationDurationAlpha = ( 1 -

pDistribution.cdf(Math.abs(r.avgFixationDurationZ)) ) * 2;

});

let results = [];

r.aoiCode = aoiCode;

results.push(r);

} });

calcDataDuration = _.now() - calcDataStart;

let report = {};

report.resultMap = resultMap;

report.results = results;

report.eyes = eyes;

report.opts = opts;

report.seqs = seqs;

report.aoiCodes = aoiCodes;

report.aoiCodesWithTarget = aoiCodesWithTarget;

report.timePowerMean = timePowerMean;

report.timePowerSd = timePowerSd;

report.timePowerCv = timePowerSd / timePowerMean;

report.avgTimePowerMean = avgTimePowerMean;

report.avgTimePowerSd = avgTimePowerSd;

report.avgTimePowerCv = avgTimePowerSd / avgTimePowerMean;

report.avgTimePowerIntegralMean = avgTimePowerIntegralMean;

report.avgTimePowerIntegralSd = avgTimePowerIntegralSd;

report.avgTimePowerIntegralCv = avgTimePowerIntegralSd / avgTimePowerIntegralMean;

report.timePowerIntegralMean = timePowerIntegralMean;

report.timePowerIntegralSd = timePowerIntegralSd;

report.timePowerIntegralCv = timePowerIntegralSd / timePowerIntegralMean;

report.countMean = countMean;

report.countSd = countSd;

report.countCv = countSd / countMean;

report.fixationDurationMean = fixationDurationMean;

report.fixationDurationSd = fixationDurationSd;

report.fixationDurationCv = fixationDurationSd / fixationDurationMean;

report.avgFixationDurationMean = avgFixationDurationMean;

report.avgFixationDurationSd = avgFixationDurationSd;

report.avgFixationDurationCv = avgFixationDurationSd / avgFixationDurationMean;

report.generateDataDuration = generateDataDuration;

report.calcDataDuration = calcDataDuration;

return report;

function prob(x){

return Math.random() <= x;

}

function calcTimePower(x){

return distribution.pdf(x);

}

function calcTimePowerIntegral(a, b){

return (distribution.cdf(b) - distribution.cdf(a)) * Math.pow(10, 6);

}

} catch (e) { console.error(e);

} }

module.exports = router;

相關文件