一旦你掌握了在 JMP 中設計實驗的便利性,你對周遭世界的看法就會徹底改變。一切皆可成為實驗的機會!本次演示將透過一個實際案例,展示實驗設計 (DOE) 的整個流程,包括實驗設計、結果建模以及最佳化輸入參數以獲得最佳輸出。
去年Discovery大會的與會者們體驗了一次別開生面的趣味活動:在印第安維爾斯高爾夫度假村的練習場上擊打夜光高爾夫球。練習場配備了Toptracer技術,可以監控每一次擊球。每次擊球都會記錄總距離、飛行距離、球速、發射角和弧線等數據。如此豐富的數據為使用JMP設計實驗提供了絕佳的機會!
在與 JMP 用戶和朋友們共度一個夜晚後,我們利用 JMP 的自訂設計器設計了一個實驗。設計過程僅花了幾分鐘。設計中使用了基於高爾夫站姿的輸入變量,包括握桿方式、桿頭對準、站姿寬度和球位等。我們在練習場上執行了該實驗,建立了一個模型,並找到了能夠打出最遠、最直球的最佳設定。建模和優化工作在幾分鐘內就完成了,而且全程都在練習場上!這使得我們能夠立即進行驗證性測試。之後,我們也將這些優勢應用到了實際的高爾夫球場上。
大家好,我是桑迪亞國家實驗室的統計學家唐‧利夫克。很高興來到這裡。我將為大家做一個與我日常工作略有不同的簡短介紹,稍後大家就會明白原因。歡迎各位,請坐,我們開始吧。
我先簡單介紹一下背景。我會用 PowerPoint 做一點演示,但我們不會讓 PowerPoint 講得太枯燥。我們會退出這個軟體,直接進入 JMP 做個現場示範。
在桑迪亞國家實驗室,我通常負責的專案是核威懾。我們還有其他五個研究領域。作為一名統計學家,我的工作實際上涉及所有這些領域,但更常是在核威懾小組。我幾乎所有工作都使用JMP軟體。再次強調,我的工作是統計學家,但我的本職工作其實是電機工程師。或者更準確地說,我的教育背景是電氣工程師。
核威懾,我們參與的一些專案…這是我們公司簡報中的一張幻燈片,所以我想給你們展示一下我用JMP軟體做過的一些專案。我們把它用在了B61項目和W80-4導彈上。很多武器部件都是用它做的。就像他們說的,我們的武器每天都在使用。它們是一種威懾力量,而且是非常有效的威懾力量。
這些是我使用過 JMP 的幾個程式。實際上,除了一個程式之外,螢幕上顯示的這些程式我都和工程師一起開發過,並且都大量使用過 JMP。
去年我參加了JMP大會,地點在加州印地安維爾斯。那地方美極了,簡直令人驚嘆。我以前做夢都沒想到飯店房間居然就在高爾夫球場旁邊,真是太酷了!那地方棒極了。我在大會上萌生了一個想法。我們舉辦了一個叫做「夜間暢飲」的活動,非常有趣。如果你是第一次參加JMP大會,你肯定會發現這些大會有多精彩,以及它們是如何讓你忙得不可開交的。你根本沒有空閒時間,晚上也總是安排得滿滿噹噹。
這次活動真棒!地點在印第安維爾斯高爾夫度假村酒店的練習場,會議也在那裡舉行。我看看能不能播放這段影片。我們試試看,影片大概有[聽不清楚 00:02:31]秒長。我不知道你的螢幕上能不能顯示出來。
好了,就是這樣。我覺得這個小影片挺酷的。最神奇的是這些高爾夫球在黑暗中會發光。他們把球放在一個有燈的小盒子裡,這樣你就能看到球的落點了。如果我的演講能順利進行,我希望也能在這裡分享一些去年會議的照片。
這裡其實是JMP大會租用的高爾夫練習場。那真是一場盛大的活動,幾乎所有人都來了。值得一提的是,他們還請了餐車。你看,傑夫就在右邊。你可能認得他,他可是JMP很多屆大會的主持人。我覺得傑夫頭頂的小光環挺有趣的。我覺得這純屬巧合。也許並非如此。也許這背後有什麼故事,傑夫。
你身後的這些小螢幕,我給你近距離看其中一個。這些擊球區非常棒,因為它們會在你擊球時顯示各種統計數據。它會顯示球的總飛行距離、飛行高度、平飛距離、球速等等。總共有10個變數。
當然,我最關心的是總距離。這裡面還有一些其他因素你可能也關心,它也涵蓋了這些,所以我把它們也記錄下來了。但當時我想:“這真是太棒了。這正是一個絕佳的機會,可以對我的高爾夫球技做一個實驗,看看我能不能稍微改善一下我的擊球軌跡,也就是我擊球的距離。” 我當時想:“這真是太棒的數據了。”
實際上,我很多年前在一次 JMP 會議上做過類似的實驗,但當時我需要用到 GPS 定位,還要到戶外進行一些計算,非常麻煩。而這個方法很棒,因為它會在螢幕左上角顯示總進位數,而且資料收集也方便得多。
那麼,我們來做個實驗。我之所以想做這個實驗,是因為我很多實驗內容都無法公開,因為它們並非完全保密。我需要一些可以公開分享的教學案例。這是一個絕佳的機會,因為我認為大多數人至少都能理解高爾夫揮桿的基本原理以及我接下來要講解的各種變數。
這是我在準備這個簡報時隨口說的一句話。當時我正坐在那裡看高爾夫頻道,突然看到這個畫面,心想:「哦,這不錯,我要拍下來。」高爾夫運動的精髓就在於此,要盡可能減少不確定性,從而最大限度地提高確定性。
我在實驗中考慮的變量,我會用圖示的方式展示給你們,然後我們再深入設計實驗並進行分析。為了讓你們理解握法,我考慮了三種不同的握法:左圖所示的交錯式握法(小指和食指重疊握住)、分指式握法,以及介於兩者之間的一種握法——雙手並非分指式握法,而是直接接觸,我稱之為接觸式握法。
同樣,我觀察了三種不同的握桿方式。我觀察了桿頭,這裡我對比了三種不同的桿頭:左邊是完全閉合的桿頭,右邊是中立的桿頭,還有介於兩者之間的,我稱之為閉合桿頭。我發現,在我的高爾夫球技中,如果桿頭稍微閉合一些,似乎能打出更遠的距離,但我並不確定,因為我從未真正測量過,所以這是一個值得納入實驗的變數。
然後是右手,這裡我只用了幾種右手握桿姿勢。我用了中立握桿和強力握桿。中立握桿就是標準的握桿姿勢。強力握桿是指右手旋轉,順便說一下,我是右撇子高爾夫球手,你需要將右手旋轉得稍微偏離球桿中心一點。我認為這會讓揮桿更有力一些。它往往會讓球桿向左偏,讓球向左偏,從而降低擊球的可預測性。但我認為,我們也應該把這個因素當作一個變數來考慮。何樂而不為呢?反正成本不高。 DOE(實驗設計)的好處在於,你可以加入很多變量,而運行次數卻不會顯著增加。
我注意到,打高爾夫球的時候,如果我把右腳稍微往後挪一點,有時候就能糾正我的右曲球。我覺得右曲球無法徹底根治,但這個方法確實有點幫助。所以我想,「好吧,也試試這個方法吧。」 就是把右腳稍微往後挪一點。
最後,說說我站位中球的位置。在這個實驗中,我用的是九號鐵桿,而不是一號木桿。九號鐵桿通常放在站位的後部或中間位置,而不是前部。但我注意到,在打高爾夫球時,如果我把球放在站位的前部,我往往會打得更遠一些。這似乎與職業球員的說法相悖,他們通常建議使用九號鐵桿、劈桿等高號鐵桿時,球應該放在站位的後部。但這種方法對我來說似乎行不通,所以我們來做個實驗,看看原因。
這個實驗設計起來相當容易。事實上,我是在「黑暗中的射擊」活動結束後立刻著手設計的,回到飯店房間後,我就用JMP軟體完成了這個實驗。我當時想:“好,等周四會議結束的時候再運行這個實驗。”會議午飯後就結束了,我心想:“我直接去高爾夫練習場做這個實驗,把數據輸入進去,就能實時分析了。”
這就是實驗過程,我會在JMP裡示範給你看,但我想先透過截圖展示我是如何輸入所有因素的。我還添加了一些反應變量,它們也會顯示出來,但我主要關心的反應變量是我擊球的距離。但是,一、二、三,我這裡有五個不同的因素。我有三乘三乘二乘二乘三,所以這裡有很多可能的組合。
但如您所知,在實驗設計中,我們透過忽略三階、四階和五階等高階交互作用來解決這個問題。實際上,在這個實驗中,我只關注主效應,暫不考慮交互作用。以後我可以回頭完善這個設計,開始研究一些雙重交互作用。但現在,我只想知道哪些因素會影響主效應。 JMP 告訴我應該跑 18 次,這差不多合適。效果很好。
這是我創建的腳本。我只是把它作為截圖放在演示文稿中,這樣如果你們想完全復現這個實驗並進行修改,你們可以將隨機種子設置為我沒有設置的那個值,而是隨機分配給我的那個值,這就是腳本。
然後,設計實驗看起來是這樣的。我這裡要用到JMP軟體,我們稍後再詳細講解。你可以看到它是如何安排我的18次練習的——我把每次練習稱為一次「運行」——在每次運行中,我都設定了不同的變數。所以,我的第一次練習其實是採用交叉握桿法,桿頭保持中立,右手保持中立,右腳後移,並將球放在站姿的前部。我來到練習場,做好這些準備,這就是我的第一次擊球。
快速了解實驗設計的作用。請注意,這張顏色圖中顯示的主要效應之間幾乎沒有相關性。右手和右腳之間有微弱的相關性,比例為 1/9.111。相關性非常小。但令人欣喜的是,我可以進行包含五個不同變數(其中一些變數有三個設定)的實驗,並且主要效應之間完全沒有相關性。非常棒!這就是實驗設計的強大之處。
週四午餐後,我立刻去了練習場。會議結束了。先在一家可以俯瞰印第安維爾斯高爾夫球場的漂亮餐廳吃了午飯,然後就去了擊球區。這是他們給我的球桿的照片。有趣的是,這和我平常用的1號木桿一模一樣。我覺得這些球桿和我平常在家用的鐵桿也很相似。我根據照片上的時間戳設計了這個實驗,我稍後會給你們看。我的第一桿和最後一桿都只花了20分鐘,所以我花了5分鐘設計這個實驗,20分鐘進行實驗。
這是我第一次擊球的設定。第一次擊球時,我起身擊球,螢幕上顯示的就是這些設定。我直接拍照記錄數據,因為我不想在擊球間隙猶豫太久。這些照片就是我的數據。然後我坐下來,把這些數據導入JMP軟體。我用的是筆記型電腦,所以導入數據和分析實驗都很方便。我們來看看數據。
這是我的數據。當時我在擊球區,只輸入了總分。這正是我最關心的。之後我又回去把螢幕上的其他變數都填進去了,這樣我也可以對它們進行建模。如果你用JMP設計實驗,並且使用DOE和自訂設計,這就是我常用的設定。我在這裡添加了我的因子。我就不贅述打字過程了,總之我加了一個兩水平離散數值因子,一個三水平離散……抱歉,這樣寫不對。去掉「非離散數值」這個詞。
我的分類因子有兩個水平,有些有三個水平,總共五個變數。至於反應變量,我基本上包括……我想當初設計的時候,我以為會有三個反應變數。結果發現我真正關心的只有一個,所以實際上我用了八個反應變數。因為如果你不喜歡設計實驗時設定的反應變量,你可以根據需要選擇任何反應變量進行分析。
但是,在這個自訂設計中設定這個實驗非常簡單。你可以看到我是如何添加變數的,我在這裡輸入變數名稱,然後我會在 JMP 中繼續設計實驗。下面你可以看到運行次數,但我不會輸入完全相同的訊息,因為我不想讓你覺得無聊。
接下來我點擊“創建設計”,JMP 會自動幫我設定設計。我的五個變數會顯示在這裡,而「相關性」中的顏色映射會顯示在這裡。讓我們運行 DOE 對話框,看看效果如何。
在設計這個實驗方案時,我進行了計算,這是軟體自動產生的。我輸入的參數都在這裡。我的輸入方式很簡單。我原本以為會得到切球、球速和距離這三個響應值。結果確實得到了距離和球速。我不確定這個切球變數(聽不清楚 00:15:28)的曲線,但後來發現…當時我並不在意。我們可以在以後的實驗中再研究它,但現在我只關心距離。球速和距離的相關性很高,所以我不需要同時考慮這三個變數。
但設定這個實驗,我大概三分鐘就能寫完這些。設定好實驗,讓 JMP 產生表格。不過,讓我再給你們展示一下相關性的顏色映射。舊版的 JMP 相關性顏色映射實際上是一個彩色映射。現在它預設是黑白的。我通常會把它改成彩色映射,但這裡顯示的顏色和我之前在 PowerPoint 幻燈片中展示的顏色一樣。
然後,用 JMP 產生表格,它會自動產生。現在我只需要用這些不同的設定投擲這 18 球,然後在這裡輸入距離,就可以開始分析實驗了。我已經輸入了數據,但我不會保存。我也不打算幫你保存。我回到這個自訂設計,因為我還想給你示範功效分析。我們運行一下模型,看看結果如何。
點擊模型後,腳本會按照您建立自訂實驗時輸入的內容儲存到資料表中。 JMP 會提示:「我猜您想用這些作為效應,因為這是您在創建實驗時輸入的,所以我不需要重新輸入任何內容。」我的回答是,我的設計中已經展示了三個這樣的效應。我並不關心進位或平進位。現在,我先移除這些效應,然後再執行實驗。看看總結果。我已經移除了所有其他效應。
現在又回到 DOE 對話框了。抱歉,我有點懶,不想打字。我要把這個刪掉,還要把這個也刪掉。我不小心選中了特效,也把它們刪掉了。這是我要查看的模型。運行之後,我看到了很多雜訊,因為你猜怎麼著?唐的高爾夫球比賽雜訊很多。這並不奇怪,對吧?
我只是在數據表中根據距離給這些點著色了。這是一個 JMP 演示,我們來示範如何操作。可按行、按列著色或標記。你可以說我想按總距離著色。我已經這樣做了。我的所有行都根據總距離著色了。如果我之前打開了另一個窗口,它就去哪裡了?現在我的資料表顯示在最上面。記住,在 JMP 中,你之前打開的任何視窗都會顯示在下方。
觀察這個模型,我主要關注的是P值。我還關注殘差,也就是實際值減去預測值。本質上,它是模型中任意一點到擬合線的距離。如果我把這條線(紅色擬合線)水平展開,你就會得到這樣的結果。
實際得分和預測得分之間的差距有多大?實際得分和預測得分之間的差距有多大?我的比賽數據波動很大。你可以看到,我的模型給的誤差在正負五碼左右。這意味著還有很多數據無法解釋。我這裡只用這些變數解釋了距離變化的一半。
我的均方根誤差其實是 6。如果我看一下這些殘差,[聽不清楚 00:19:35] 都是 6 的均方根誤差。我們看看還能看些什麼。我想看看……我們直接往下看。先看看性能分析器,再開始調整模型。如果我看一下效能分析器,我發現了一個效果圖,我把它放大給你看。
使用這個分析工具時要小心。如果你放大一個圖表,所有圖表都會跟著放大,很快就會佔滿整個螢幕。不過,如果我看一下我的分析工具,可以粗略地看出,暫且不細說我稍後要講的內容,這裡我先簡化一下模型。看起來我的觸桿握法、中立的桿頭和中立的右手都是最佳的。右腳與前腳齊平似乎是最佳的,球和站姿也都比較前面。這些都是我手動計算出來的。
如果你點擊預測分析器並查看最佳化設置,你會發現我已經添加了期望值函數。因為在設定實驗時,JMP 會問我剛才提到的反應值(聽不清楚 00:20:58),你想如何處理它。我選擇了最大化。設定實驗時,你需要告訴它你是想最大化、最小化還是達到某個目標值。我選擇了最大化,所以它已經自動添加了這個函數。
就讓 JMP 幫我最大化目標點的期望值吧。我之前是手動設定的,所以它沒有動任何東西,但我們假設這些點在別的地方。然後我告訴 JMP 最大化期望值,它會說:「好的,為了最大化你的總距離,請使用這些設定。」 這是你預測的總距離,其中包含了不確定性 [聽不清楚 00:21:35],所以是 117。我記得我最遠的一次命中距離大概是 114。
設定好這個實驗之後,我用這些設定做了幾次組合練習。我打了幾個球,我記得——等我們回到PPT裡我再拿出來——打出了115和113的距離。這很好地證實了這些設定確實能讓我打出最佳距離。我只打了幾個球,主要是因為時間關係。天氣有點熱,我也有點餓了,但我只是想確認一下,如果使用這些設置,我的擊球效果確實不錯。
[聽不清楚 00:22:22] 簡單化。記住,所有模型都是錯誤的,我們只是想創建一些有用的模型。這話不是我說的。你知道是誰說的嗎?如果你不知道,可以上網搜一下。我們要去掉那些無關緊要的東西,為什麼呢?因為它們對預測能力沒有實際幫助,所以我們來簡化模型。你可以在 JMP 中手動操作,只需點擊你的效果並將其刪除即可。 [聽不清楚 00:22:48]
P 值是什麼?它是指僅僅由於隨機性而觀察到如此大效應的機率。我就不贅述統計細節了,但用電子工程術語來說,就是信噪比。小熊頭似乎無關緊要,所以我把它從模型中移除。右腳似乎也無關緊要,所以我把它從模型中移除。現在我這裡只剩下[聽不清楚 00:23:11]邊緣變數了。
統計學家喜歡在非常好的模型中使用 0.05 的顯著性水準。我打算稍微放寬一些,因為我的揮桿動作有很多波動。我先剔除握桿這個變量,現在有些變數的顯著水準低於 0.25。如果你這樣做,在進行逐步迴歸時,預設的變數剔除顯著水準閾值是 0.25。我只保留球和站姿這兩個變數。 [聽不清楚 00:23:45] 這可能只是隨機因素造成的。對我來說,保留這兩個變數已經足夠了,因為我知道我的揮桿動作有很多波動。
右手和球在站姿中的位置似乎是唯二真正產生明顯影響的因素,具體情況如下。就我的高爾夫球技而言,看起來是右手姿勢(聽不清楚 00:24:05)比右手力量強(聽不清楚 00:24:08)更好。我一直嘗試用右手力量強來消除右曲球,但似乎我的中立右手姿勢實際上能帶來更遠的距離。如果我只看擊球數據,我可以看到中立右手姿勢比右手力量強能多打出大約5碼的距離。
保持球在站姿前部,我直覺上覺得這對我的揮桿動作有好處,這樣更好。我們結束這個步驟。我們快速地對 y 軸和 x 軸進行擬合。我可以快速地查看每個變數與總距離的關係。 [聽不清楚 00:24:49] 總距離,我正在查看每個變數[聽不清楚 00:24:52]。透過查看那裡的數據。
我可以進行統計分析,讓你覺得枯燥乏味,甚至抓狂。但我們還是直接看整體數據吧。看起來觸球式握桿效果最好。我看不出閉合式握桿和中立式握桿之間有太大差別(聽不清楚 00:25:15)。中立式握桿的距離稍微遠一點(聽不清楚 00:25:20),但我只想快速地給你展示一下 y 軸和 x 軸的擬合曲線。看起來,把球放在中間和放在後面(聽不清楚 00:25:28)的距離似乎不那麼重要,感覺和把球放在前面相比差別不大。
我擬合了模型。這是所有變數的快速散點圖矩陣。我總是喜歡在設計實驗時查看這些數據,然後在分析之後再查看,以便更好地了解我想要尋找的結果,例如[聽不清楚 00:25:57]速度與特定變數之間的關係。我可以看到,我已經很好地覆蓋了設計空間。
這些變數(聽不清楚 00:26:10)涵蓋了所有情況,包括這兩個變數之間的所有組合,這已經很好地涵蓋了這兩個變數之間的所有交互作用。如果我們觀察並消除數據點的抖動,就能看得更清楚一些。但現在每個點背後都有不只一個數據點。不過,能夠全面涵蓋這些變數之間的所有交互作用,這才是設計一個好的實驗的精髓所在。
我還可以看到很多強相關。這是我的平飛距離和總距離的比較。我最關心的變數是總距離。嗯,總距離。它和平飛距離、球速等等都有著密切的相關性,正如你所預期的。散點圖矩陣總是很有意思。
最後我想談談功效分析。我設計這個實驗時只做了18次重複。如果我們看一下實驗設定時的功效分析,會發現功效相當不錯。功效是指偵測到訊號的能力(如果訊號確實存在的話)。如果我的表述不夠準確,請統計學家見諒。但請記住,我是工程師,只是扮演統計學家的角色。總之,這個功效看起來不錯。
但實際上,請記住,我的均方根誤差大約只有 6。這樣一來,我偵測變數的能力就非常有限了。即便如此,我仍然偵測到了一些現象。不過,在這種低效率的情況下,我或許應該多擊幾球。我知道我能打……我告訴你我的成績。我知道我能打出 90 桿,因為我一輪高爾夫就能打出 90 桿,所以 18 桿不應該是我的極限。我應該可以打出 18 桿。我可以回頭改進這個實驗,增加一些次數,或許能提升檢測某些變因影響的能力。
咱們回到 PowerPoint。我們已經完成了現場演示和 JMP 的使用。現在總結一下。總而言之,我們看到我的高爾夫揮桿動作有很多噪音。訊號雜訊比很低,雜訊這麼大,很難提取出訊號。這並不奇怪。我不是世界上最好的高爾夫球手。我現在的差點略低於 15,這大概算是一個平均的柏忌球手。
在標準桿72桿的球場上,我通常會打出高於標準桿1桿的成績,也就是加18桿,總共90桿。我的目標是成為一名柏忌球手。如果我每洞都能減少一桿或一桿半,我一年就能賺1000萬美元。但對於懂高爾夫的人來說,每洞減少一桿可不是件容易的事。
我發現有些因素可能確實有影響,但真正讓我覺得有效的只有保持右手中立和將球放在站姿前部。我已經把這些技巧運用到我的比賽中,現在我更多地使用中立的右手,而不是強力右手。我把球的位置前移,尤其是在使用短鐵桿(例如九號鐵桿)時,這樣我的擊球距離明顯增加了。當然,擊球距離的增加並非全部,更重要的是,我對擊球距離的預測也更加精準了。
我之前說過我在練習場上的確認練習。我用那些最佳設定打了幾個球,在15碼的距離上打出了大約13桿的成績。我記得這次實驗我的最遠成績是114桿。這是相當不錯的確認了。這張照片是我其中一張記分卡,我當時特別興奮。通常情況下,我那天能打出45桿。結果我打出了高於標準桿2桿的成績。我會圈出我的標準桿,職業選手會圈出他們的小鳥球。像我這樣的業餘選手,打出標準桿就會很興奮,我會把它們圈出來,如果打出小鳥球,我會圈出兩個。
我今天打得還不錯,高於標準桿兩桿。我不會說這完全歸功於我的設計實驗和揮桿動作的調整,但當你試圖讓人們對你正在進行的專案感到興奮時,你總是會展示最好的數據。
在此,我想把我的演講獻給我的哥哥。我的哥哥喬,我們在2020年末失去了他,他罹患了一種侵襲性極強的腦癌。喬教會了我熱愛高爾夫。是他讓我對這項運動產生了興趣。這都是他的錯。他以前常常和我一起參加JMP的會議,他自己也曾經是JMP的使用者。
他也是桑迪亞國家實驗室的工程師,在衛星部門工作。所以我和喬以前每天都一起出去玩,一起吃午餐。我很想念他,想把這篇文章獻給他。說起來,左邊這張照片裡,我和喬在博爾德斯高爾夫球場,當時他才剛確診腦癌。我們當時在鳳凰城,因為他在梅奧診所接受治療。那天我們去打球,結果因為鳳凰城的霜凍耽擱了,所以出發晚了。真是倒楣。我們打完九洞後,心想:“你肯定要錯過預約了,我們得走了。”
我們打到一半就離開了,去梅奧診所看病,回來後又繼續打完了剩下的球。喬真是個難纏的傢伙。果嶺上這個球,其實是喬打得太遠,撞到他身後的一塊石頭,然後又彈回果嶺上的。我覺得這事兒太搞笑了,就拍了張照片。
這是喬和沃爾特懷特,還有布萊恩克蘭斯頓,在我們常去的球場。這是我和喬在阿爾伯克基帕科嶺高爾夫球場的合照。非常感謝。我希望這能啟發您在工作中,甚至在娛樂中運用實驗設計。謝謝。