最美情侣中文字幕电影,在线麻豆精品传媒,在线网站高清黄,久久黄色视频

歡迎光臨散文網(wǎng) 會員登陸 & 注冊

拓端tecdat:R語言用加性多元線性回歸、隨機森林、彈性網(wǎng)絡模型預測鮑魚年齡和可視化

2021-11-01 16:52 作者:拓端tecdat  | 我要投稿

原文鏈接:http://tecdat.cn/?p=24127

原文出處:拓端數(shù)據(jù)部落公眾號

介紹

?鮑魚是一種貝類,在世界許多地方都被視為美味佳肴。鐵和泛酸的極好來源,是澳大利亞、美國和東亞的營養(yǎng)食品資源和農業(yè)。100 克鮑魚可提供超過 20% 的每日推薦攝入量。鮑魚的經(jīng)濟價值與其年齡呈正相關。因此,準確檢測鮑魚的年齡對于養(yǎng)殖者和消費者確定其價格非常重要。
然而,目前決定年齡的技術是相當昂貴且低效的。
養(yǎng)殖者通常會切開貝殼并通過顯微鏡計算環(huán)數(shù)來估計鮑魚的年齡。因此,判斷鮑魚的年齡很困難,主要是因為它們的大小不僅取決于它們的年齡,還取決于食物的供應情況。而且,鮑魚有時會形成所謂的“發(fā)育不良”種群,其生長特征與其他鮑魚種群非常不同。這種復雜的方法增加了成本并限制了其普及。我們在這份報告中的目標是找出最好的指標來預測鮑魚的環(huán),然后是鮑魚的年齡。

數(shù)據(jù)集

背景介紹

這個數(shù)據(jù)集來自一項原始(非機器學習)研究。
數(shù)據(jù)集可在UCI機器學習資源庫網(wǎng)站上找到。
有30多篇論文引用了這個數(shù)據(jù)集。

從原始數(shù)據(jù)中刪除了有缺失值的例子(大多數(shù)預測值缺失),連續(xù)值的范圍被縮放用于NA(通過除以200)。在本分析中,我們將通過乘以200的方式將這些變量恢復到其原始形式。

數(shù)據(jù)集中的觀測值總數(shù):4176

數(shù)據(jù)集中的變量總數(shù):8個

給出的是屬性名稱、屬性類型、測量單位和簡要描述。環(huán)數(shù)是要預測的值,是一個連續(xù)值。

變量列表

變量數(shù)據(jù)類型測量描述性別分類(因子)M、F 和 I(嬰兒)長度連續(xù)毫米最長殼測量直徑連續(xù)毫米垂直長度高度連續(xù)毫米帶殼肉整體重量連續(xù)克整只鮑魚去殼重量連續(xù)克肉的重量內臟重量連續(xù)克腸道重量外殼重量連續(xù)克曬干后鮑魚的環(huán)連續(xù)+1.5 給出以年為單位的年齡

下面是分析

“使用回歸預測鮑魚的年齡”

方法


  1. #加載所有必要的軟件包

  2. library(readr)

  3. library(dplyr)

  4. library(car)

  5. library(lmtest)

  6. library(ggplot2)


數(shù)據(jù)匯總與統(tǒng)計

  1. readcsv("abalone.csv")


balne$Sx <- s.acor(aalne$Sex)

kale(abaoe[1:10,],fomt 'madw')

分類變量

數(shù)值變量

看一下數(shù)據(jù)集的摘要,我們可以看到,數(shù)據(jù)在雄性、雌性和嬰兒這三個因素水平之間的分布是相當均勻的。

此外,我們還看到有四種不同的重量測量方法,即:全重、去殼重、內臟重和殼重。全重是其他重量預測指標與剝殼過程中損失的未知水/血質量的線性函數(shù)。我們還觀察到,預測器高度的最小值是0。

因變量

?因果變量Rings包含在數(shù)據(jù)集中。它被測量為切割和檢查鮑魚后觀察到的環(huán)的數(shù)量。雖然它不能直接表示一個給定的鮑魚的年齡,但它可以或多或少完美地確定它。一個鮑魚的年齡等于環(huán)數(shù)+1.5。由于這種關系是可靠的,環(huán)數(shù)將被視為因變量。數(shù)據(jù)中測量的環(huán)數(shù)從1到29不等,大多數(shù)鮑魚的環(huán)數(shù)在5到15之間。分布也有輕微的正偏斜,但沒有問題。(見下面的圖)

配對圖

pairs(aalone, es(colour =Sex, aph = 0.)

從配對圖中觀察到的情況。

首先要注意的是數(shù)據(jù)的高度相關性。例如,直徑和長度之間的相關性非常高(約98.7)。

同樣,Whole_weight似乎與其他重量預測因子高度相關,是Shucked_weight、Viscera_weight和Shell_weight之和。

其次,預測因子Sex的分布與所有其他預測因子的因子水平值雌性和雄性非常相似。

對于雌性和雄性的因子水平,分布的形狀也是非常相似的。

我們可以考慮重新定義這一特征,將性別定義為嬰兒與非嬰兒(其中非嬰兒=雌性和雄性都是)。

大多數(shù)的abalones環(huán)都在5到15之間。
?

數(shù)據(jù)質量

增加變量。我們將更新鮑魚數(shù)據(jù)集,創(chuàng)建名為 "嬰兒 "的新變量,它的值將基于性別變量的原始值。當性別變量為I時,它的值為I,否則為NI。
我們還觀察到,預測高度的最小值是0,實際上這是不可能的,我們將調查這些觀察結果,仔細研究。

  1. ##高度為0的數(shù)據(jù)質量檢查

  2. kable(abloe[aban$Height == 0,])

我們看到,有兩個觀測值的高度可能沒有被正確記錄,因為其他預測因子似乎都有有效的值。另外,如果我們看一下預測因子Whole_weight,我們會發(fā)現(xiàn)這些值與其他觀察值相比真的很小,而且低于第一個四分法。這告訴我們,這可能不是一個數(shù)據(jù)錯誤,因此我們不能將這些數(shù)據(jù)從我們的數(shù)據(jù)集中排除。

我們還將添加一個名為weight.diff的新變量。我們可以在摘要中看到有四種不同的重量測量方法,即Whole_weight、Shucked_weight、Viscera_weight和Shell.weight。Whole_weight是其他重量預測因子的線性函數(shù),在剝殼過程中損失的水/血的質量未知。
?


  1. str(aane, give.attr= FASE)

我們看到變量Whole_weight應該是Shucked_weight、Viscersa_weight和Shell_weight的線性函數(shù),我們可以寫成Whole_weight = Shucked_weight + Viscera_weight + Shell_weight + 剝殼過程中損失的未知水/血質量。

然而,當我們計算Whole_weight和其他重量變量之間的差異時,我們發(fā)現(xiàn)有153個觀測值違反了這一規(guī)定,也就是說,這似乎不符合邏輯,可能是記錄數(shù)據(jù)時的錯誤。

如果我們繪制新添加的weight.diff變量的直方圖,我們可以看到,當weight.diff為負數(shù)時,有一些觀察結果。
?


  1. #確定沒有正確記錄的觀察結果

  2. #不符合邏輯的觀察結果的柱狀圖

  3. ggplt(aalone, as(x=weight.diff)) +,ill=rb(1,.4,0,.7), bins = 30)


