Bagaimana skala pengamatan baru untuk membuat prediksi ketika model itu dilengkapi dengan data berskala?

13

Saya memahami konsep penskalaan matriks data untuk digunakan dalam model regresi linier. Misalnya, dalam R Anda dapat menggunakan:

scaled.data <- scale(data, scale=TRUE)

Satu-satunya pertanyaan saya adalah, untuk pengamatan baru yang ingin saya prediksi nilai outputnya, bagaimana mereka diskalakan dengan benar? Apakah itu , scaled.new <- (new - mean(data)) / std(data)?

SamuelNLP
sumber
1
Untuk mendapatkan nilai kembali lakukan saja y = y_esc * sd(y) + mean(y), tapi itu akan mengacaukan properti model saya kira, jadi saya juga menunggu jawaban yang lebih teknis juga!
Fernando
Saya tidak ingin nilai kembali, saya ingin tahu bagaimana contoh baru dapat diskalakan dengan cara yang sama. Saya telah mengedit pertanyaan saya berdasarkan komentar Anda.
SamuelNLP

Jawaban:

13

Jawaban singkat untuk pertanyaan Anda adalah, ya - ekspresi untuk scaled.new benar (kecuali Anda ingin sdbukan std).

Mungkin perlu dicatat bahwa skala memiliki argumen opsional yang dapat Anda gunakan:

scaled.new <- scale(new, center = mean(data), scale = sd(data))

Juga, objek yang dikembalikan oleh skala (scaled.data) memiliki atribut yang memegang pemusatan angka dan skala yang digunakan (jika ada), yang bisa Anda gunakan:

scaled.new <- scale(new, attr(scaled.data, "scaled:center"), attr(scaled.data, "scaled:scale"))

Keuntungan yang muncul ketika data asli memiliki lebih dari satu kolom, sehingga ada beberapa cara dan / atau standar deviasi untuk dipertimbangkan.

pengguna20637
sumber
Saya berharap ada cara yang sedikit lebih sederhana untuk melakukan ini, sepertiscaled.new <- scale(new, use.attrs = scaled.data)
kata
@ wordsforthewise Tidak akan sulit untuk menulis pembungkus untuk scale.default untuk mencapai itu. Saya ragu bahwa R-core akan memberikan prioritas tinggi.
user20637
Ya. Jika saya dapat mengetahui bagaimana berkontribusi pada R-core dan menemukan waktu untuk melakukannya, saya mungkin akan melakukannya.
kata