Katakanlah saya memiliki data berikut dan saya menjalankan model regresi:
df=data.frame(income=c(5,3,47,8,6,5),
won=c(0,0,1,1,1,0),
age=c(18,18,23,50,19,39),
home=c(0,0,1,0,0,1))
Di satu sisi, saya menjalankan model linier untuk memprediksi pendapatan:
md1 = lm(income ~ age + home + home, data=df)
Kedua, saya menjalankan model logit untuk memprediksi variabel yang dimenangkan:
md2 = glm(factor(won) ~ age + home, data=df, family=binomial(link="logit"))
Untuk kedua model, saya bertanya-tanya bagaimana saya bisa menghasilkan tabel atau bingkai data dengan kategori respons prediktor, nilai pas, dan nilai prediksi model.
Jadi untuk model linier, sesuatu seperti:
age fitted_income predicted_income
18 3 5
23 3 3
50 4 2
19 5 5
39 6 4
home fitted_income predicted_income
0 5 6
1 3 9
Atau mungkin harus untuk setiap titik data. Jadi untuk titik data x_i, nilai yang dipasang dan diprediksi adalah:
id age fitted_income predicted_income
1 18 3 5
2 23 3 3
3 50 4 2
4 19 5 5
5 39 6 4
Dari sudut pandang statistik, apakah usaha semacam itu berguna? Mengapa atau mengapa tidak?
Bagaimana ini bisa dilakukan dalam R? (melihat nama-nama (md1) dan menemukan apa yang dapat saya tarik dari model, tetapi belum melanjutkannya)
Terima kasih!
residuals
perintah diR
. Gunakancbind
untuk bergabung dengan mereka ke kerangka data asli.Jawaban:
Anda harus sedikit berhati-hati dengan objek model di R. Misalnya, sementara nilai yang dipasang dan prediksi data pelatihan harus sama dalam
glm()
kasus model, mereka tidak sama ketika Anda menggunakan fungsi ekstraktor yang benar:Itu karena default untuk
predict.glm()
mengembalikan prediksi pada skala prediktor linier. Untuk mendapatkan nilai yang pas, kami ingin menerapkan kebalikan dari fungsi tautan ke nilai-nilai itu.fitted()
apakah itu bagi kami, dan kami juga bisa mendapatkan nilai yang benar menggunakanpredict()
:Begitu juga dengan
residuals()
(atauresid()
); nilai-nilai yang disimpanmd2$residuals
adalah residual yang bekerja tidak seperti yang Anda inginkan. Theresid()
Metode ini memungkinkan Anda untuk menentukan jenis residual yang Anda inginkan dan memiliki standar yang berguna.Untuk
glm()
model, sesuatu seperti ini sudah cukup:Hal serupa dapat dilakukan untuk
lm()
model:sumber