我們來看看其中的一些記錄。
?

nrow(ablon[abaoneweihtdff < 0,])

請注意,總共有153個觀測值的綜合權重超過了Whole_weight。當我們看了10個這樣的觀測值時,似乎其他的值都是正確的,沒有任何相似之處,所以我們確信這可能是一個數(shù)據(jù)輸入錯誤。因此,我們將保留這些觀察結果,以便進一步分析。

我們將首先在訓練和測試中潛入我們的數(shù)據(jù)集。數(shù)據(jù)集將以70/30的比例在訓練和測試之間進行分割,并隨機選擇觀測值。
?

訓練和測試拆分

  1. set.ee(4)

  2. #使用70/30方法在訓練和測試中分割數(shù)據(jù)

  3. ndxes <-spl(1:owabaone, size= 0.3 ?nrw(bone))

  4. aboetrai <- ablon[-indxs,]

  5. abetest <- abloneindxe,]

?我們已經(jīng)開始用所有的變量擬合一個加法模型,并將研究參數(shù)的重要性。在此基礎上,我們將修改我們的模型?,F(xiàn)在我們將使用變量Sex的原始值,它的因子水平為F、I和M。

加性多元線性回歸模型


  1. summary(abneadd)

在第一個加性模型中,注意因子水平雌性是性別變量的參考水平。

在用所有預測因子擬合加性模型后,我們可以看到,除了長度之外,測試統(tǒng)計顯示所有變量都是顯著的。正如我們之前從配對圖中看到的那樣,長度和直徑的預測因子是高度相關的。我們還看到,不同重量的預測因子也是顯著的,盡管它們應該是彼此的線性函數(shù)。
?

RMSE 分數(shù)

kable(rmse(aaloe_ad,"Aditve odel"))

?我們將計算方差膨脹因子,以發(fā)現(xiàn)數(shù)據(jù)集存在的多重共線性問題。

多重共線性

vif

?我們看了所有變量的變量膨脹系數(shù),似乎所有的預測因子都有多重共線性問題,除了我們之前在配對圖中看到的性別和身高。預測因子Whole_weight的VIF值最高,因為它是其他體重的線性函數(shù)。
Whole_weight & Rings 之間的偏相關系數(shù):我們將首先計算Whole_weight?變量和因變量(Rings)的偏相關系數(shù)?。


  1. #檢查高共線性關系變量的變異性

  2. wole_wigt_it <- lm(holweight ~Sx LnhDametr + eit +Sucked_ght + Visrwght Shl_wegh data=alotrin)

變量添加圖

同樣地,變量添加圖將這些殘差相互之間的關系可視化。將因變量的殘差與預測的殘差進行回歸,并將回歸線添加到圖中,也是有幫助的。
?

cor(resid(whole_weight),resid(addwtouwolwigh))

cre_plot(baead_itht_whe_eght,wleeghtfit)

沒有Whole_weight的加法模型的方差膨脹因子

但直徑和長度的VIF還是很高。
?

vif(abaln_ddithu_whoeeiht)

直徑和環(huán)之間的偏相關系數(shù)

我們現(xiàn)在將?在模型中Diameter?沒有Whole_weight變量的情況下計算變量和因變量(環(huán))?的偏相關系數(shù)?。

  1. mete_i <- lm(Diameter ~ Sex + Length + Height + Shucked_weight + Viscera_weight + Shell_weight)


  2. abaoned_sal <- lm(Rings ~ Sex + Length + Height + Shucked_weight + Viscera_weight + Shell_weight)

這兩個殘差的相關性接近于零,這意味著未被性別、長度、高度、去殼重量、內臟重量和貝殼重量解釋的環(huán)的變化與未被性別、長度、高度、去殼重量、內臟重量和貝殼重量解釋的直徑的變化的相關性很小。因此,在模型中加入直徑可能沒有什么好處。?

cor(resid(damer_it),resid(abonead_mll))

creaevarlt(ablone_d_smaldiaete_fi)

沒有 Whole_weight & Diameter 的加法模型的方差膨脹因子

vif(ablonadd_mll)

現(xiàn)在的VIF要低得多。我們將同時使用abalone_add和abalone_add_small進行分析。
?

abalone_add_small 的 RMSE 分數(shù)

