亚洲有码Av一区二区三区_国产高清啪啪免费视频_69色视频国产_国产成人人人爆出白浆_国产精品自在线拍国_一本久久伊人热热精品无码_午夜性刺激在线看免费带字幕_助力高品质欧美狂喷水_亚洲精品日韩无码_精品无码一区二区三区蜜臀_麻豆高清国产AV_熟妇人素无码中文字幕_亚洲a级片在线观看_国产欧美日韩三区_99国产成人高清在线观看

ARTICLE DETAIL

資訊詳情

深耕商務(wù)建站與企業(yè)官網(wǎng)運營的一線實戰(zhàn)洞察。

D3.js置換檢驗散點圖:讓數(shù)據(jù)顯著性變得可見

D3.js置換檢驗散點圖:讓數(shù)據(jù)顯著性變得可見 這次做的項目叫D3.js研發(fā)置換檢驗散點圖。一句話說清楚用D3.js實現(xiàn)一個交互式散點圖散點圖本身展示兩組樣本在兩個維度上的分布同時在圖的下方實時呈現(xiàn)置換檢驗的零分布直方圖和觀測統(tǒng)計量參考線讓兩組數(shù)據(jù)是否顯著不同這個統(tǒng)計結(jié)論不再依靠肉眼猜測而是變成看得見的計算過程。起因是我們小組分析一次細胞實驗數(shù)據(jù)時出現(xiàn)了分歧。散點圖一畫出來樣本點明顯分成兩團實驗室同學(xué)直接說這次藥物處理絕對有效。我盯著圖看了十分鐘總覺得哪里不對——樣本量只有每組18個右上方有幾顆離群點兩團點之間其實還有不少交疊。你問我要不要拍板個結(jié)論我是不敢的。肉眼在散點圖上做判斷最容易高估差異的顯著性尤其當樣本量小、分布偏斜、還有離群值的時候。所以我決定做一個工具把散點圖和置換檢驗放進同一個界面里既展示原始數(shù)據(jù)的形態(tài)又給出基于重抽樣的顯著性判斷。這個項目適合三類人看一是經(jīng)常畫散點圖但覺得只看圖不夠嚴謹?shù)臄?shù)據(jù)分析人員二是想了解置換檢驗如何落地到前端可視化產(chǎn)品里的開發(fā)者三是在校學(xué)生——你們學(xué)數(shù)理統(tǒng)計時會發(fā)現(xiàn)把檢驗過程用動畫放出來對理解p值這件事幫助極大。1. 散點圖為什么需要顯著性這個維度1.1 肉眼判斷到底錯在哪先回到那個分組對比的經(jīng)典問題兩組數(shù)據(jù)畫在一張散點圖上怎么看有沒有差異大多數(shù)人看圖的順序是這樣的——先看兩組點的重心有沒有拉開再看兩個顏色云團的重疊面積最后下意識地認為分得越開差異越顯著。但散點圖的信息表達有個天然缺陷它展示的是原始數(shù)據(jù)點的位置卻完全隱藏了樣本量、分布形狀和抽樣波動這三項信息。舉例來說A、B兩組各20個點均值差2.0但每組內(nèi)部標準差很大分布呈明顯的右偏。畫出來的散點圖可能看起來很清爽因為高維數(shù)據(jù)投影到二維平面上之后視覺上會被拉開可是如果你真正跑一個統(tǒng)計檢驗p值可能到0.15。反過來兩組各200個點均值差只有0.3圖上看基本是混在一起的但因為樣本量大p值可能小于0.01。這兩種情況單看散點圖都會得出錯誤結(jié)論——第一種高估差異第二種低估差異。人的視覺系統(tǒng)對距離敏感對樣本量和分布形態(tài)不敏感。換句話說散點圖回答的是長什么樣統(tǒng)計檢驗回答的是這種差別有多大概率是隨機造成的。兩者是互補關(guān)系不是替代關(guān)系。所以我在這張圖里強制加入檢驗結(jié)果就是希望看圖的人不要只停留在形狀層面。1.2 為什么是置換檢驗而不是t檢驗要做差異顯著性檢驗最常規(guī)的選擇是Students t檢驗但我在這個項目里特意選用了置換檢驗Permutation Test。兩者都檢驗兩組均值是否相等的原假設(shè)但對數(shù)據(jù)的前置要求完全不同。維度t檢驗置換檢驗前提假設(shè)近似正態(tài)、方差齊性無分布假設(shè)計算邏輯基于公式計算t統(tǒng)計量與p值通過重復(fù)打亂標簽構(gòu)造零分布樣本量要求小樣本受限于正態(tài)性要求小樣本可以直接做窮舉置換計算成本毫秒級幾乎為零需要數(shù)千次重計算結(jié)果輸出一個p值零分布直方圖 經(jīng)驗p值適用場景數(shù)據(jù)形態(tài)良好、追求效率分布偏斜、離群值明顯、需要可視證據(jù)選置換檢驗的原因很實際。我們那批實驗數(shù)據(jù)分布形態(tài)完全不像正態(tài)右尾特別長還有三個明顯的離群值。t檢驗對離群值高度敏感一個極端點就能顯著改變p值的方向和大小。置換檢驗沒有這個煩惱它的核心假設(shè)只有一個——如果分組標簽和觀測值沒有關(guān)系那么把標簽隨機打亂后統(tǒng)計量不會系統(tǒng)性地偏向某一邊。這個假設(shè)非常寬松幾乎適用于所有實際情況。更重要的原因在可視化上。t檢驗給你一個冷冰冰的p值而置換檢驗天然會產(chǎn)出一條完整的零分布曲線也就是原假設(shè)成立時統(tǒng)計量的概率分布。這條曲線本身就是一張圖把它和散點圖放在一起讀者能看到觀測統(tǒng)計量落在零分布的什么位置這個直觀程度是t檢驗沒法給的。1.3 項目的最終形態(tài)整個項目是一個純前端的交互工具數(shù)據(jù)以JSON或CSV形式加載。界面分為上下兩個區(qū)域上方SVG散點圖橫軸為第一維指標縱軸為第二維指標樣本點按分組著色。下方置換檢驗統(tǒng)計量的直方圖疊加一條豎線標記觀測統(tǒng)計量的位置以及p值文本。交互方面包含運行置換按鈕啟動打亂標簽的動畫并逐步累積直方圖。進度控制動畫速度、置換次數(shù)、暫停/繼續(xù)。分組切換左側(cè)提供維度選擇器切換散點圖的橫縱軸指標。刷選聯(lián)動在散點圖上框選區(qū)域后僅對選中的樣本子集重新做置換檢驗。這套形態(tài)基本覆蓋了我在實際分析里的全部訴求先看圖再檢驗檢驗過程還能講給別人聽。2. 置換檢驗的算法原理與JavaScript實現(xiàn)2.1 打亂標簽的實驗思維置換檢驗的統(tǒng)計學(xué)思想可以用一句話概括如果分組沒有真實差異那分組標簽就只是貼上去的記號把它們隨機重貼一遍結(jié)果不應(yīng)該有系統(tǒng)性的變化。這句話展開就是標準流程計算觀測統(tǒng)計量。比如兩組均值差obsStat mean(B組) - mean(A組)。把所有樣本的標簽全部抹掉混合在一起。隨機給每個樣本重新分配標簽保持每組樣本量不變A組n1個B組n2個?;谛聵撕炛匦掠嬎憔挡畹玫揭粋€置換統(tǒng)計量。重復(fù)第3、4步N次比如1000次或10000次得到N個置換統(tǒng)計量。統(tǒng)計這N個置換統(tǒng)計量中絕對值不小于abs(obsStat)的比例。這個比例就是經(jīng)驗p值。用生活化的話講這有點像洗牌實驗口袋里有40顆球20顆紅球20顆藍球每次隨機抽出20顆當成處理組其余當對照組算兩組球的平均重量差。如果原本的差異是真的那么隨機洗出來的差異很難超過真實差異如果能輕易超過說明真實差異可能在隨機波動范圍內(nèi)。2.2 統(tǒng)計量選哪個均值差、t還是中位數(shù)差置換檢驗框架下只要你能定義一個衡量組間差異的數(shù)值就可以用于檢驗。但選擇不同統(tǒng)計量檢驗的敏感方向不同統(tǒng)計量特點適合場景均值差對離群值敏感檢測重心偏移數(shù)據(jù)形態(tài)良好、無強離群值時中位數(shù)差穩(wěn)健不受離群值干擾長尾分布、存在離群值t統(tǒng)計量均值差除以合并標準誤自帶標準化除了位置差異還關(guān)注離散度差異秩和統(tǒng)計量基于排序非參數(shù)化最徹底數(shù)據(jù)為等級變量、尺度不均時我這批數(shù)據(jù)最終選的是均值差作為演示統(tǒng)計量因為它的幾何意義最直觀散點圖上兩組點的重心連線投影到某個方向上就是均值差。但我在界面上保留了統(tǒng)計量切換的下拉框方便對比。實際使用中發(fā)現(xiàn)當數(shù)據(jù)里有明顯離群點的時候均值差和中位數(shù)差給出的p值差異能到一個數(shù)量級建議探索階段兩個都跑一遍。需要提醒一點統(tǒng)計量必須在置換之前先固定下來。不存在先看一下數(shù)據(jù)哪個統(tǒng)計量顯著再選哪個的做法那是數(shù)據(jù)窺探data snooping會讓p值失真。2.3 完整實現(xiàn)一個可嵌入項目的permutation模塊核心代碼我封裝成了一個ES Module方便其他項目中復(fù)用。// permutation.js function shuffleArray(arr) { // Fisher-Yates 洗牌 const a arr.slice(); for (let i a.length - 1; i 0; i--) { const j Math.floor(Math.random() * (i 1)); [a[i], a[j]] [a[j], a[i]]; } return a; } function mean(values) { return values.reduce((acc, v) acc v, 0) / values.length; } function calcStat(groupA, groupB, statType meanDiff) { const mA mean(groupA); const mB mean(groupB); if (statType meanDiff) return mA - mB; if (statType medianDiff) { const sortedA [...groupA].sort((x, y) x - y); const sortedB [...groupB].sort((x, y) x - y); const medianA sortedA[Math.floor(sortedA.length / 2)]; const medianB sortedB[Math.floor(sortedB.length / 2)]; return medianA - medianB; } // t 統(tǒng)計量均值差 / 合并標準誤 const pooledSE Math.sqrt( (groupA.length 1 groupB.length 1) ? ((groupA.reduce((s, v) s (v - mA) ** 2, 0) groupB.reduce((s, v) s (v - mB) ** 2, 0)) / (groupA.length groupB.length - 2)) * (1 / groupA.length 1 / groupB.length) : 1 ); return (mA - mB) / pooledSE; } export function permutationTest(values, labels, nPerm 10000, statType meanDiff) { const groupAValues values.filter((_, i) labels[i] 0); const groupBValues values.filter((_, i) labels[i] 1); const obsStat calcStat(groupAValues, groupBValues, statType); const pooled values.slice(); const nA groupAValues.length; const permStats new Float64Array(nPerm); for (let i 0; i nPerm; i) { const shuffled shuffleArray(pooled); const permA shuffled.slice(0, nA); const permB shuffled.slice(nA); permStats[i] calcStat(permA, permB, statType); } let extremeCount 0; for (let i 0; i nPerm; i) { if (Math.abs(permStats[i]) Math.abs(obsStat)) extremeCount; } // 分子分母都 1避免 p 值被低估為 0 const pValue (extremeCount 1) / (nPerm 1); return { obsStat, permStats, pValue }; }這里有兩個細節(jié)必須說明。第一shuffleArray用的是Fisher-Yates洗牌算法時間復(fù)雜度O(n)且每個排列的出現(xiàn)概率均勻。直接用Array.prototype.sort(() Math.random() - 0.5)洗牌是新手最常見的錯誤這種寫法產(chǎn)生的排列概率不均勻會導(dǎo)致置換分布產(chǎn)生系統(tǒng)性偏差嚴重時p值會偏移幾個百分點。第二slice(0, nA)這種方式只適用于兩組切分。實際項目里如果有更多組就要改成permutationTest接受組別數(shù)并循環(huán)切分別在這塊偷懶。2.4 p值計算的兩個容易被忽略的細節(jié)p值的規(guī)范定義是在原假設(shè)下觀測結(jié)果或比觀測結(jié)果更極端的概率。在置換檢驗里最直接的做法是統(tǒng)計置換統(tǒng)計量絕對值超過觀測統(tǒng)計量絕對值的比例。但這里有兩個陷阱。第一個陷阱是p值為0。如果置換次數(shù)是10000次而10000次置換里恰好沒有一次超過觀測值你會算出p0。這并不代表絕對不可能只代表你的置換次數(shù)不夠分辨小概率。改進方法統(tǒng)一是加一校正分子加1、分母加1。這樣既避免了p0也保留了觀測數(shù)據(jù)本身就是一次天然置換的語義——原始標簽是所有打亂方案中的一種觀測統(tǒng)計量必然包含在零分布里所以最小經(jīng)驗p值應(yīng)為1/(N1)。第二個陷阱是雙側(cè)檢驗與單側(cè)檢驗。我在代碼里用的是Math.abs比較這是雙側(cè)檢驗適合回答兩組是否有差異。如果業(yè)務(wù)問題是處理組是否嚴格高于對照組則應(yīng)改為單側(cè)比較統(tǒng)計permStats[i] obsStat的比例。同一個數(shù)據(jù)集雙側(cè)和單側(cè)的p值可能差出一倍寫代碼前務(wù)必想清楚要回答哪種問題。3. 從比例尺到圓點D3.js散點圖組件搭建3.1 為什么在這個場景里選D3.js現(xiàn)在可視化圖表庫很多ECharts功能強大、上手快Plotly甚至支持Python調(diào)用為什么我固執(zhí)地選了D3.js我的理由只有一條這個項目的核心不只是畫圖而是把統(tǒng)計過程掛在圖形狀態(tài)上。散點圖的每一顆圓點在置換動畫中要反復(fù)改變顏色來呈現(xiàn)標簽打亂過程散點圖下方的零分布直方圖要在每次置換計算后動態(tài)新增一根柱子觀測統(tǒng)計量豎線要實時移動。這種數(shù)據(jù)和圖形元素一一綁定、隨時被業(yè)務(wù)邏輯驅(qū)動的模式是D3.js的看家本領(lǐng)因為它基于數(shù)據(jù)綁定data join模型開發(fā)天然支持enter/update/exit生命周期。方案學(xué)習(xí)成本自定義交互大數(shù)據(jù)性能數(shù)據(jù)綁定ECharts低配置項為主復(fù)雜交互要寫擴展內(nèi)置Canvas性能好弱Plotly低有回調(diào)機制但靈活度一般中等弱D3.js高完全可控基于DOM/SVG/Canvas取決于寫法強如果只是出圖交給領(lǐng)導(dǎo)看我肯定推薦ECharts但要做一個交互式統(tǒng)計教學(xué)/分析工具D3.js的自由度值得多花時間。3.2 從業(yè)務(wù)數(shù)據(jù)到視覺通道的映射散點圖本質(zhì)上做的是數(shù)據(jù)到視覺通道的映射。在我這個項目里每條樣本記錄有多個數(shù)值字段我預(yù)先定義了一個配置對象const channels { x: { field: dose, label: 劑量(μg/mL) }, y: { field: response, label: 響應(yīng)值 }, color: { field: group, label: 分組 } };D3的關(guān)鍵概念是比例尺scale它是數(shù)據(jù)值域到屏幕像素域的橋梁。橫軸和縱軸分別建立一個線性比例尺顏色則使用序數(shù)比例尺const xScale d3.scaleLinear() .domain(d3.extent(data, d d[channels.x.field])) .range([margin.left, width - margin.right]); const yScale d3.scaleLinear() .domain(d3.extent(data, d d[channels.y.field])) .range([height - margin.bottom, margin.top]); const colorScale d3.scaleOrdinal() .domain([0, 1]) .range([#0077bb, #ee7733]); // 藍橙色盲友好這里range([height - margin.bottom, margin.top])是SVG坐標系和數(shù)學(xué)坐標系方向相反導(dǎo)致的y軸必須從底部映射到頂部新手寫反了會把圖畫成倒置的。顏色選擇方面我沒有用紅綠組合這是考慮到紅綠色盲人群約占總?cè)丝?%換成藍橙對比能明顯擴大受眾而且在后臺評審場景下藍橙在黑白打印時的灰度差異也更大。3.3 SVG散點圖的data join核心代碼將數(shù)據(jù)綁定到圓點元素的核心代碼如下const circles svg.selectAll(circle) .data(data, d d.id) .join( enter enter.append(circle) .attr(r, 5) .attr(cx, d xScale(d[channels.x.field])) .attr(cy, d yScale(d[channels.y.field])) .attr(fill, d colorScale(d[channels.color.field])) .attr(fill-opacity, 0.8), update update .attr(cx, d xScale(d[channels.x.field])) .attr(cy, d yScale(d[channels.y.field])) .attr(fill, d colorScale(d[channels.color.field])), exit exit.remove() );.join()是D3 v6以上版本的統(tǒng)一入口比舊版的enter().append().merge()更簡潔。一個重要的交互細節(jié)是散點圖坐標變化時比如切換維度不建議直接改圓點的cx/cy而是用transition()讓圓點平滑移動這樣讀者能保留這些點在空間上如何重新分布的認知線索circles.transition().duration(400) .attr(cx, d xScale(d[channels.x.field])) .attr(cy, d yScale(d[channels.y.field]));3.4 零分布直方圖的繪制散點圖下方需要放一個零分布直方圖。D3從v7開始提供了d3.bin作為直方圖計算的工具用法如下const bins d3.bin() .domain(xDomainOfPermStats) .thresholds(40)(permStatsArray); svg.selectAll(rect) .data(bins) .join(rect) .attr(x, d xScaleHist(d.x0)) .attr(width, d xScaleHist(d.x1) - xScaleHist(d.x0) - 1) .attr(y, d yScaleHist(d.length)) .attr(height, d yScaleHist(0) - yScaleHist(d.length)) .attr(fill, #cccccc);這里有個工程細節(jié)直方圖的bin數(shù)量我固定用40個而不是讓D3自動推導(dǎo)原因是用戶通過滑塊改變置換次數(shù)時bin數(shù)要保持一致否則直方圖形狀會跳變破壞零分布是穩(wěn)定形狀的直覺。直方圖x軸的范圍也要固定取permStats的全局最小和最大否則每次計算完后范圍漂移觀測統(tǒng)計量豎線的相對位置就無法比較。同時疊加一條觀測統(tǒng)計量的豎線svg.append(line) .attr(x1, xScaleHist(obsStat)) .attr(x2, xScaleHist(obsStat)) .attr(y1, 0) .attr(y2, heightHist) .attr(stroke, #d7191c) .attr(stroke-dasharray, 4,3);紅色虛線很顯眼和藍橙點顏色區(qū)分開即使色盲用戶也能靠線型區(qū)分。4. 動畫設(shè)計把標簽打亂過程變成看得見的分布生長4.1 標簽打亂動畫的核心邏輯純算置換檢驗不需要任何動畫。但我的初衷是讓讀者看見零分布的形成過程所以加入了打亂標簽的動畫。動畫的邏輯非常直接每次置換我們只是重新分配了顏色標簽樣本在二維平面上的位置完全不動。這一點千萬要在代碼里保持住——只更新fill屬性不動cx和cy。如果讓點和顏色一起挪動視覺上會誤以為樣本本身在變而真實假設(shè)是樣本不變只有標簽在變這個區(qū)別是整個動畫教學(xué)價值的核心。動畫狀態(tài)機我分為三態(tài)空閑idle、運行running、暫停paused。核心是一個定時器驅(qū)動的循環(huán)let animationTimer null; let frameCount 0; function runAnimation() { if (animationTimer) return; animationTimer d3.interval(() { // 每次 tick 執(zhí)行一次置換計算并更新界面 const permResult performOnePermutation(); updateHistogram(permResult); updateColorLabels(permResult.labels); frameCount; if (frameCount permCount) { animationTimer.stop(); animationTimer null; finishAllPermutations(); } }, speed); }這里的performOnePermutation每次只計算一次置換這樣動畫越積越多直方圖的柱子而不是一次性算完10000次再統(tǒng)一繪制。讀者會看到一個概率分布從無到有地長出來的過程我在教學(xué)演示中實測這種累積式動畫比一次性成圖更能讓人理解p值就是極端情況占總置換次數(shù)的比例。4.2 配色切換的平滑處理一個視覺效果上的細節(jié)當動畫跑得很快時顏色標簽的閃爍會很刺眼。我加了兩個緩解手段。第一圓點的fill-opacity從0.8降到0.55讓顏色切換的視覺沖擊減輕同時緩解了大量圓點重疊時全是一種顏色的假象。第二每次動畫幀之間不直接修改fill顏色值而是通過CSS過渡circle.perm-point { transition: fill 80ms ease, fill-opacity 80ms ease; }這樣每一幀切換時會有輕微的漸變過程眼睛不容易疲勞。但如果動畫速度超過每秒20幀這種過渡會帶來殘影所以我把過渡時間控制在80ms實際手感比較合適。4.3 刷選聯(lián)動局部子集的置換檢驗散點圖還有一個隱藏功能刷選。用D3的brush模塊框選區(qū)域后界面會只保留框選范圍內(nèi)的樣本點并自動重新計算置換檢驗和零分布。這實際上是在回答一個更深入的問題如果只看這部分樣本組間差異還顯著嗎這個功能在探索性分析里非常有用——往往整體不顯著但某個子區(qū)域內(nèi)兩組分離明顯這提示可能存在交互效應(yīng)或亞組差異。刷選的核心實現(xiàn)是監(jiān)聽brush事件const brush d3.brush() .extent([[margin.left, margin.top], [width - margin.right, height - margin.bottom]]) .on(brush end, onBrush); function onBrush(event) { const selection event.selection; const selectedIds new Set(); if (selection) { data.forEach(d { const px xScale(d[channels.x.field]); const py yScale(d[channels.y.field]); const [[x0, y0], [x1, y1]] selection; if (px x0 px x1 py y0 py y1) { selectedIds.add(d.id); } }); } // 用 selectedIds 過濾數(shù)據(jù)重跑置換檢驗 runPermutationOnSubset(selectedIds); }刷選后未命中的圓點用淺灰色占位顯示、命中區(qū)域保持原色這樣讀者能理解刷選的作用范圍。一個必須做的防御性處理是散點圖的坐標軸經(jīng)過比例尺換算后有小數(shù)誤差我在比較時用了和完成邊界包含判斷這樣刷選邊界上的點不會反復(fù)抖動。5. 大樣本與高次數(shù)場景下的計算與渲染優(yōu)化5.1 置換次數(shù)到底該取多少置換檢驗的p值分辨率由置換次數(shù)決定。經(jīng)驗法則很簡單如果只需要判斷p值是否小于0.051000次置換足夠p值標準誤差約為0.014。如果要穩(wěn)妥地報告p值到兩位小數(shù)建議10000次。如果面對的是發(fā)表級嚴謹分析且p值接近臨界值建議50000到100000次。置換次數(shù)與p值標準誤的關(guān)系滿足公式SE(p) ≈ sqrt(p(1-p)/N)其中N是置換次數(shù)。p在0.05附近時N1000對應(yīng)SE約0.0069N10000對應(yīng)SE約0.0022。我默認設(shè)置的10000次在絕大多數(shù)業(yè)務(wù)的判斷顯著與否需求上足夠穩(wěn)。從計算量上看10000次置換、每組100個樣本、統(tǒng)計量取均值差在JavaScript主線程里跑大約需要幾百毫秒到1秒。偶爾會覺得卡但總體上能接受。一旦樣本量上升到5000個點、置換次數(shù)50000次主線程就會明顯阻塞界面白屏好幾秒。5.2 SVG和Canvas的取舍D3.js既能畫SVG也能畫Canvas。當樣本點超過3000到5000個時SVG的DOM節(jié)點數(shù)量會讓瀏覽器的渲染性能直線下降拖拽、刷選、動畫全部變得不流暢。這時我建議把散點圖層切換到Canvas只保留文字標簽和坐標軸走SVG。Canvas實現(xiàn)的散點圖層大致是這個形狀const canvas document.querySelector(#scatter-canvas); const ctx canvas.getContext(2d); function drawScatter(data, xScale, yScale, colorScale) { ctx.clearRect(0, 0, canvas.width, canvas.height); data.forEach(d { ctx.beginPath(); ctx.arc(xScale(d[channels.x.field]), yScale(d[channels.y.field]), pixelR, 0, 2 * Math.PI); ctx.fillStyle colorScale(d[channels.color.field]); ctx.globalAlpha 0.6; ctx.fill(); }); }注意Canvas方案需要自己處理globalAlpha和圖層疊加不涉及enter/update/exit因此對動態(tài)修改顏色的動畫支持反而比SVG更輕量——每次重繪一幀即可。缺點是無法像DOM那樣方便地綁定事件做點選、tooltip如果確實需要在Canvas上做高精度點選一般要用四叉樹索引做快速最近點查詢。5.3 Web Worker把計算從主線程里挪走最徹底的性能方案是把置換檢驗計算放進Web Worker主線程只負責(zé)接收結(jié)果并繪制。這樣即使置換次數(shù)10萬次界面也不會卡死。我封裝了一個worker文件// permutation.worker.js self.onmessage function (e) { const { values, labels, nPerm, statType } e.data; const result permutationTest(values, labels, nPerm, statType); // 結(jié)果里可能包含長達 nPerm 的 Float64Array self.postMessage(result, [result.permStats.buffer]); };主線程這樣調(diào)用const worker new Worker(permutation.worker.js); worker.onmessage (e) { const { obsStat, permStats, pValue } e.data; updateHistogram(permStats, obsStat, pValue); workerRunning false; }; worker.postMessage({ values: currentValues, labels: currentLabels, nPerm: permCount, statType: currentStatType });這里有個性能關(guān)鍵點postMessage傳遞Float64Array時如果數(shù)據(jù)量很大默認會發(fā)生拷貝。給postMessage傳入transferable列表就是代碼里的第二個參數(shù)[result.permStats.buffer]就能把ArrayBuffer的所有權(quán)轉(zhuǎn)交給主線程O(1)完成傳輸而不是O(n)拷貝。這點在高頻次置換動畫里差異非常明顯。需要權(quán)衡的是Web Worker里不能訪問DOM所以如果你的實時動畫需要每個置換幀都更新UI就必須改成批處理模式worker每次計算一批比如200次置換后postMessage一次主線程收到一批就更新一次直方圖。這樣UI仍然能流暢更新計算也不阻塞。6. 開發(fā)過程中踩過的坑與最終自檢清單6.1 隨機種子可復(fù)現(xiàn)性比看起來重要置換檢驗是隨機算法但分析場景里可復(fù)現(xiàn)非常重要。同一份數(shù)據(jù)這次跑出來p0.038下次跑出來p0.047不管是因為隨機種子還是機器差異都會讓業(yè)務(wù)同事質(zhì)疑結(jié)果。我在第一版里直接用Math.random()很快發(fā)現(xiàn)復(fù)現(xiàn)性很差。后來引入了帶種子的隨機數(shù)生成器用mulberry32實現(xiàn)成本極低function mulberry32(seed) { return function () { seed | 0; seed (seed 0x6D2B79F5) | 0; let t Math.imul(seed ^ (seed 15), 1 | seed); t (t Math.imul(t ^ (t 7), 61 | t)) ^ t; return ((t ^ (t 14)) 0) / 4294967296; }; }把這一函數(shù)替換Math.random并把種子暴露在界面上默認值比如20240101任何人重新打開頁面、設(shè)置相同種子就能復(fù)現(xiàn)完全相同的零分布和p值。這一點在團隊協(xié)作和論文復(fù)現(xiàn)里價值巨大。6.2 零分布直方圖與散點圖的視覺比例尺沖突我犯過的另一個問題是兩套圖各用各的配色。散點圖用的是藍橙直方圖為了表示零分布用了灰色觀測統(tǒng)計量豎線用了紅色這本身沒問題。問題出在直方圖的x軸范圍早期版本直接取d3.extent(permStats)動態(tài)范圍每次置換次數(shù)改變橫軸范圍就跟著飄移豎線位置也就無法和之前的畫面比較。解決辦法是給直方圖設(shè)置一個與統(tǒng)計量理論上界匹配的固定domain。當用戶切換統(tǒng)計量時豎線位置變化幅度很大有時會跑到可視范圍之外。我特意保留了這個出界行為而不是自動縮放——豎線出界本身就能傳遞一個信息當前統(tǒng)計量遠遠超出零分布的尋常范圍p值極小。這種保留沖突的做法反而更符合統(tǒng)計直覺。6.3 邊界問題與最終自檢清單最后整理幾個容易被忽略的邊界問題重復(fù)值數(shù)據(jù)中有大量相同值時置換分布的連續(xù)性會退化。均值差會離散化直方圖出現(xiàn)梳狀空隙視覺上很怪??梢栽谥狈綀D上疊加核密度平滑曲線或者如實標注數(shù)據(jù)存在重復(fù)值p值為保守估計。方差為零如果某組在某維度上所有值相同均值差依然能算但t統(tǒng)計量會出現(xiàn)除零代碼里對合并標準誤做了分母保護。樣本量差距懸殊A組2個樣本、B組500個樣本時置換檢驗的統(tǒng)計功效會很弱。界面上要顯示兩組樣本量避免用戶對結(jié)果過度解讀。多重組別實際數(shù)據(jù)可能不止兩組我目前只做了兩組對比。擴展思路是兩兩組合做多重檢驗再用Bonferroni或FDR校正這部分后續(xù)再迭代。最終我把這些教訓(xùn)沉淀成了一份清單每次改完代碼都核對一遍隨機種子是否可復(fù)現(xiàn)。置換次數(shù)是否滿足p值精度需求。雙側(cè)/單側(cè)檢驗是否與業(yè)務(wù)語義一致。p值是否做了分子分母加一校正。直方圖domain是否穩(wěn)定不隨數(shù)據(jù)量變化跳變。散點圖顏色是否支持色盲用戶。大數(shù)據(jù)量時是否切到Canvas或Web Worker。每次交互后動畫狀態(tài)機是否正確復(fù)位——尤其防止重復(fù)點擊啟動多個定時器。把個人經(jīng)驗放到最后說一句這類統(tǒng)計可視化項目最花時間的其實不是統(tǒng)計算法也不是D3的API而是如何讓統(tǒng)計邏輯和視覺交互真正咬合。置換檢驗本身是幾十行代碼的事但當你試圖把零分布、觀測統(tǒng)計量、p值這些抽象概念投影到屏幕上讓非統(tǒng)計背景的人也能一眼讀懂時每一個像素的選擇都藏著統(tǒng)計語義。先把統(tǒng)計原理吃透再來談畫圖順序千萬別顛倒。
返回列表
PREV
查看更多資訊
NEXT
返回資訊列表
黄片免费视频2019| 国产人妻精品一区二区三区秋霞| 日本人妻中文字幕精品| 肥佬影院91| 96免费视频在线| 91在线精品| 东北女人操逼| 国产精品在线免费| 九久久九九久视频| 久久99久久99精品天美传媒棢·纸:. | 动漫av中文| 开心激情站| 人妻无一区二区三区| 成人夜夜| 综合97亚洲| 亚洲青青青视频在线| 亚洲日韩美女中文字幕乱| 日韩一卡二卡三卡| 无码动漫av中文字幕| 黄色片G G G| 美女人妻色网站| 亚洲1区2区三区高清中文字幕| 热99re69精品8在线播放| 超碰97.com| 蜜桃色院一区久久| 欧美草草高清日韩视频| 天天草天天日| 色色毛片| 91青青草| 中日韩免费看男女操逼大全| 麻豆AV一区二区天美传媒| 久操影视| 久久精品一区二区三区蜜桃臀| 歐美性天天| 97人人中文网| 丝袜无码a片| SS久久| 欧美亚男人的天堂| 韩国三级三级BD在线| 欧美极品少妇交| 操碰97| 久久婷婷六月综合| 日本超碰在线国产一区| 久久超碰爱| 日韩乱码Av| 欧美另类色图片| 日韩欧美视频青青| 久久久久久久久久久久久久9999| 丰满少妇人妻久久久久久| 久久久无码国精品无码三区三区| 九九热免费在线国产视频伊人五月| 91在线页| 97超碰资源网| 欧美日韩亚洲少妇寂寞影院正在播放 | 操逼精品视频| AV有码在线| 超碰在线91| 9久久精品| 亚洲天堂资源网| 超碰免费人妻在线| 国产精品毛片?v一区二区三区| 久久久久亚洲AV无码专区少妇| 人妻中文字幕精品无码| 亚洲欧美在线观看2021 | 欧美激色| 密臀视频三区免费网站| 人人干黄色| 亚洲囯产精品女人久久久| 强奸乱伦日韩AV| 五月婷婷六月色| 亚洲国产剧情少妇激情| 韩日精品福利视频一区不卡在线免| 啊操爽品善一区二区三区| 无码视频一区二区| 97在线/亚洲| 一中国女人毛片水真多| 亚洲码和欧洲精品激情系列| 男人的天堂在线| 欧美96交| 欧美人妻一区| 欧美老妇综合网| 欧美色图片欧美色图| 高清孕妇孕交 交| 日韩免费在线观看不卡| 在线啊啊啊啊| av橘色网站| 免费久久一级毛片大黄| 五月激情视频| 日韩大香蕉AV影片| 91在线超高颜值国产| 性爱av网站| 国产自产91区13区| 久久久久久99AV无码免费网站| 无码高清专| 欧洲免费一区二| 区自美91| 国产99精品一区二区三区免费| 午夜男人一级A片7777| 欧亚成人在线视频| 高清成年美女黄网站免费大全| 色婷婷电影网| 亚洲熟女综合一区二区| 99热啪啪| 久久人妻无码毛片A片麻豆| 三上悠亚在线毛片91| 亚洲 国产 精品一区| 99.色网| 国产精品久久泡妞网站| www色色com| 青青草日韩免费观看高清在线| 国产91 丝袜在线播放00-百度| 婷婷丁香九月| 又摸又舔在线观看网站| 国产福利一区二| 一道本久久棕合爱| 亚洲无992tv| 99精品在线播放| 青久久| 久久久久久日韩| 欧色综合| 1769国内精品视频| 一区二区首页| 大香蕉免费3| 九九英色视频| 亚洲日韩美国人妻| 久9久9久9久9久9久9| 激情啪啪拍91| 色欲天香天天综合网-成年人三级片网站-欧美乱妇狂野-日韩国产专区-久久久久久 | 国产最火爆久久国产网站网站| 日日碰视频网| 超碰在线观看av不卡| 97超碰免费人人性爱| 国产精品懂色tv影视免费观看 | 97精| av操操不卡| 丰满人妻aA一区二区三区| 大香蕉AV丝袜| 18禁网站在线播放| 嗯嗯啊啊啊好爽| 极品色社| 亚洲色系另类精品国产| 欧美 亚洲精品首页| 9+1视频网址| 超碰诱惑| 白丝少妇一区二区| 欧美成va视频网站| 国产白丝精品在线观看| 97久久久精品| 精品久久久久久亚洲| 色牛aV| 诱惑人妻欧美一区在线播放| 免费一级欧美片片线观看| 91亚洲影视| 日本少妇va7777| 一区不卡在线观看av| 久久久男人的天堂| 婷婷五月天网| 国产熟女完整版中字| 2003天天干夜夜操| 色月天AV导航| 亚洲最大网站av| 欧美黑人极品高潮喷吹熟女黑人性暴力日韩在线欧美极品一区二区 | 老熟妇综合| 精品一区二区人妖| 秋霞网无码| 好看的久久不射无码影视影院| 国产伦乱91| 91精品老女人| 伊色久人大在线| 伊人久久大香线蕉亚洲五月天,青草青草欧美日本一区二区,欧美日产欧美日产国产 | 人人扣人人操| 自拍偷拍 高清无码| 亚州欧美在线| 日韩 女同 综合| 日本免费中文一区二区三区四区 | baiduhicn.com。| 五月天综合网| 亚洲一区二区久久久久| 日韩无码人妻| 国产精品亚洲高清在线| 久久系列| 99精品综合久久久久五月天| 2000亚洲男人天堂| 日韩美女久久一区二区三区| 久久久成人国产精品无码| 久久精品一区二区三区四区五区| 97色欧洲| 欧美第二页午夜| 超碰 另类 欧美| 99无码精品| 日本操BAV| 操www| 久久色网| 青娱乐淫乱1314| 超碰色图| 欧美97爱| 欧美色图第一页| 欧美丰满少妇交换91欧美精品| 性色av一区二区| 奸色色 男人天堂 天天射| 99热91| 日本 欧美 国产一区| 亚洲 自拍偷拍 欧美| 操操操五月天婷婷丁香影院| 一起草三级AV电影在线观看| 精品人妻av区天天看片| 青草精品视频-日本久久久久网站| 啊啊啊啊啊好舒服视频| 亚洲,欧美,综合网| 欧洲一区二区| 台湾佬大香蕉| 国产精品播放| 岛国激情视频在线观看| 黄片国产精品一区二区| 久久九九视频九九视频| AV污污污污| 国产三级多多影院2022国产AA一级毛片无码 | 亚洲精品 欧美97色色| 中文字幕av片| 欧洲综合色| 九九九网站| 久久久久国产精品久久久| 2017天天操| 亚洲精品九九九| 91色香| 一中国女人毛片水真多| 99久久精品无码一区二区毛片免费| 丁香色狠狠色综合久久小说| 久久av无码| 强奸乱伦免费网站| 色官网色综合| 六月天婷婷| 99国内精品| 日韩av三四区| 伊人久久亚洲色欲综合网站 | 国产成人亚洲精品无码最新在线| 色在线综合| 99在线无码精品秘 入口黑人| 欧美天堂日韩三级国产传媒| 另类图片亚洲加勒比另类图片亚洲加勒比另类图片亚洲加勒比 | 亚洲黑丝在线| 国内操逼视频二区| 夜夜嗨一区二区三区三州加勒比| 激情一区二区| 成人七区| 蜜色网色哟哟| 久久久久久裸体| 青青草久草| 亚洲图片色图欧美另类| 黄aaaaaaaaaaaaaaaaaa色网站 | 中文字幕国产| gogogo免费高清看中国国语| 欧洲色色| 人妻无码后入| 亚洲涩涩| 麻豆AV一区二区| 9色国产精品一区粉嫩| 99少妇| 国产精品视频播放| 亚洲av国产av综合av卡| 欧美啪啪啪91| 精品人妻少妇| 亚欧美色| 午夜AV人气不卡| 大乔未久88一区| 国产免费大片| A级国产欧美激情在线| 大香蕉综合网| 欧美综合区| 日日干男人的天堂| 大乔未久88一区| 久久综合久色欧美综合狠狠| 亚洲欧美清纯| 五月丁香综合| 正宗无毛一线天嫩逼| 国产视频一区二区三区在线免费观看 | 四虎av在线| 后入式福利| h4610国产人妻| av情色影音| 日韩性色| 欧美精品99久久久| 国产91 丝袜在线播放| 色色国产| 校园春色第一页| 97人人操人人摸人人爱| 超碰在线人妻不卡| 婷婷爽人人婷婷爽视频| 在线岛| 亚洲永久AV无码精品秋霞| 操久久久久| 久久av成人无码免费| 人妻精品4K4K4K4K4| 久久亚洲日韩国产欧| 亚洲āv网址在线观看| 六月丁香网| 看看日B真人视频| 亚洲色图尤物视频 | 中文字幕精品码亚洲| 国产精品久久久久久照片| 久久久9品一区二区三区| 99福利社| 亚洲精品色| 久久国产精品视频| 亚洲一区二区性爱电影| 国产欧美成人精品| 国产亚洲日韩在线三区黑人| 久久久少妇诱惑精品视频| 伊人五月天婷婷| 人妻一区二区三区| 国产一区二区三区高清视频| 热久日综合| 婷婷丁香九月| 久久婷婷亚洲欧| 日韩精品国产一区二区| 国内成人圈中文字幕无码视频| AA级电影三区| 啊啊啊好舒服视频在线观看| 日日操丁香五月天| 欧美在线|亚洲| 小情侣高清国产在线视频| 色网亚洲人| 色一情一乱一乱一区91Av| 久久成人精品| 夜夜爽77777| 九久久精品| 久久9视频| 97鸡把在线视频| 人妻天堂综合网| 日本女人久久久| 密臀在线免费观看| 日本精品网站在线中文| 色五月激情AV在线| 欧美国产日韩清纯唯美| 在线视频 亚洲精品| 亚洲在高跟鞋自慰久久在色线| 欧美日日操| 亚洲大色鬼| 九九性爱网| 精品人妻av区天天看片| 91操人| 激情五月天丁香| 熟妇综合一区二区三区| 玖玖综合网| 99热这里都是精品| 久久久久亚洲av综合波多野制衣| 亚洲黄色电影| 亚洲情色一区二区三区| 国产原创自拍| 午夜啪啪片| 久操免费观看| 五月天精品| 成人网欧美风情| 国产精品成人蜜臀AV在线| 色噜噜日韩精品| 亚洲天堂东京热| 日韩欧美一级特黄大片| 夜色91| 国产青青美女玩逼视频| 99热色精品| 成全在线观看免费观看| 人人干黄色| 99色热| 91N综合在线| 五月婷婷综合激情| 91av熟女人妻| 天天做天天爱| 久久r精品| 亚洲综合影视| 中文字幕av色| 国内精品不卡无毒99999| 久草网站免费在线观看| 88xx成人精品视频| 一本色道综合久久欧美日韩精品| 欧美亚洲厕所精品偷拍91| 国产原创精品| 999久久久精品国产| 亚洲欧综合另类无码一区| 91精片| 日韩干B| 好看的久久不射无码影视影院| 男人的天堂亚洲| 一区二区三区激情在线观看| 天天干天天燥| 无码黑人精品一区二区三区三| 国产精品诱惑| 亚洲成人贴图| 男人综合网| 久男人久久| 激情小说亚洲图片| 伊人久久大香线蕉亚洲五月天,青草青草欧美日本一区二区,欧美日产欧美日产国产 | 国产精品探花色| 狠狠躁伊人中文字幕| 男女国产精品| 久久久久久久免费A片国产成a人亚洲精∨品无码 | 香蕉免费一区二区三区不读| 欧美九9 9 9| 9999久久久久| 操人妻少妇中文| 久热这里| 草b在线| 嗯嗯嗯啊啊啊干死我吧| 国产欧洲精品亚洲午夜拍精品| 999综合色| 欧美色日本| 无码操逼天堂| 18禁久久| 天天久久| 超碰日韩人妻| 自拍偷拍草一草| 8x福利精品第一福利视频导航| 中文AV制服乱伦| 欧美偷拍区| 亚洲国产91精品一区二区久久| 嗯啊抽插大香蕉网页| 强奸乱伦大香蕉| 91快色色色色色| 久草免费在线一区二区| 精彩视频日韩| 一牛一区二区三区久久| 风骚少妇视频中文字幕| 中文乱码字幕观看| 丰满人妻无码一区二区三区 | 天天日日日射| 亚洲一二三四区在线免费看视频| www.成人无码| 在线免费观看高清无码视频| 亚洲精品尤物yw在线影院| 人人干人人操人人..com| 日韩精品一区的| 97人妻色| 伦在线97| 久久二| 国产又色又粗又黄又爽| 中出91| 亚洲自拍一区夜夜操| 九九久久国产精品怡红院| 600国产精品视频| 国产女人和拘做爰视频| 大香蕉手机视频| 久插综合| 亚洲欧美91| 日韩丰满熟妇| 天堂av2019| 熟女露脸激情自拍视频| 国产精品96| 91免费看一区二区三区| 偷拍伦理视频| 五月天亚洲网| 欧洲黄色网| 这里都是精品在线观看| 久久色AV线| 男人天堂网站| 中文字幕亚韩| 青青草色插素人| 牛牛AV人人夜夜澡人人爽| 国内毛片国产专区二| 99r九九| 天天干1区2区在线| 久久久9品一区二区三区| 啊啊啊不要嗯嗯在线观看| 亚洲无992tv| a在线视频免费观看| 久久妇| 国产视频一区二区三区在线免费观看 | 免费亚洲黄色视频在线观看| www.99热在线只有精品| 人妻色偷色噜| 九九热九九热| 亚洲日韩美女丝袜美腿人妻视频| 偷拍欧美综合| 欧美日韩狠狠爱| 欧美日韩性爱无码| 日韩97视频| 日人妻视频91| 99久热精品99re6热| 搡老女人老91妇女老熟女| 亚洲天堂久久| 超碰在线1234区| 婷婷五月天激情网| 无码操逼天堂| 性爱乱伦一区| 日本一二三免费久久| 亚洲国产高清福利视频| 亚洲欧美日韩中文久久自慰| 亚洲精品第一| 国产精品久久久久久久久久久久久久| 人人操人人狠狠操| 72av视频| 91狠婷| 久久精品国产亚洲妲己影视| 色五月69夫妻| 国产家庭乱伦性爱视频| 91处女视频在线观看| 亚洲αv一区二区三区| 日本精品性生活久久久| 91动漫操逼视频| 懂色av中文字幕一区二区三区天美| 久久精品色欧美aⅴ一区二区| 天堂精品| 色五月大香蕉| 亚洲中文字幕在现观看| 五毛骚逼极品美女怕怕| 日本在线不卡v二区| 亚洲日韩狠狠撸视频| 丁香婷婷久久| 中国AV美女| 操曰本熟女| 九色精品视频导航1| 人妻天天爽| 第一高清av中文字幕| 精品69网| 色香欲天天天天综合色| 男人天堂2019亚洲| 成人无遮挡毛片免费看| 懂色av中文字幕一区二区三区天美| 婷婷亚洲综合| 日韩人妻一区二区| 亚洲精品一区二区免费在线观看| 极品尤物在线观看| 日本αv| 91熟女少妇| 五月丁香久久| 国产人妻天天干精品| 嗯嗯啊啊啊好爽| www.一本大99| 性爱av网站| 国产精品福利视频播放| 伊色久人大在线| 一级黄碟在线观看| 国产黄a三级三级三级av在线看| 无码直播久久久| 午夜九九| 国产超碰在线一区| 亚洲欲色9532548967一区| 精品亚洲黄色片 国产精品导航一区二区 | 无毛精品| 精品视频123区小说区| 日韩无码黄色片| 人妻一区二区三区四区视频| 婷婷10月天青娱乐| 亚洲一区亚洲天堂| 久艹伊人精品综合在线| 日韩97超碰中文字幕| 少妇3P性爱自拍| 天天综合91| 三及片网站| 亚洲蜜臀视频精品久久| 中文字幕亚洲欧美在线不卡| 五月丁香色色网| 中文字幕av乱伦| 国产精品久久天天干| 九九久久久| 麻豆区久久久久亚| 亚洲 无码 有码 中文字幕| 爱欲AV| 亚洲图片 91| 日韩高潮一区| 天天插天天操| 国产情侣自拍在线播放| 精品久久久久av影院| 91社操逼| 亚洲精品国产专区在线观看| 麻豆天美91| 理论久久婷婷网8| 精品综合久久久久久97| 少妇三P| 亚洲中文字幕有码视频一区二区三区| 久久9亚洲| 999在线电影香蕉| www.99热| 美女的肌被草喷水视频| 日韩亚洲美女一区久久| http://qxhbdz.com| 日本大片日本一区二区免费高清| 日韩乱码Av| 欧美极品少妇交| 粉嫩国产精品久久粉嫩| 婷婷色香| 久久久久久久久久久999| 成人日韩中文字幕| 99RE在线视频精品,这里只有精品| 怡春苑东京热| 国产性爱欧美性爱在线| 久久亚洲色图中文字幕| 91无码精品| 狠狠超| 亚洲最新Av| 欧美偷拍| 美国精品国产精品| 免费观看的黄色的网站| 亚洲欧洲国产综合av| 精品国产一区二区三区av在线资源| 99色色网| 夜夜操91744565| 91 国产丝袜在线播放-百度| 久久久久久久久久久久色网| 日本一区二区三区四区五区六区七区八区九区| 五月天九九日国产精品一区二区三区| 国产成人久久精品蜜臀| 国产丝袜美女在线一区| 五十路三级片| 女人天堂AV五区在线| 天美一二三在线观看Av| 欧美影院一区二区三区| av最新免费中文字幕| 欧洲一级性爱视频在线观看| 亚洲精品一区中文字幕乱码| 神马久久久久久久久久| 精品999一区二区| 人人操人人干xxx| av在线免费一区二区| 亚州情色j区| 和协影院中文字幕三区| 少妇色欲综合网2| 国产大陆天天艹| 午夜高清成人在线视频| 亚洲激情色片 | 久久久91| 色狠狠 - 百度| 日本熟妇人妻中出视频| 91日日| 96久久久久久久| 操逼大黄片| 色婷婷aV一区二区三区麻豆综合| 九一国产精品| 青青操在线视频| 看大黄色大片原件| 蜜桃视频精品一区二区| 96超碰网| 亚洲精品aa久久伊人| 欧美大香蕉在线观看| 东京太热男人的天堂久久久| 手机在线播放国产福利| 亚洲精品蜜桃久久久一区二区三区| 久久久不能久久久久| 精品久久久久久久| 亚洲无码一区二区三区三州| 最新av在线| A一区片| 区日韩亚洲乱码av电影| 色噜噜人妻av中文字幕| 美女黄频a美女大全免费皮| 亚洲综合另类欧美久久久| 国产区在线| 91丨九色丨东北熟女| 久久久久极品| 欧美人与性动交a美精品| 久偷拍| V A在线| 69人妻精品一区二区绯色| 亚洲欧美日韩有码| 亚洲第一页第二页激情| 欧美色三级片91| 熟女高潮精品一区二区| 中文字幕在线日亚洲9| 亚洲素人综合| 亚洲日韩美国人妻| 伊人久久亚洲色欲综合网站 | 国内一级精品| 人妻22p| 欧美97av| 人妻啊啊人妻啊啊| 伦理第一页| 伊人久久婷婷| av网站免费看| 顶级少妇BT天堂| 思思热在线视频免费| 亚洲色香| 欧美日韩激情无码专区| 精品视频久久区| 亚洲操人| 色臀av| 久热69九色熟妇97| 岛国在线免费视频| 欧美乱妇狂野欧美在线视频| 天天摸夜夜添无码小视频| 精品小视频在线| 亚洲阿v天堂无码z2018| 天堂综合| 亚洲 自拍偷拍 欧美| 不卡六六在线91| av资源在线播放天堂| 午夜福利在线合集| 99在线精品视频| 久久 国产 无码| 97精品综合久久网| 久久久久久精品免费看A级| 国内一级精品| 青青青操| 国产精品69人妻无码久久久| 久96热在线观看视频| 日韩一999精品| 热思思免费视频| 日韩中文字幕精品一二三事国产精品| 婷婷五月天激情网| 91狠狠综合| 日韩性爱小视频| 久久精品一区| 视频分类 国内精品| 天天操夜夜操| 男人久久精品| 久久精彩视频| 免费观看国产不卡av| 欧美综合在线第一页| 啊嗯好大视频在线观看| 特级毛片特黄久久免费看| 激情小说激情视频| 色眯眯av| 九九九九88| 一区二区三区精品久久| 亚洲精品成人动漫在线| 91青青在线| 亚洲中文电影| 三级片大波波| 啪啪啪大香蕉| 欧美日韩日产免费网站看| 97色碰| 91网站在线播放| 1204av韩国| 激情自拍 校园春色| 国产精品激情久久久久久久| 最新国内自拍av免费| 国产精品一区二区三区在线| 色九九九综合| 国产美女91视频| 99激情| 国产福利av精彩对白| 国产日韩欧美中文在线播放| 日韩小电影| 美女天天干| 国产自偷| 欧洲亚洲天堂精品| 五月天综合网| 国产综合在线视频网站| 91亚洲高清| 97伊人| 96精品久久久| 无码操逼天堂| 男人网站婷婷| 男生女生啊啊啊啊| 一区二区三区国产精产| 中文字幕视频2区| 亚洲第一页色| 欧美AB在线观看| 日本三级大片| 色色色999| 99这里有精品| 免费视频a级毛片免费视频| 色婷婷激一区二区三区 | 久久九九网| 久久99精品视频| 欧美日韩性爱无码| 午夜AV人气不卡| 大香网站| 欧美性爱一级操| 国产又爽又黄| 在线只有精品| 丁香六月婷| 超碰97精品在线| 伊人亚洲国产一成人久久精品,久久| 人、人、摸,人、人、草| 国产免费一区在线观看| 九九性爱网| 精品一区二区啪啪啪| 伊人久久88国产女| 囯产精品一区二区三区线|亚洲人成无码网WWW动漫|国产精品免费一级... | 亚洲一曲日韩精品| 久久性爱网站| 日本女优在线视频福利| 五月丁香狠狠爱| 亚州色交| 宗合情欲网| 精品人妻一二三四区视频| 91 国产丝袜在线播放-百度| 久久人体一区二区| 中文字幕第2页| 亚洲 暴爽 AV人人爽日日碰| av网站在线观看了| 日本一区二区不卡精品| 狠狠综合网| 麻豆黄四叶草网站| 操淫穴亚洲五月丁香 | 日韩色女精品| 国产又粗又长又大的视频| 91欧洲国产成人久久精品网站| 久久草草亚洲蜜桃臀| 久久久亚洲高清不打码| 欧美在线视频99| 蜜桃久久久久久久| 欧亚成人在线视频| 色97欧美| 人妻色偷色噜| 99在线视频播放| 久久久禁| 亚洲高清色综合| 天天操天天射天天日| 国产小u女在线观看| 色综合中文字幕不卡| 欧洲与亚洲欧美精品中文字幕| 亚洲好色人妻| 成人无码在线视频网站| 国产精品岛国片在线观看| 欧美亚洲另类在线蜜桃| 伊人色综合超碰| 欧美综合 站| 日本中文熟女视频| 中文字幕中文字幕一区二区| AV天天综合| 91男同| 99久久久久久亚洲精品不卡| 四虎影院成年人片| 国产第11页| 99re免费| 奇米狠999| 91亚州欧美| 日韩三级av片| 亚洲熟女中文字幕在线| 国产60区。| 欧美色图自拍| 亚洲黄色a级片| 高清不卡国产| 98久久| 九久9精品| 人人爱夜夜爱| www.男人的天堂| 亚洲成人在线高清| 殴美,日韩国产伦精品| 久久↗↗| 天天日天天搞天天干| 久久国产视频性吧| 97视频免费在线| 久操com| 91成人在线| 久久久久久久九九九九九九| 920日本午夜免费| 精品久久久一本一道| 另类小色呦| 欧美熟妇视频| 亚洲乱妇p22| 亚洲第一综合| 精品一二三区女同| 亚洲AV操| 97精品97久久| 干婷婷综合网| 亚洲精品白丝| 久操不卡视频| 日韩电影天堂视频二区三区| 乱伦一二三区| 婷婷五月天在线观看| 欧美人妖内射| 五月丁香啪啪| 91五十路| 懂色AV中文| 精品国产Av无码久久久亚洲| 亚洲国产一区二区三区在线| 人人做,人人操,人人摸| 激情露脸爱| www亚洲免费| 少妇精品久久久| 操逼操操操91| 在线观看啊啊啊啊啊| 亚洲图片激情综合另类| 精品乱码在线观看| 婷婷视频在线免费观看| 精人妻一区二区三区| 2011国产精品| 国产精品人人爽人人做可爱福利| 久久久不卡区一区二区三区久久久| 中文字幕一区二区在线日韩精品| 国产精品国产| 国产精品麻豆成人AV艾秋| 久久 精品| 97超碰免费人人性爱| 成人 日本A片无码8888| 人妻熟女一区二区三区视频| 淫淫总合网| 激情视频图片| 怡红院怡春院| 国产AV久久野战精品| 深夜激情| 澳门成人网站久国产日韩| 精品少妇人妻av久久免费| 91黑丝操| 青青草吊丝| 亚洲熟女性高潮久久久| 性感美女啊啊啊在线| 人妻少妇视频在线播放| 亚洲 欧美 精品专区 极品| 久久 久久国内精品亚洲| 丁香五月成人| 美国人人操人人操| 97超碰大| 国产大片精久久久久久| 日本色色色视频| 久久久久久久久女黄| 欧美日不卡| 国产精品网址| 在线色资源| 看黑丝美女操逼青青网站| 亚洲国产一区二区入口| 97免费在线观看| 久久久久七视频| 91视频国品一二三区| 亚洲春色欧美激情自拍| 东京太热男人的天堂久久久| 欧美综合制服在线| 国产激情综合| 久久国内| 草草电影院| 外国免费性情大片| 亚洲情色在线| 伊人色综合超碰| 久久、1234| 婷婷五月天激情网| 成人 日本A片无码8888| 免费日韩黄片| 91另类| 五月天亚洲网| 啊啊啊在线观看免费视频| 探花精品视频| 亚洲欧美精品福利在线| 久久久久久久九九九九九九| 国产精品懂色tv影视免费观看| 精品妇操一区二区三区| 日韩美女,国产传媒,视频一区| 亚洲激情网| 成人在线视频网| 色色香蕉| 人人操人人uiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiii | 性色AV蜜色av色欲av| 欧美色图自拍| 久久亚州高清| 亚洲色性情三级| 啊啊啊不要好疼视频| 色五月婷婷网| 精品超碰国产| 在线播放成人网站| 在线人人人人人人精品超 | 亚洲欧洲小说图片视频| 国产超碰| 婷婷99狠狠躁天天躁| 婷婷中文网| 久久激情综合| 欧美刺激色黄片免费看| 国产大学生高潮在线播放| 无码WWW免费视频网站| 欧美色性爱| 日韩卡一卡二卡三在线| 国产精品探花视频| 亚洲国产精品无码AV在线| 亚洲成熟国产精品美女| 亚洲欧洲精品视频发布| 国产人妻天天干精品| 嗯啊抽插大香蕉网页| 精品毛片av一区二区| 国产自产一区视频在线| 在线国产福利网址导航| 国产精品久久久久久久久AV大片 | 日本一级不卡一二区| 国产女人9999| 97在线免费公开视频| 国产91丝袜 在线播放| 狠狠爱大香蕉| 91精片| 国产一区在线观看无码AV| 艹精品| 丁香六月婷婷| 国模限制级电影| 青娱乐蜜桃臀AV色婷| 成人在线永久| 麻豆一区二区AV天美| 友优传媒精品在线一区二区| 日韩性爱小视频| 激情 欧美 亚洲 小说| 中国乱伦一区二区| 在线国产探花| 蜜桃中文字日产乱幕4区| 丝袜综合| 欧美97免费| 91精品91久久久中77777| 日韩在线地址一| 黄色激情电影在线观看| 亚洲成人性爱在线观看| 欧洲色| 97色论| 九九九国产| 国产美女在线精品免费看| 亚洲中文字母在线播放| 日韩三级视频一区二区三区| 欧美 熟女 日韩| 骚货 中文字幕 av| 日韩三级伊人| 免费观看的黄色的网站| 台欧久久精品视频| 热久日综合| 屁股久久久久久| 中文字幕一区二区免费在线| 这里只有精品视频| 91视频综合在线| 四虎国产精品永久在线囯在线| 国产中文字幕曰本毛片| 蜜桃视频精品一区二区三区| 色香综合天天影视综合 | 国产精品久久| 国产黄片在线免费观看| 日本一区二区三区欧美日韩中文字幕| 久久大陆| 久操91视频| 乱色视频中文字幕| 中文字幕、久久精品国产2020、久久综合久久自在自线精品自、亚洲 | 呻吟 欧美 日本 中出| 国产精品国产亚洲区艳妇糸列| 日韩丰满熟妇| 欧美日韩m| 久久久久久裸体| 亚洲无线码欧洲精品区别| 探花激情视频| 欧美日本天堂| 日韩精品中文字幕人妻| www九九热| 精久久久| 久久久久亚洲AV无码专区少妇| 日韩一999精品| 日韩本不卡视频在线观看 | 黑人美精品 A片| 天天干天天日天天射黄色| 久久久熟女一区| 午夜无码精品免费看性色| 不卡人妻少妇精品毛片一区23区视频| 91丝袜| 日本欧美国内在线| 色哟哟av| 国产黄色影片在线观看| 美国美女AV在线| 加勒比海色香蕉婷婷| 亚洲一区二区性爱电影| 一本色道久久综合熟妇| 黄视频免费| 久久精品视频28| 亚洲人成在线放东京热| 中文字暮97| 欧美黄色片在线播放| 亚洲另类色图片| 上特色A在线| 91女在线观看| 中出欧美| 91丨国产丨白浆| 久久黄人人爽视频| 久操大香蕉手机视频在线看 | 一区二区不卡免费| 亚洲日韩国产欧美综合v| 人妻少妇视频在线播放| 99re在线| 大奶啊啊好爽| 97色色色| 99国产天美| 国产男女边吃边摸视频网站| 亚洲视频,小说| 日韩免费三级黄片电影| 国产精品久久久久久久久久久久久久久| 日本成人在线不卡一区二区三区| 欧美在线伊人色| 婷婷伊人五月| 久久夜夜夜| 亚洲人妻在线一区| 日本久久久精品电影| 蜜乳性色无码专日粉嫩骚逼AV| 日日日大屁股骚女人精品| 欧美性爱在线无码| 99re99在线视频| 青娱乐av在线| www.亚洲黄色| 91国产丝袜美女| 人人看人人摸人人色| 午夜视频久久久| 五月天婷婷综合| 国产色产精品在线观看| 91偷拍欧美亚洲| 国产人妖的免费的视频| 另类图片五月天| 亚洲人成色9999精品久久| 色综合V| 校园激情狠狠四射| 久操九九九九| 免费簧片在线观看| 伊人国产AV| 91女网站| 午夜.DJ高清在线观看免费7| 美女AV一区二区| 国产强奸超碰AV| 清纯唯美综合| 97日视频| 国语av最新自产拍在线观看| 欧美日韩亚洲天堂| 国产大片精久久久久久| 99精品成人免费看| 乱抡国产91| 国产第二页| 天天影视综合网欧美精品| 探花精品 一区二区| 久久久久久中文字幕中文字幕最新| 欧 美 自 拍 偷 拍| 欧美第五页| 国产视频一区二区在线| 中文字幕一区电影在线观看| 久久精品电影在线| 校园春色综合香蕉| 97色碰| 国产中文字幕曰本毛片| 97超碰色| 亚洲在线综合| 欧美亚洲厕所精品偷拍91| 国产一区二区视频在线播放| 天天视频网站黄| 亚洲欧美综合图片| 黑人精品久久97| 亚洲av热热色| 午夜男人一级A片7777| 久久久久久亚洲中文| 精品人妻一区二区三区鲁大师| 伊人丁香五月婷婷| 国产传媒午夜理伦精品| 色噜噜日韩精品| 国产精品久久久九九九| 色好看av| 性欧美另类高清| 色综合网1| 操逼片中文| 波多野42部无码喷潮在线观看 | 日韩人妻无码专区| 综合久久久久久久综合网| 男女日B国产| 欧美宗合色| 国产精品丝袜在线| 99色在线| 国产精品高朝久久久久久久| 国内97干免费看| 日韩精品人妻中文字幕有码午| 日韩亚洲美女一区久久| 熟妇在线视频一区二区| 激情小说五月天| 囯产操逼片| 婷婷中文网| 人人看人人摸人人色| 亚洲 欧美日韩 另类| 91人人| 97干色| 强奸抽插av| 乱伦色图网址是多少| 亚洲成人在线高清| 国产肏逼网站| 五月天久久综合网| 日韩黄片视频试看| 东京热视频网| 国产精品一区二区a| 中文字幕高清精品一区| 操逼逼一区视频| 黄片免费日韩| 操逼操2|