我們的配方開發專案團隊準備了一份小型實驗設計(DOE)。本計畫需要考察大量不同的測量反應,以研究如何優化一種新型實驗塗料配方中的顏料穩定性。然而,團隊在分析結果時難以獲得明確的指導。透過使用 JMP 的資料重構工具,可以將現有資料重新格式化為易於利用 SLS 和邏輯模型進行分析的格式,從而得出對穩定性有關鍵影響的因素,以及特定因素組合產生令人滿意結果的機率。
大家好,我是John Steele。我在阿克蘇諾貝爾公司裝飾塗料業務的研發部門工作。我將講解如何使用JMP軟體重構我們團隊遇到的顏料穩定性優化問題的實驗設計(DoE)數據。
最初,我們設計了一個實驗方案(DoE),旨在研究三種不同穩定劑在塗料系統中的影響。這些穩定劑可以防止顏料絮凝,從而避免最終產品出現問題。最初的實驗方案包含17個實驗,檢視了這些穩定劑的不同交互作用和濃度水準。作為顏料穩定性測試的一部分,每個實驗方案都測試了五種不同的顏料。這些顏料需要進行剪切穩定性和混合穩定性測試,並在三個不同的時間點進行測試。
該設計完全按照一個合理的實驗設計流程進行,所有規則和注意事項都得到了遵守。然而,在數據分析階段,我們遇到了一些問題。
在本實驗設計中,剪切或混合試驗、不同顏料材料以及試驗時間點的每種不同組合均作為單獨的反應變數輸入並進行單獨分析。總共,這17個獨立的實驗設計運行產生了25個單獨的反應變數。
部分結果建模效果相當不錯,正如我們從上方的圖表中所見。它們的線性關係相當筆直,R² 值也相當高。然而,另一些結果,正如我們從下方的兩張圖表中所見,建模效果不佳。雜訊較大,R² 值非常低。
遺憾的是,並沒有明顯的規律可以判斷哪些回應能夠正常分析,哪些不能。部分原因是某些回覆的數據範圍非常窄,僅涵蓋了很小的數值範圍,而且這些數值之間的差異並不大。
如果我們看一下數據的初始結構,就會發現每個模型都運行了不同濃度的三種穩定劑。正如我所說,這些模型在五種不同的顏料上進行了測試,每種顏料分別在三個時間點進行了測試。對於顏料和時間點的每種組合,以及每種不同的測試類型,都重複了上述過程。
儘管這些數據是作為單獨的回應輸入的,但您可以將其視為您正在分析的數據中的一個因素。本次測試是品質控制測試。它們不能像傳統實驗設計中的常規因素那樣處理,因為傳統實驗設計要求在特定的時間點使用特定的顏色進行測試。顯然,由於實驗設計的運作方式,它無法涵蓋所有可能的組合。
為了方便分析,我們可以將這些因素視為偽隱藏因素,並重新建構數據以獲得更好的分析結果。那麼問題來了,我們該如何重新建構這些數據呢?
如果我打開 JMP,這裡可以看到設計本身的初始資料。我們有 ID 運行結果,有不同穩定器水平形式的各種因素,還有所有單獨的響應。這裡只填充了一些用於演示的虛擬資料。我們要做的是將每個單獨的回應合併成一個單一的回應。
我們可以使用 JMP 的一些非常實用的表格和資料操作工具來實現這一點。第一步是使用堆疊功能,然後我們可以選擇收集所有要合併到同一列中的單一回應的欄位。如果我們點擊“堆疊列”,就會將所有這些列放入此處。
如果我們向下捲動到最底部,就可以選擇要保留的資料表中的哪些初始欄位。我們想要保留 ID 和因子。如果需要,我們還可以更改資料和回應標籤以及列標題。點擊確定後,我們將得到一個新的資料表,其中包含各個運行的 ID、因子,所有回應現在都位於同一列中,對應的回應名稱則位於其旁邊的另一列中。
從初始資料表可以看出,所有資料都經過設置,使得 ID1 的所有結果都為 1,ID2 的所有結果都為 2。您可以看到,如果我們選擇 ID1 的行,所有資料都已傳輸過來。如果您需要定期執行此類流程,可以使用 JMP 的腳本建構器或一些工作流程功能來實現自動化。但是,在本例中,這只是我們進行的一次性測試。
如果我們切換到下一個表格,可以看到目前標籤中包含了序號、測試時間和測試類型的混合資訊。從因素分析的角度來看,這本身並沒有太大用處。我們需要將這些資訊拆分出來,這同樣可以使用一些內建工具來實現。依序點擊“列”、“實用工具”和“文字列”,選取這些列後,我們可以定義一個分隔符號。在本例中,我們將使用逗號來分隔文字字串。
輸入逗號,然後點選確定。現在可以看到,我們新增了幾列,分別包含材料一、材料二、材料三等等。測試類型和與之關聯的時間點標籤也已分離出來。我們可以將它們作為單獨的因素進行處理,並完全刪除初始列。
之後,我們可以進行一些額外的格式調整。我們可以更改列名,對於時間點,我們甚至可以將其從文字字串重新編碼為數值之類的格式,這同樣可以使用 JMP 的一些內建函數來實現。
如果我們在選單中選擇「重新編碼」並進行原地更改,我們可以將時間 1 改為 1,時間 2 改為 2,時間 3 改為 3。我們直接進行原地重新編碼。所有這些值都已變更。然後在「列資訊」下,我們可以將其從字元型變數變更為數值型變數或因子型變數。我們可以將其保持為名義型,也可以將其變更為連續型或序數型。在本例中,我將將其變更為序數型。
完成所有格式調整後,根據我的個人經驗,我知道這種特定類型的測試,也就是我們最終得到的實際數值,其實並不那麼重要。更重要的是測試結果是否通過。我們可以將這些個體結果轉換成通過或失敗的判定標準,用於建模。
在這個數據表中,結果值略有不同,但我們在最後一列單獨列出了通過或失敗。如果我們進入「列資訊」部分,可以看到在「列屬性」下,我們新增了「值顏色」和「公式」兩個部分。
這裡我們使用了一些 if 語句來檢查結果是否高於或低於某個特定值,並根據該閾值回傳結果是失敗、通過,還是因為沒有輸入資料而回傳空白。值顏色部分還允許我們指定與這些值關聯的資料點或單元格的顏色。在本例中,通過為綠色,失敗為紅色。
當開始對這些數據進行建模時,我們可以保持數據格式不變,然後使用測試的 by 變量進行建模,分別對剪切試驗和混合試驗進行建模,這有時更方便;或者我們可以拆分這些數據,這本質上是堆疊過程的逆過程,這樣我們就可以在一列中得到剪切試驗的結果,在另一列中得到混合試驗的結果。
為此,我們需要使用 JMP 表格工具中的分割功能,根據測試結果(合格或不合格)和測試類型進行拆分。然後,如果再按 ID 和資料進行分組,就能確保資料保留在同一行中。同樣,我們可以選擇要保留的列。我們選擇保留 ID 和因子。此外,我們還要確保將時間點也包含在內。最終,我們將得到一個資料表,其中包含混合測試和剪切測試的單獨欄位。
接下來,我們可以開始研究這些數據的實際建模。現在我們有了這些結果的合格/不合格標準。與我們最初針對此特定問題所使用的標準線性迴歸方法不同,我們可以開始使用邏輯迴歸和分類方法。如果我們運行我為此準備的其中一個模型,我們最初得到的 R² 值要高得多,達到了 0.9 左右。此外,我們還能獲得影響結果的各個因素的相對影響以及這些因素之間的交互作用。
另一個實用功能是,向下捲動頁面,你會看到一個名為「混淆矩陣」的部分,它或許能更準確地描述分類模型的品質。根據結果的真假(1 或 0),它會告訴你,有多少個真假結果被錯誤地預測為真,又有多少個假假結果被錯誤地預測為假。在本例中,整個測試資料集中只有兩個結果被錯誤分類。
為了更深入地了解潛在的行為和交互作用,我們可以利用數據模擬將這些數據視覺化。對於邏輯迴歸模型,模擬工具位於輪廓分析器下,而不是像標準線性迴歸和數值型模型那樣位於分析器下。
然後,我們可以開始指定要模擬資料的區域以及要模擬的資料點數量。這樣,在模擬過程中,我們不僅可以得到一系列隨機組合的因素、指定的材料水平和時間點,以及它們最可能的結果,還可以獲得結果屬於合格還是不合格的機率。
如你所見,有些數值為 1,意味著幾乎肯定會通過,而有些數值則只有大約 60% 的機率通過。
我們可以把這些機率值全部提取出來,然後根據我們關注的因素(例如穩定劑、顏料和時間點)繪製圖表,得到類似這樣的圖形。我剛剛取消選中了這些單元格。這裡,一個軸代表穩定劑 1 的濃度。另一個軸代表穩定劑 2 和穩定劑 3 的閾值範圍。這些是部分單元格的座標軸。底部的座標軸則代表不同的顏料材質。
然後,所有這些區域都會根據其通過或失敗的機率進行著色。而一開始,我們對某種材料是否會產生某種結果並沒有清晰的概念,對實際情況也缺乏把握。透過這種基於重構資料的視覺化圖表,我們可以立即看到哪些區域是綠色的,哪些區域是紅色的,從而能夠更深入地了解哪些區域可能存在潛在的故障問題。
您可以看到,材料 4 和 5 通常呈現偏紅的顏色,尤其是在穩定劑 2 含量較低的情況下。它們更有可能存在潛在問題。而材料 1 和材料 3 在大多數情況下幾乎完全呈現綠色。如果您想從該圖表中獲得更具體的輸出結果,可以新增局部資料過濾器,例如,只專注於材料 1 和材料 3,並進行比較。
總之,你的實驗設計的結果和輸出可能包含一些你原本沒有考慮到的隱藏因素或類似因素的屬性。如果不考慮這些因素,你最終可能會得到模型效果很差的數據。但這並不代表你的數據就毫無價值。有時候,你只需要對現有資料進行一些細微的結構調整,就能從中挖掘出更大的價值和效用。值得慶幸的是,JMP 內建了許多非常實用的工具,可以大大簡化這個過程。
完成這些步驟後,您不一定要使用最基礎、最標準化的線性迴歸和數值建模方法來從資料中取得有用的資訊和結果。這就是我今天想講的全部內容。非常感謝您的時間。