拓端tecdat|R語言回歸和主成分PCA 回歸交叉驗證分析預測城市犯罪率
原文鏈接:http://tecdat.cn/?p=24671
原文出處:拓端數(shù)據(jù)部落公眾號
在本文中,我解釋了基本回歸,并介紹了主成分分析 (PCA) 使用回歸來預測城市中觀察到的犯罪率。我還應用 PCA 創(chuàng)建了一個回歸模型,用于使用前幾個主成分對相同的犯罪數(shù)據(jù)進行建模。最后,我對兩種模型的結果進行了比較,看看哪個表現(xiàn)更好。
回歸有助于顯示因素和因變量之間的關系,它基本上回答了兩種類型的問題;1. 吸煙對癌癥的影響 2. 未來會發(fā)生什么?(例如)三年后的油價。
數(shù)據(jù)
犯罪學家對懲罰制度對犯罪率的影響感興趣。已使用匯總數(shù)據(jù)對此進行了研究。數(shù)據(jù)集包含以下列:
變量描述
M:? 14-24歲的男性在總人口中的百分比
So:? 南方州的指標變量
Ed:? 25歲或以上人口的平均受教育年限
Po1: 年警察保護的人均支出
Po2: 去年警察保護的人均支出
LF: 14-24歲年齡組的城市男性平民的勞動力參與率
M.F: 每100名女性的男性人數(shù)
Pop: 國家人口,以十萬計
NW: 非白人在人口中的百分比
U1: 14-24歲城市男性的失業(yè)率
U2: 城市男性35-39歲的失業(yè)率
財富財富:可轉讓資產(chǎn)或家庭收入的中值
收入不平等:收入低于中位數(shù)一半的家庭的百分比
入獄概率:入獄人數(shù)與犯罪人數(shù)的比率
時間: 罪犯在首次獲釋前在國家監(jiān)獄中服刑的平均時間(月)。
犯罪: 犯罪率:每10萬人口中的犯罪數(shù)量
我們將數(shù)據(jù)集導入R環(huán)境
read("crim.txt")
檢查變量是否正確
head(crim) #所有的變量都是預測因素,只有犯罪是因變量。
我們正在嘗試使用整個數(shù)據(jù)集來構建回歸模型來進行預測。創(chuàng)建簡單的回歸模型
summary(model)
使用數(shù)據(jù)框架來手動創(chuàng)建我們的數(shù)據(jù)點測試,然后在測試數(shù)據(jù)上運行一些預測。
primodl <- predict(mdl, test)
primodl
輸出值不到下一個最低城市的犯罪率的一半,所以我將創(chuàng)建第二個模型,觀察它的輸出并畫出比較。
創(chuàng)建第二個模型
sumry(son_mel)
我們現(xiàn)在可以對第二個模型進行預測了
pic_secn_mel<- prict(sed_odel, tst)
pic_secn_mel
與第一個模型相比,其結果明顯更高。所以,它更合理。
交叉驗證
我們可以做一個5折的交叉驗證。
cv(se,m=5)
我們可以得到數(shù)據(jù)和其平均值之間的平方差的總和
sum((Cm- mean(ui))^2)
我們可以得到模型1、模型2和交叉驗證的平方殘差之和
SSrl <- sum(res^2)
SSre <- sum(resi^2)
res <- "ms")*nrow
我們也可以計算出3個模型的R平方值
?1 -res/tot
1-res/SS
?1-res/SS
獲得的R平方值表明我們的擬合質量很好。對于懲罰性回歸,有必要對數(shù)據(jù)進行標準化,以確保所有的特征都受到同等的懲罰。但在線性回歸的情況下,這其實并不重要。它將只是轉移截距和系數(shù),但相關關系保持不變。
PCA
PCA是一種用于描述變化的方法,顯示數(shù)據(jù)集中的強相關性,從而使其易于探索和可視化數(shù)據(jù)。PCA通過以下方式對數(shù)據(jù)進行轉換:(1)去除數(shù)據(jù)中的相關關系(2)按重要性對坐標進行排序。
我們可以檢查crime數(shù)據(jù)的預測變量之間的相關性。
pairs(srm,c("o",Ed"o"))
對數(shù)據(jù)集中的所有預測變量應用PCA。請注意,為了獲得更準確的PCA結果,需要對這些變量進行標準化。
sumr(pca)
rotan #PCA旋轉是特征向量的矩陣
pca
然后,我們可以通過繪制每個主成分的方差來決定在 "前幾個 "主成分中使用多少個主成分。
plotpcaye ="ie")
要確定使用多少PC?我們可以嘗試使用5個主成分作為開始。
pcax[,1:5]
使用前五個PC,我們可以繼續(xù)建立一個線性回歸模型。
?summary(mdPCA)
為了根據(jù)原始變量重建模型,首先我們從PCA線性回歸模型中獲得系數(shù),之后通過使用主成分的特征向量將PCA成分系數(shù)轉化為原始變量的系數(shù)。
PCA線性回歸的系數(shù)
coefficients[1]
coefficients[2:6]
?beta0 #截距
轉換
rot %*% beta
?t(alpha) # 標準化的數(shù)據(jù)系數(shù)
獲得未標準化數(shù)據(jù)的系數(shù)。
?ahusl <- ahs / sppy(u[,1:15],sd)
?ba0cl <- ea0 - sum/sapply(sd))
未標準化數(shù)據(jù)的系數(shù)
?t(alas_sled)
?be0uced
#我們可以得到我們的未標準化數(shù)據(jù)的估計值
as.marx %*% unscle + beta0aled
最后,為了比較使用PCA的模型和使用回歸的模型的質量,我們必須計算R-squared和調整后的R-squared,并將這些數(shù)值與前一個模型的數(shù)值進行比較。調整后的R平方考慮了模型中預測因子的數(shù)量。
?Rsquared <- 1 - SSE/SST # R-squared
使用所有變量的無PCA的先前線性回歸模型
?summary(dlLR)
R-squared 和調整后的 R-squared 值都較高,這表明至少對于使用前五個主成分的模型,具有 PCA 的線性回歸模型優(yōu)于沒有 PCA 的線性回歸模型。為了檢查使用不同數(shù)量的前 n 個主成分的線性回歸模型是否產(chǎn)生了更好的擬合模型,我們可以使用循環(huán)并進一步進行交叉驗證。
最受歡迎的見解
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ù)集進行分類預測