Saya relatif baru untuk R, dan saya mencoba menyesuaikan model dengan data yang terdiri dari kolom kategoris dan kolom numerik (integer). Variabel dependen adalah bilangan kontinu.
Data memiliki format berikut:
predCateg, predIntNum, ResponseVar
Data terlihat seperti ini:
ranking, age_in_years, wealth_indicator
category_A, 99, 1234.56
category_A, 21, 12.34
category_A, 42, 234.56
....
category_N, 105, 77.27
Bagaimana saya memodelkan ini (mungkin, menggunakan GLM), dalam R?
[[Sunting]]
Baru saja terpikir oleh saya (setelah menganalisis data lebih teliti), bahwa variabel independen kategoris sebenarnya dipesan. Karena itu saya telah memodifikasi jawaban yang diberikan sebelumnya sebagai berikut:
> fit2 <- glm(wealth_indicator ~ ordered(ranking) + age_in_years, data=amort2)
>
> fit2
Call: glm(formula = wealth_indicator ~ ordered(ranking) + age_in_years,
data = amort2)
Coefficients:
(Intercept) ordered(ranking).L ordered(ranking).Q ordered(ranking).C age_in_years
0.0578500 -0.0055454 -0.0013000 0.0007603 0.0036818
Degrees of Freedom: 39 Total (i.e. Null); 35 Residual
Null Deviance: 0.004924
Residual Deviance: 0.00012 AIC: -383.2
>
> fit3 <- glm(wealth_indicator ~ ordered(ranking) + age_in_years + ordered(ranking)*age_in_years, data=amort2)
> fit3
Call: glm(formula = wealth_indicator ~ ordered(ranking) + age_in_years +
ordered(ranking) * age_in_years, data = amort2)
Coefficients:
(Intercept) ordered(ranking).L ordered(ranking).Q
0.0578500 -0.0018932 -0.0039667
ordered(ranking).C age_in_years ordered(ranking).L:age_in_years
0.0021019 0.0036818 -0.0006640
ordered(ranking).Q:age_in_years ordered(ranking).C:age_in_years
0.0004848 -0.0002439
Degrees of Freedom: 39 Total (i.e. Null); 32 Residual
Null Deviance: 0.004924
Residual Deviance: 5.931e-05 AIC: -405.4
Saya agak bingung dengan apa ordered(ranking).C
, ordered(ranking).Q
dan ordered(ranking).L
maksud dalam output, dan akan sangat menghargai bantuan dalam memahami output ini, dan bagaimana menggunakannya untuk memprediksi variabel respon.
sumber
factor(ranking)
dan tidakas.factor(ranking)
?factor(x)
sehingga saya bisa memasukkanlevels
argumen jika saya mau. Anda juga bisa menggunakanas.factor(x)
jika Anda mau, dan mungkin sebenarnya lebih cepat, tapi saya pikir Anda akan membutuhkan dataset yang cukup besar untuk mempercepat fungsi-fungsi ini.ordered(ranking).C
,ordered(ranking).Q
danordered(ranking).L
- apa artinya, dan bagaimana saya menggunakannya untuk memprediksi variabel respon?) - bantuan apa pun akan sangat dihargai. Terima kasih.L
,,.Q
dan.C
, masing-masing, koefisien untuk faktor pesanan dikodekan dengan kontras linier, kuadratik, dan kubik. Perintahcontr.poly(4)
akan menunjukkan kepada Anda matriks kontras untuk faktor yang diurutkan dengan 4 level (3 derajat kebebasan, itulah sebabnya Anda mendapatkan polinomial urutan ketiga).contr.poly(4)[2, '.L']
akan memberi tahu Anda apa yang harus dipasang untuk level kedua dalam istilah linier. Sadarilah bahwa ini mengasumsikan bahwa masuk akal untuk mempertimbangkan level sebagai jarak yang sama. Jika tidak, buat kode matriks kontras Anda sendiri.Saya baru-baru ini menjawab variabel dependen kontinu dengan variabel independen ordinal , merekomendasikan
ordSmooth
fungsi dalamordPens
paket. Ini menggunakan regresi yang dihukum untuk memuluskan koefisien dummy di seluruh level variabel ordinal sehingga tidak terlalu bervariasi dari satu level ke level berikutnya. Misalnya, Anda mungkin tidak ingincategory_A
koefisien jauh lebih berbedacategory_B
daripada daricategory_N
. Anda mungkin ingin koefisien naik atau turun secara monoton, atau setidaknya berubah secara bertahap di seluruh peringkat. Jawaban saya untuk pertanyaan terkait mendaftar referensi untuk info lebih lanjut.ordSmooth
juga dapat mengakomodasi variabel kontinu (dan nominal); dalam kasus Anda, kode dapat berupa:ordSmooth
membutuhkan input numerik untuk data ordinal, karenanyaas.numeric(ordered())
pemformatan ulang.z
adalah untuk vektor numerik / matriks /data.frame
prediktor kontinu.lambda
adalah koefisien smoothing - nilai yang lebih besar akan mendorong koefisien Anda mendekati nol. Mungkin bijaksana untuk memulai dari yang kecil di sini. PencetakanSmoothFit
akan memberi Anda koefisien dan nilai-nilai yang sesuai, tapi saya khawatir itu menyerahkan sisanya kepada Anda.Dalam metode Anda, koefisien
ordered(ranking).C
/.Q
/.L
tampaknya masing-masing dicap sebagai kubik, kuadrat, dan linier. Jika Anda mencobaglm(rnorm(10)~ordered(rep(1:5,2)))
, Anda akan mendapatkan koefisienordered(rep(1:5, 2))^4
juga. Saya tidak begitu yakin mengapa ini dilambangkan dengan eksponen; Saya tidak berpikir itu memodelkan ini sebagai istilah polinomial, karena koefisien berbeda untukglm(y~x+I(x^2)+I(x^3)+I(x^4))
dan skala varian ini. Mereka harus menjadi kode dummy dasar .sumber