kable(rmse(abalone_add_small

方差分析?F?檢驗

anova(small,ablone_add)

根據(jù)Anova檢驗,我們可以拒絕無效假設。

現(xiàn)在讓我們嘗試對加性模型進行AIC和BIC的參數(shù)選擇。


  1. #在加性模型上運行AIC和BIC

  2. step(abae_add, dtonbackward" trace0)



step(abalon_ad, direction="backward"

我們使用之前Anova F測試中的最佳模型(abalone_add)運行了AIC和BIC方法,AIC和BIC都選擇了沒有Length預測器的相同模型。

我們選擇了BIC的模型(因為兩個模型都是一樣的),并將繪制擬合與殘差和QQ正態(tài)圖。
?

加性模型假設

assumptions(aln_odad_bic,"baln_meddbic")

這里我們看到,擬合圖與殘差圖表明,模型違反了恒定變異,似乎有一種模式,即殘差隨著擬合值的增加而增加。

正態(tài)QQ圖也有肥尾,表明誤差可能不是正態(tài)分布。

表明我們可能需要尋找改進這個模型。盡管多重共線性對預測沒有影響,但這看起來是一個極端的案例,有一個明顯的模式違反了模型的假設。這可以通過幾種技術來實現(xiàn),例如變量選擇和轉換。讓我們來看看變量選擇方法,看看哪些變量可以用來創(chuàng)建另一個不違反恒定變異和正態(tài)性假設的模型。

窮舉搜索

  1. #窮舉搜索

  2. allabaone_add<- sumr(ruetsings ?Sex + Legth ?Diamter + Hight + Whole_eght + Shllweigh + Shucke_weght + Viscea_weigh , data=ablontra))


?


  1. for(i in c(1:8)){

  2. vr_nm[i]=sum(all_abwh[i,])-1

  3. }



  4. plot(var_num,all_a)

(besr <- which.max(adjr2))

alabaoe_ad$hch[bsj2,]


  1. #畫出模型參數(shù)與AIC的關系圖


  2. n * log(a_aln_dd$rs / n) + 2 * (2:p)



  1. plot(aloe_mo_ac ~ I(2:), ylab = "AIC"

  2. ")

現(xiàn)在我們看到了一些有趣的結果。之前我們看到t檢驗顯示一些預測因子是不顯著的,但是當我們進行窮舉搜索時,它表明我們確實需要所有的預測因子來創(chuàng)建AIC值最低的模型。從圖中可以看出,AIC值隨著8個參數(shù)的模型大小而下降,并且是最小的。我們將再次使用數(shù)據(jù)集中的所有預測因子來創(chuàng)建模型,并尋找變量轉換技術。

接下來,為了穩(wěn)定恒定的變化,我們將進行一些因變量和預測變量的轉換。

因變量轉換

Box-Cox 變換

穩(wěn)定方差的方法之一是使用對數(shù)轉換因變量。為了得到正確的順序,我們使用了boxcox方法,該方法建議使用$0的值。因為在0的值上,對數(shù)可能性最大,而且區(qū)間非常接近。因此,我們將使用log(Rings)形式的轉換,用于我們的加性模型。?

boxcox(abloe_ad lambda = seq(-0.1, 0.1, by = 0.1))

Additive 模型與對數(shù)因變量轉換

summary(abaone_dd_log)

將因變量進行對數(shù)轉換后,我們看到t檢驗是顯著的,它也增加了先前加法模型的調整r平方值。我們還看到,在這個模型中,幾乎所有的預測因子都是顯著的。讓我們檢查一下假設。
?

模型假設

下面的擬合與殘差圖和Q-Q圖顯示,對因變量進行對數(shù)轉換后,結果有了很大的改善。

assumptionsba

均方根分數(shù)

kable(log_rmse(abalo)


然而,我們沒有看到RMSE分數(shù)有任何改善。恒定方差問題似乎得到了改善,QQ圖也看起來不錯。

下一步,我們將對預測器進行一些轉換,并評估模型,看看這是否有助于進一步提高預測的準確性。
?

Predictor 轉換

回歸分析

為了使我們能夠進行任何預測器的轉換,首先讓我們看看每個預測變量和因變量的關系。轉換將取決于數(shù)據(jù)的形狀以及預測因子和因變量之間的關系。

scatter(abale_tra$Lngt,abaone_train$Rngs,"Lenth""Rngs"),

我們可以看到環(huán)和預測指標長度、直徑、高度的關系幾乎是線性的。我們還可以看到,重量預測指標之間的關系并不是真正的線性關系,而是可以從多項式轉換中受益。因此,讓我們使用高階多項式創(chuàng)建一個模型,即所有重量預測指標Whole_weight、Viscera_weight、Shucked_weight和Shell_weight。
?

多項式

在模型中使用二階項后,模型假設相同。


  1. asumptons(abloe_dd_oly2,"Poly2 Log Model")

均方根分數(shù)

kable(log_rmse(abaoly2,"Poly2 Log Moel)

均方根分數(shù)

?在這里,我們進行了一些變量轉換。首先,我們按照Boxcox方法的建議對因變量進行了對數(shù)轉換,并按照對數(shù)圖的建議對權重預測因子進行了多項式轉換。在擬合模型后,我們看到rmse比以前的模型要低,與以前擬合的加性模型相比,它也有更好的恒定變異和Q-Q圖。由于我們已經(jīng)進行了程度為2的多項式轉換,讓我們嘗試擬合程度為3的另一個模型并檢查其意義。

方差分析?F?檢驗

anova(abaloe_addpoy2,aalon_add_oy3)

均方根分數(shù)

kable(log_rmse(abaloe_dd_pol4

?

方差分析?F?檢驗

anova

均方根分數(shù)

kable(log_rmse(abloneaddpoly5

方差分析?F?檢驗

anova

  • 我們再次看到測試對于較低的 rmse 是顯著的。讓我們嘗試擬合度數(shù)為 6 的模型。

均方根分數(shù)

kable(log_rmseaban_dd_poly6

方差分析?F?檢驗

anova

現(xiàn)在在用多項式次數(shù)為 6 進行擬合后,我們看到即使 F 檢驗表明它很重要,但檢驗的 RMSE 上升了。這表明我們現(xiàn)在可能已經(jīng)開始過度擬合數(shù)據(jù),即我們的模型非常接近地擬合數(shù)據(jù),這是我們不希望發(fā)生的。

在此之前,我們看到多項式次數(shù)為 5 和 4 的測試和訓練 RMSE 之間存在非常細微的差異。測試 RMSE 幾乎相同。因此,我們愿意犧牲相對于更簡單模型的 RMSE 非常微小的改進(第三個小數(shù)點)。因此我們選擇多項式次數(shù)為 4 的模型,即模型 abalone_add_poly4。
?



  1. for(d in um_poly){

  2. abalone_add_polyestmodel(d)

  3. rmse=g_log_mse(balone_ad_poly)

  4. train_rmse[d]rmse$tran

  5. test_re[d]=rse$st

  6. }

  7. plot(train_rmse

我們看到多項式次數(shù)為 5 和 4 的測試和訓練 RMSE 之間存在非常細微的差異。測試 RMSE 幾乎相同。因此,我們愿意犧牲相對于更簡單模型的 RMSE 非常微小的改進。因此我們選擇多項式次數(shù)為 4 的模型,即模型 abalone_add_poly4。

既然我們已經(jīng)選擇了模型,讓運行 AIC 和 BIC 方法進一步選擇合適的模型,看看我們是否可以做進一步的改進。

現(xiàn)在讓我們計算和比較高階項的 RMSE,并繪制訓練和測試數(shù)據(jù)的均方根誤差。
?

多加法模型上的 AIC 和 BIC:

  • 既然我們已經(jīng)選擇了模型,讓我們運行?AIC?和?BIC?方法來進一步選擇合適的模型。

  1. step(abane_ad_poy4, directin="backwrd", trac=FALSE)


Compare AIC 與 BIC 模型參數(shù)

_aic$call[2]

add_bic$call[2]

Anove F 檢驗

anova(abalone_mode

  • 選擇的模型?BIC?中沒有預測器?Length?。Anova F 檢驗的 p 值很大,因此我們無法拒絕原假設。abalone_model_add_bic?模型很重要,因此我們將繼續(xù)推進并檢查模型假設。

模型假設(AIC 和 BIC):

  1. model_assumption


?

  • 在這種情況下,恒定方差和正態(tài)性看起來都不錯。

RMSE 分數(shù) - AIC

kable(log_rmse(abaone_mde_down')

RMSE 分數(shù) - BIC

kable(log_rmse(abalone_model_add_bic,paste("Additive Model - Degree 4 - BIC")), digits = 4,format = 'markdown')

在使用AIC 和 進行變量選擇后 BIC,我們從中選擇了模型 BIC 并檢查了 t 統(tǒng)計量和假設。有趣的是, BIC 模型丟棄了很少的預測變量,但也具有與我們開始使用的原始模型(多項式次數(shù)為 4 的模型)相似的測試 RMSE。這表明我們可以刪除一些變量并仍然保持較低的 RMSE。這將我們帶到下一個修改和引入BIC 上述模型選擇的變量之間的交互項 。

來自BIC 模型的模型假設 也看起來更好。

接下來,我們將介紹交互項,并將嘗試使用BIC 方法建議的預測變量來擬合模型 。
?

交互模型

  1. log(Rings) ~ ?Height + Diameter + poly(Whole_weight, 4) +

  2. poly(Viscera_weight, 4) + poly(Shucked_weight,4) + poly(Shell_weight, 4) + Sex + Diameter:poly(Shucked_weight, 4) + poly(Shucked_weight, ?4):Sex

RMSE 分數(shù)

方差分析?F?檢驗

anova

在擬合交互模型并使用最佳可加模型執(zhí)行 F 檢驗后,我們看到該檢驗表明交互模型是一個顯著模型,具有改進的調整 r 平方值。RMSE 也變低了 因為它更好地解釋了可變性,我們現(xiàn)在將選擇交互模型并嘗試在交互模型上運行 AIC 和 BIC。

同時,我們會比較交互模型的多個度數(shù),以計算和比較高階項的 RMSE,并繪制訓練和測試數(shù)據(jù)的均方根誤差。
?



  1. for(d in num_poly){

  2. ablone_int_poly=test_itmodel(d)


  3. rmse=et_lg_rmseaaloneint_poly)

  4. trainrse_int[d]=rmse$train

  5. test_mse_it[d]=rme$tst

  6. }

  7. plot(tran_rse_n

?

  • 我們可以看到,隨著多項式次數(shù)的增加,RMSE 越來越低。盡管對于此分析而言,RMSE 的這種改進非常微小,我們可以忽略這種對模型簡單性的改進??紤]到這一點,我們可以看到多項式次數(shù)為 4 的模型性能更好,因此我們將繼續(xù)使用該模型。

交互模型上的 AIC 和 BIC

  1. step(aalone_int, diretin="backar", trac=FALSE)

  2. step(aalone_nt, diection="bacward", =loce=ALE)

RMSE 分數(shù) - BIC/AIC

kable(log_rmse(abalone_model_int_bic,paste("Interaction Model - Degree 4 - BIC")), digits = 4,format = 'markdown')

在我們的交互模型上運行 AIC 和 BIC 后,我們看到該模型選擇了相同的模型。由于這是我們迄今為止看到的最好的模型之一,具有合理的復雜性,我們將把它視為我們比較的候選模型之一,作為本分析的最佳擬合模型。

談到候選模型,在詳盡的搜索過程中,我們已經(jīng)看到,當我們使用所有預測變量時,模型附帶了最低的 AIC。我們可以嘗試構建一個模型,其中包含所有具有交互作用和多項式次數(shù)的預測變量,并與我們選擇的第一個候選模型進行比較,看看它的表現(xiàn)如何。因此,讓我們擬合一個包含所有預測變量的模型。
?

在最初的數(shù)據(jù)分析中,我們發(fā)現(xiàn)Sex 因子水平為 female 和 的分類變量的分布 male 極其相似。因此,我們決定將這兩個因子水平合并為一個,并且總因子水平為 2 infant 和 non-infant。我們創(chuàng)建了新變量 Infant。這里 non-infant 代表 female 和 male 兩者。我們也通過這種方法進行了分析(可以在本報告的附錄部分找到)。

讓我們看看 Infant 模型分析,看看這個模型如何與我們上面選擇的模型相抗衡。
?

嬰兒模型分析

我們討論過針對此分析采用不同的方法。我們引入了一個新的分類預測變量名稱 Infant。我們使用現(xiàn)有的Sex 具有 3 個因子水平的分類預測變量,并創(chuàng)建了一個具有 2 個因子水平的新分類預測變量 。我們這樣做是因為我們從原始分類預測變量female 和 中 確定了 2 個因子水平上的相似分布 male。新的因素水平現(xiàn)在是 I (嬰兒 = 雌性和雄性組合)和 NI (非嬰兒)。

這個新分類的分析與上面的分析完全一樣,所以我們將用最少的解釋和細節(jié)快速進行這個分析。
?



  1. summary(abae_d_nf)

均方根分數(shù)

  1. rmse ?<- funcin(atual predicted) {

  2. sqrt(mean((actual - predicted ^ 2))

  3. }

加性模型假設

model_assumption

Box-Cox 變換

boxcox(abon_adinf,lmda ?seq(-0.1, 0.1, by = 0.1))

具有對數(shù)因變量轉換的附加嬰兒模型

summary(abaln_ad_log)

均方根分數(shù)

kable(log_mseabalone_d_lo_f,"")

加性模型假設

model_assumptions

多項式模型

lm(log(Rings) ~ ?Diameter + Length + Height + poly(Whol_weiht,3) + poly(Viscra_weight,3) + polyShuckwegt,3) + poly(Selweight,3) + Infant, data=abaone_rain

均方根分數(shù)

kable(log_rmse(abalnead_poly

多項式模型假設

model_assumption

方差分析 F 檢驗

anova

交互模型

  1. lm(log(Rings) ~ ?Height + Diaeter + poly(Whole_weight, 4) +

  2. poly(Viscera_weght, 4) + poly(Shucke_weght,4) + poly(Shel_weight, 4) + Infant + Diameter:poly(Shckedweight, 4) + poly(Shckd_weight, ?4):Infant, data=aboe_tain)

均方根分數(shù)

kable(log_rms(abaoe_int_infan,"

交互模型假設

model_assumption

方差分析 F 檢驗

anova

在這里,我們選擇性能最佳的交互模型作為我們的候選模型之一。該模型具有較低的復雜性以及最低的 rmse。

我們在這里看到的是,與前兩個完整模型相比,該模型在未見數(shù)據(jù)(測試數(shù)據(jù))上的 rmse 最低。除此之外,這個模型也沒有前兩個復雜,這些特性使得這個模型成為我們選擇的候選模型之一。

現(xiàn)在,由于我們有一些我們喜歡的候選模型,讓我們將它們相互比較并尋找最佳模型。
?

候選模型

從上面的分析中,我們選擇了多項式次數(shù)為 4 的交互模型,因為我們已經(jīng)看到它具有最低的測試 rmse 之一,并且具有良好的模型假設。我們將把它作為第一選擇的候選模型之一。該模型包含一些預測變量,而不是具有高度多重共線性的預測變量。這個模型是 abalone_model_int_bic。

另一個選定的模型是所有預測變量都具有相似較低 rmse 的交互模型。雖然這個模型將有更多的參數(shù),因此是一個比早期模型更復雜的模型,但由于我們的目標是預測,我們不關心模型的復雜性。這個型號是 abalone_int_full

另一種候選模型將是具有 2 個因子水平的分類變量的交互模型。在開始或我們的分析中,我們看到該預測變量的分布在級別之間相似 male , female 因此我們決定引入一個新變量,該變量基本上有 2 個級別,嬰兒和非嬰兒,其中非嬰兒 = 雄性和雌性。該模型也是多項式次數(shù)為4的交互模型 。這個模型是 abalone_int_infant。 注:(附錄部分增加了使用嬰兒預測器的加法模型和相關分析)。使用分類預測變量和具有3 值和 2 值的因子水平進行分析的整個過程 是相同的。

候選模型的 RMSE 比較

  • 候選模型1(abalone_model_int_bic)

kable(log_rmseabaone_modlint_bic

  • 候選模型2(abalone_int__candidate_full)

kable(log_rmse(aalone_int_l,pte

kable(log_rmse(abalone_nt_nan

  • 候選模型 3 (abalone_int_infant)

  • 從上面我們可以看到,?候選模型 3 (abalone_int_infant)?在所有三個模型中表現(xiàn)最好。

候選模型的模型假設

  • 候選模型1(abalone_model_int_bic)

候選模型的模型假設

  • 候選模型1(abalone_model_int_bic)

model_assumptions(abalone_model_int_bic,"Candidate model 1")

  • 候選模型 2 (abalone_int_full)

model_assumption

  • 候選模型 3 (abalone_int_infant)

model_assumption

  • 基于這些圖,我們可以看到我們所有的候選模型都很好地滿足了恒定方差和正態(tài)性假設。

  • 接下來,我們將比較所有這些候選模型的預測和置信區(qū)間,并觀察數(shù)據(jù)中的任何影響點。讓我們看看它。

異常觀察樣本:高杠桿、離群點和影響點

我們將查看每個候選模型的訓練數(shù)據(jù)集中存在的異常觀察結果。首先我們將分別尋找高杠桿點、離群點和影響點,然后通過公共數(shù)據(jù)點得到具有高杠桿、離群點和影響力的數(shù)據(jù)點。

候選模型1(abalone_model_int_bic)

## [1] 16

  • 我們看到有 16 個觀察值是高杠桿、異常值和影響點。


?

候選模型2(abalone_int_full)


  1. length(comon_mdel_2)

## [1] 15

  • 在這個模型中,我們看到有 15 個觀察值是高杠桿、異常值和有影響的點。


?

候選模型3(abalone_int_infant)


  1. length(comon_odl_3)

## [1] 19

  • 這個模型有 19 個這樣的觀察結果,它們是高杠桿、離群點和有影響力的點。


?

所有候選模型之間的異常觀察

  • 我們現(xiàn)在已經(jīng)編制了候選模型中常見的觀察結果列表。讓我們來看看這些,看看是否有任何相似之處。

  1. intersect(commodl,intersect(commodel1,omomodl_2))

  2. length(cmmondaa)

## [1] 13

我們立即注意到的第一件事是,我們最初在數(shù)據(jù)集中確定為不合邏輯或數(shù)據(jù)輸入錯誤的觀察結果很少。這些觀察結果具有負權重差異,這是不可能的。這是有道理的,因為在記錄此數(shù)據(jù)時可能會出現(xiàn)一些錯誤。

另一種模式是其中一些觀察結果的整體權重與平均整體權重相比超過 2。此外,這些觀察結果具有大量環(huán),即這些是較老的鮑魚。

由于存在其他符合異常觀察條件的觀察結果,因此總體而言,它們之間沒有特定的模式。因此,我們不能從我們正在考慮進行預測的模型和分析中排除這些。

我們將使用平行坐標圖來可視化結果部分中的任何明顯模式。

讓我們看看一旦我們刪除這些數(shù)據(jù)集,我們的候選模型的表現(xiàn)如何。
?

刪除異常觀察后的RMSE 分數(shù)

接下來,我們將通過從訓練數(shù)據(jù)集中刪除異常觀察并計算測試數(shù)據(jù)集的 RMSE 分數(shù)來執(zhí)行快速實驗。


  1. obs_rmse <- get_log_rmse_obs(lmlog(_updated)



  2. result <- ata.frae( "Mdel" = modelnames,

  3. "RMSE Train" = c(


  4. ),

  5. ? ? ? ? ? "RMSE Test" = c(


  6. ? ? ? ? ? "RMSE Train all Data" = c(


  7. ? ? ? ? ? "RMSE Test all data" = c(

  8. ? ? ? ? ? get_lo_ms(aaloe_modl_intbic)$test,

  • 有趣的是,所有在沒有異常觀察的情況下訓練的模型在測試數(shù)據(jù)上產生了更好的 rmse。在上表中我們可以看到不同RMSE值的比較。

  • 由于這些不尋常的觀察沒有揭示任何特定的模式或任何不尋常的行為,我們無法從我們的數(shù)據(jù)集中刪除這些,并將使用候選模型繼續(xù)我們的分析。

預測和置信區(qū)間

  1. #model 1

  2. vif(abalone_mdl_ntbic)

  3. #model 2


  4. #model 3

讓我們從置信區(qū)間開始。我們所有候選模型的置信區(qū)間都在相似的范圍內。即平均而言,在任何一點,所有模型的區(qū)間范圍似乎都相同。請注意,3 個候選模型中有 2 個使用了所有預測變量,因此具有非常高的共線性。由于我們的模型很好地擬合了數(shù)據(jù),因此平均減少了任何點的方差范圍。這很好。

此外,與置信區(qū)間類似,模型之間的預測區(qū)間也在相同的范圍內。模型擬合再次對這個較窄的區(qū)間范圍產生影響。請注意,預測區(qū)間比我們預期的置信區(qū)間寬得多。由于所有模型的預測區(qū)間即使在高度共線性之后也處于相似的范圍內,我們會說這些是好的。我們使用默認的 95% 公式來計算所有候選模型的置信區(qū)間和預測區(qū)間。

基于我們對所有這些候選模型的分析,我們認為候選模型 3 ?abalone_int_infant 將是預測鮑魚年齡的最佳選擇。與其他兩個候選模型相比,該模型更小,復雜度更低,但 rmse 最低。此外,模型之間的預測和置信區(qū)間非常相似。由于這些原因,我們將選擇模型 abalone_int_infant 作為我們分析的最佳模型。
?

預測鮑魚的年齡

  • 現(xiàn)在讓我們使用我們選擇的模型預測鮑魚的年齡。我們將從測試數(shù)據(jù)中隨機選擇 5 個觀察值并嘗試預測年齡。請注意,該模型實際上預測了鮑魚中的環(huán)數(shù)。我們需要在環(huán)數(shù)中加上 1.5 才能確定鮑魚的真實年齡。所以本質上,我們將比較模型預測的環(huán)數(shù)與測試數(shù)據(jù)集中的實際環(huán)數(shù)。

  1. #從測試數(shù)據(jù)中隨機抽取5個觀察值


  2. sample <- sample_n(test_data, 5)


  3. exp(predict( ta=sample )


我們可以從上面的例子中看到,我們從測試和模型中計算了環(huán)數(shù)和年齡,用于少數(shù)觀察。我們看到我們的模型正確預測了鮑魚的年齡,或者非常接近鮑魚的實際年齡。這些是模型以前從未見過的測試數(shù)據(jù)中的 5 個樣本觀察值。我們可以多取一些并執(zhí)行相同的過程,看看我們的模型對鮑魚年齡的預測效果如何。

在這份分析報告中,我們應用了各種多元回歸技術和方法,但這并不意味著這個問題不能使用其他更先進的技術來解決。我們嘗試應用一些超出本報告范圍的先進方法,只是為了評估這些技術是否可以進一步改進我們的預測。
?

使用先進技術

  • 在本節(jié)中,我們超越了傳統(tǒng)的常見回歸技術,并嘗試應用一些先進的技術,看看我們是否可以創(chuàng)建一個具有較低測試 RMSE 的模型。


?

Elastic Net 彈性網(wǎng)絡是一種正則化回歸方法,它線性組合了 lasso 和 ridge 方法的 L1 和 L2 懲罰。

  • 我們將嘗試使用彈性網(wǎng)絡來進一步優(yōu)化我們的預測。

  • 與 lasso 和 ridge 一樣,截距不會受到懲罰,并且 glment 在內部負責標準化。

  • 我們將使用與候選模型 3 (abalone_int_infant) 中相同的預測變量。

  1. train(

  2. Rings ~ke_ight, 4) + pol(Shell_weigh, 4) + Infant + Diameter:poly(Shucked_weight, 4) ?poly(Shuckedwight, 4:Infant,daa=abalone_trai

  3. method = "glmnet",

  4. trControl = cv_10,


  1. kable(result, digit

  • 我們看到訓練和測試 rmse 結果都低于我們的候選模型。


?

隨機森林回歸

隨機森林或隨機決策森林是一種用于分類、回歸和任務的集成學習方法,它通過在訓練時構建大量決策樹并輸出類別(在分類的情況下)或平均預測來進行操作(在回歸的情況下)單個樹。隨機決策森林糾正了 Doe 決策樹過度擬合訓練數(shù)據(jù)集的習慣。

我們在這里實現(xiàn)了隨機森林回歸模型進行預測,看看我們是否可以進一步改進。 隨機森林回歸模型的 RMSE 結果比候選模型的 RMSE Score 更好。
?

bm(Rig ~, daa ?aloeran stbton = "gausian", ntre =, inrtindeth ?3, shrinkage = 0.01)

以下是隨機森林方法的一些優(yōu)缺點

它不對數(shù)據(jù)分布做出任何假設。

自動擬合高度非線性的交互。

通過接近度很好地處理缺失值。

即使對于大型數(shù)據(jù)集也能快速擬合。

已經(jīng)觀察到隨機森林對某些具有嘈雜分類/回歸任務的數(shù)據(jù)集過度擬合。

如果樹不小就不容易解釋

結果

本報告系統(tǒng)地處理了預測鮑魚年齡的任務。探索了第一個數(shù)據(jù)集,發(fā)現(xiàn)了不尋常的觀察結果,并對變量進行了適當?shù)臉藴驶?/p>

我們從一個加法模型開始,該模型包含所有名為abalone_add的預測變量 。我們繼續(xù)檢查各種假設和測試,以進一步提高模型的準確性并降低 rmse。

然后,我們對因變量和預測變量進行了多次轉換。當我們執(zhí)行各種變量選擇程序時,我們看到了 rmse 的改進。

經(jīng)過我們的分析,我們找到了幾個不錯的候選模型,我們選擇了模型 abalone_int_infant 作為我們的最佳模型。

以下是一些重要的關鍵點,說明了我們對這一結論的選擇。

應用上述技術后,我們得出了 3 個可能的候選模型。

候選模型 1 是 abalone_model_int_bic ?,這是對交互模型的各種選擇過程的結果。我們看到這個模型 AIC 得分最低,rmse 排名第二。模型包含一些高共線預測變量,但當檢查 rmse、預測和置信區(qū)間時,這是一個合適的選擇。

候選模型 2 是 abalone_int_full?;叵胍幌拢敱M的搜索過程表明,當我們所有的預測變量,我們得到最好的模型。所以我們決定添加模型中交互項和多項式次數(shù)為 4 的所有預測變量。該模型具有最高的多重共線性,但從 rmse 和預測以及置信區(qū)間來看是非常合理的。

候選模型 3 是 abalone_int_infant。正如我們最初的數(shù)據(jù)分析表明分類變量 Sex 有 3 個因子水平。 female, male 和 infant。水平 female 和 male 我們在分布方面極其相似,因此我們將這兩個水平合二為一,使預測變量的總水平為 Sex 兩個。由于這種級別的降低,與前兩個模型相比,該模型可能是最簡單的模型。我們對此進行了徹底的分析,最終模型具有相似的 rmse、預測和置信區(qū)間。這就是我們選擇該模型作為候選模型之一的原因。

在以上 3 個候選模型中,候選模型 3 ?abalone_int_infant 稍微好一點,同時也不太復雜,因此它是我們進行此分析的首選模型。這有很多原因。讓我們討論一下。

以下是為此分析選擇的模型的公式

  1. lm(log(Rings) ~ ?Height + Diameter + poly(Whole_weight, 4) +

  2. poly(Viscera_weight, 4) + poly(Shucked_weight,4) + poly(Shell_weight, 4) + Infant + Diameter:poly(Shucked_weight, 4) + poly(Shucked_weight, ?4):Infant

  • 這是所有 3 個候選模型的測試/訓練 RMSE 的快速比較。

  • 下圖顯示了整個分析報告中所選模型的 rmse(以紅色標記)、候選模型和模型的其余部分以及它們的測試 rmse 比較。我們可以清楚地看到,我們選擇的模型?abalone_int_infant?也在int infant?下面的圖中重命名?,其測試 rmse 最低。


?

  • 這里一個明確的模式是,當模型更小、更簡單時,測試 rmse 很高,但隨著我們改進模型并開始變得更加靈活(因此模型長度更大),測試 rmse 下降。

  • 以下是所選模型的正態(tài)性假設。我們可以清楚地看到,當我們用對數(shù)變換和交互項擬合模型時,常數(shù)變化和正態(tài)性假設變得越來越好。

這里要注意的一個關鍵點是,多重共線性的存在并沒有真正影響預測(這是我們分析的目標),我們能夠將其影響降低到一定程度。我們通過擬合與殘差圖驗證了這一點,可以看出我們選擇的模型具有以殘差為中心的殘差, 0 并且大致是恒定的變化。

如果我們使用平行坐標圖繪制異常觀測值,我們可以看到 Height 這些觀測值與鮑魚的平均高度相比更短。Whole_weight 和 Viscera_weight which as lower也是如此 。此外 weight.diff ,其中一些觀察結果是否定的,這是我們在初始數(shù)據(jù)分析期間發(fā)現(xiàn)的。

下面的平行坐標圖描繪了這些異常觀察的特征,其中嬰兒 = 1(橙色線)和非嬰兒 [男/女] = 2(藍線)。

?現(xiàn)在,如果我們只是從我們的訓練數(shù)據(jù)中抽取一個樣本并使用平行坐標繪圖,我們可以看到一般情況下?Height,?Whole_weight?并且?Viscera_weight?均勻分布。

  • 我們還看到從數(shù)據(jù)集中刪除異常觀察進一步降低了測試 rmse,但是我們沒有從我們的數(shù)據(jù)集中刪除那些,因為它們似乎是有效的假設而不是極端情況。

  • 我們可以看到的均方根誤差得分?Elastic Net?和?Random Forest?比我們的候選模型較低,但差別不是很顯著。

?

討論

讓我們從我們正在分析的數(shù)據(jù)集開始討論。從最初的匯總統(tǒng)計數(shù)據(jù)中,我們看到數(shù)據(jù)中存在非常高的共線性。幾乎所有的變量都有很高的 vif 值。

我們所做的另一個重要觀察是數(shù)據(jù)質量。我們發(fā)現(xiàn)在某些情況下沒有正確記錄觀察結果。例如,對于 2 個觀察,高度為 0,這實際上是不可能的。但是當我們查看整個觀察結果和其他變量時,我們沒有發(fā)現(xiàn)任何異常模式。我們意識到這可能是數(shù)據(jù)輸入錯誤,因此我們決定將它們保留在我們的數(shù)據(jù)集中進行分析。以下是這 2 個觀察結果。
?

我們還看到,有些觀察結果不符合邏輯。預測器 Whole_weight 被認為是預測的線性函數(shù) Shucked_weight, ?Viscera_weight, Shell_weight 并在去殼過程中損失的血液/水的加成未知質量。換句話說,所有其他權重預測變量的總和應該等于或小于 Whole_weight。但是我們發(fā)現(xiàn) 153 這樣的觀察違反了這個假設。仔細觀察后,我們發(fā)現(xiàn)觀察結果之間沒有相似之處或任何模式,因此我們得出結論,這可能只是數(shù)據(jù)記錄錯誤,因此這些觀察結果并未從數(shù)據(jù)集中刪除。以下是這些 153 觀察結果。

我們在探索性分析中發(fā)現(xiàn)的下一個有趣趨勢是預測Sex 因子水平的分布 。因子水平female 和 male 所有其他預測因子 都非常相似。此外,整體數(shù)據(jù)也大致均勻地分布在female、 male 和 的 水平值之間 infant。以下是水平之間的分布及其相對于其他預測變量和因變量的總體分布。

  • 在上面的箱線圖中,我們可以看到female?和?的分布形狀?male?對于所有預測變量都非常相似。

  • 現(xiàn)在讓我們來看看它的頻率。

同樣,它非常相似。這些結果為我們指明了另一個方向,通過將female 和 組合male 成一個級別名稱作為 ,我們在數(shù)據(jù)集中創(chuàng)建了一個新變量 non-infant。所以現(xiàn)在新的分類變量有兩個級別 infant 和 non-infant。在我們的一個候選模型中,我們使用這個新的分類而不是原始的來查看其效果。最后,這是我們選擇的模型。

初始數(shù)據(jù)分析期間的下一個重要發(fā)現(xiàn)是預測變量之間存在非常高的多重共線性。這是有道理的,因為我們之前發(fā)現(xiàn) Whole_weight 預測在某種程度上依賴于其他重量預測。 Length 鮑魚的 Diameter. 以下是 來自加法模型的模型系數(shù)的 變異膨脹因子值。
?

  1. ## ? ? ? ? ? SexI ? ? ? ? ? SexM ? ? ? ? Length ? ? ? Diameter ? ? ? ? Height

  2. ## ? ? ? 1.982824 ? ? ? 1.400405 ? ? ?42.874862 ? ? ?44.907429 ? ? ? 3.114493

  3. ## ? Whole_weight Shucked_weight Viscera_weight ? Shell_weight

  4. ## ? ? 118.819537 ? ? ?29.579686 ? ? ?18.591058 ? ? ?22.182789

初始模型違反了恒定變異和正態(tài)性假設。使用各種方差穩(wěn)定技術和轉換,我們能夠提出一個很好的模型。這些選定的候選模型使用了交互項、預測變量的多項式變換和因變量的對數(shù)變換。

有趣的是,即使存在高度多重共線性,在模型選擇過程中,我們最終還是選擇了具有所有 8 個參數(shù)的模型。即所有的選擇程序都表明當使用模型中的所有預測變量時,最低的 AIC 出現(xiàn)。盡管在我們使用各種因變量和預測變量轉換進行模型選擇之后,我們能夠在保持相似的測試 rmse 的同時稍微減小模型的大小。

我們看到我們幾乎沒有對降低測試 rmse 有輕微影響的異常觀察,但由于這些觀察不代表顯著變化或移動模型系數(shù),我們沒有將它們從數(shù)據(jù)集中刪除。

在數(shù)據(jù)的背景下談論這個分析,我們可以從模型中看到, Length 變量可能不會成為預測鮑魚年齡的重要因素。我們可以看到我們沒有在我們的模型中選擇這個。這種情況是有意義的,因為 Length 或多或少地相關 Diameter (即長度越大直徑越大),并且由于我們已經(jīng)將直徑帶入我們的模型,所以我們不需要鮑魚數(shù)據(jù)集中的長度。

預測時另一個非常有趣的事實是,不能單獨使用整個體重來預測年齡。我們知道,鮑魚的去殼過程會使鮑魚的血液和水分變干,然后再稱重,不同階段(去皮、去殼、干燥)的重量組合也是決定鮑魚年齡的重要因素。

我們從測試數(shù)據(jù)中抽取了 10 個樣本觀察值,并使用我們選擇的模型 (abalone_int_infant) 預測了年齡,平均而言,它正確預測了 10 次中的?3 次。從所選模型 (2.2021) 的測試 rmse 值考慮出因變量環(huán)的范圍(1 到 29),我們認為我們的模型非常適合預測鮑魚的年齡。

最受歡迎的見解

1.R語言多元Logistic邏輯回歸 應用案例

2.面板平滑轉移回歸(PSTR)分析案例實現(xiàn)

3.matlab中的偏最小二乘回歸(PLSR)和主成分回歸(PCR)

4.R語言泊松Poisson回歸模型分析案例

5.R語言混合效應邏輯回歸Logistic模型分析肺癌

6.r語言中對LASSO回歸,Ridge嶺回歸和Elastic Net模型實現(xiàn)

7.R語言邏輯回歸、Naive Bayes貝葉斯、決策樹、隨機森林算法預測心臟病

8.python用線性回歸預測股票價格

9.R語言用邏輯回歸、決策樹和隨機森林對信貸數(shù)據(jù)集進行分類預測


拓端tecdat:R語言用加性多元線性回歸、隨機森林、彈性網(wǎng)絡模型預測鮑魚年齡和可視化的評論 (共 條)

分享到微博請遵守國家法律
稷山县| 浙江省| 济阳县| 屏南县| 东山县| 赤城县| 防城港市| 康保县| 新丰县| 科技| 顺义区| 成安县| 九寨沟县| 济南市| 林周县| 铅山县| 呼和浩特市| 永嘉县| 罗定市| 灯塔市| 呈贡县| 鄂温| 达拉特旗| 两当县| 大足县| 东乡县| 宜良县| 沈阳市| 泉州市| 泰宁县| 旬邑县| 会宁县| 新邵县| 余庆县| 泽库县| 河北省| 灌阳县| 和顺县| 松原市| 定西市| 子洲县|