なぜ2つのコードが異なる結果を返すのか混乱しています。 ループの唯一の違いは、Wage $ age.cut1対age.cut1の使用です。違いの意義は何ですか?2つの単純なループの出力の違いが混乱する
DATA:ISLRパッケージ、賃金データ
cv.err <- rep(NA, 10)
for (i in 2:10){
Wage$age.cut1 = cut(Wage$age, i)
fit = glm(wage~age.cut1, data = Wage)
cv.err[i] = cv.glm(Wage, fit, K = 10)$delta[2]
}
> cv.err
[1] NA 1733.646 1681.587 1636.521 1632.931 1623.112 1611.965 1600.903 1609.973
[10] 1607.234 # these are the expected results
cv.err <- rep(NA, 10)
for (i in 2:10){
age.cut1 = cut(Wage$age, i)
fit = glm(wage~age.cut1, data = Wage)
cv.err[i] = cv.glm(Wage, fit, K = 10)$delta[2]
}
> cv.err
[1] NA 1603.255 1608.617 1602.296 1606.265 1606.139 1602.448 1606.063 1605.100
[10] 1606.986
_same_コードを2回実行すると、まったく同じ結果が得られないと思います。クロス検証では、ランダムに選択した点を使用してモデルを構築し、モデルをテストするために使用しません。 2回実行すると、ランダムな選択と結果が異なります。 – G5W
すべての 'cv.err'の前に' set.seed(1) 'を設定し、同じ結果が得られるかどうか確認してください。 –
両方のループでランダムシードを1に設定すると、異なる結果が得られます。結果は私の最初の実行と一致しています。私が知る限り、両方のループは同じですが、そうではありませんか? – Redeyes10