交叉檢驗的實現

2021-07-25 15:29:44 字數 906 閱讀 5514

在k重交叉驗證中,樣本被分為k個子樣本,輪流將k–1個子樣本組合作為訓練集,另外1個子樣本作為保留集。這樣會獲得k個**方程,記錄k個保留樣本的**表現結果,然後求其平均值。(當n是觀測總數目,且k為n時,該方法又稱作刀切法,jackknifing。)

目前實現了交叉檢驗的兩種實現方法:

1.boot包裡的cv.glm()函式

主要用來做廣義線性模型的交叉驗證,一般與glm()函式一起使用。

glm()函式中的引數family = 「binomial」用來執行邏輯斯蒂回歸,但如果用glm()函式擬合模型時沒有設定family引數,那麼它就跟lm()函式一樣執行的是線性回歸。

library(boot)

cv.err

<- cv.glm(total_train, total.glm, k = 5)

cv.err$delta

# 返回的向量是交叉驗證的結果,包含兩個值,分別為原始的交叉驗證和調整的交叉驗證值。(《統計學習導論》講過)

bootstrap包裡的crossval()函式

通用的交叉驗證法。

library(bootstrap)

x <- total_train2[,-2]

y <- total_train2[,2]

theta.fit

<- function(x,y)

theta.predict

<- function(fit, x)

results <- crossval(x,y,theta.fit,theta.predict,ngroup=5)

result返回的是每個觀測值的交叉驗證的**值results$cv.fit,再帶入均方誤差公式,求出交叉驗證的**誤差。

詳見: 《r實戰2》

交叉表卡方檢驗與因果性檢驗

最小預計計數 20 此時用皮爾遜卡方就行,對應p值小於顯著水平0.05拒絕原假設,住房條件與婆媳關係有相關性 p 值 0.05 由於這是定類與定類變數之間 如果是定類與定序,把定序轉為定類都放到名義中分析 的分析,關於因果性關係強度的lambda l 就派上用場了 lambda是基於pre上的相關測...

交叉表的實現,

表如下 a b 10 5 5 4 8 怎麼用sql語句變成 15 5 12 declare sql varchar 8000 set sql select sql sql rtrim a sum case a when rtrim a then b else 0 end from table1 gr...

Python實現 MK檢驗

mk檢驗 時間序列進行檢測,並找出突變點,本文參考網上的matlab程式改寫為python 如下 import numpy as np import pandas as pd import matplotlib.pyplot as plt 讀取時間序列資料 data pd.read csv 定義時間...