R'de glm ile tahmin fonksiyonu nasıl kullanılır (örneklerle)
R’deki glm() işlevi genelleştirilmiş doğrusal modellere uymak için kullanılabilir. Bu özellik özellikle lojistik regresyon modellerinin , Poisson regresyon modellerinin ve diğer karmaşık modellerin yerleştirilmesinde kullanışlıdır.
Bir model yerleştirdikten sonra, yeni bir gözlemin yanıt değerini tahmin etmek için tahmin() fonksiyonunu kullanabiliriz.
Bu işlev aşağıdaki sözdizimini kullanır:
tahmin(nesne, yeniveri, tür = “yanıt”)
Altın:
- nesne: glm() işlevini kullanan model ayarlamasının adı
- newdata: Tahminlerde bulunulacak yeni veri çerçevesinin adı
- type: Yapılacak tahminin türü.
Aşağıdaki örnek, R’ye genelleştirilmiş bir doğrusal modelin nasıl sığdırılacağını ve daha sonra modelin, daha önce hiç görmediği yeni bir gözlemin yanıt değerini tahmin etmek için nasıl kullanılacağını gösterir.
Örnek: Tahmin fonksiyonunun R’de glm ile kullanılması
Bu örnek için mtcars adı verilen yerleşik R veri kümesini kullanacağız:
#view first six rows of mtcars data frame
head(mtcars)
mpg cyl disp hp drat wt qsec vs am gear carb
Mazda RX4 21.0 6 160 110 3.90 2.620 16.46 0 1 4 4
Mazda RX4 Wag 21.0 6 160 110 3.90 2.875 17.02 0 1 4 4
Datsun 710 22.8 4 108 93 3.85 2.320 18.61 1 1 4 1
Hornet 4 Drive 21.4 6 258 110 3.08 3.215 19.44 1 0 3 1
Hornet Sportabout 18.7 8 360 175 3.15 3.440 17.02 0 0 3 2
Valiant 18.1 6 225 105 2.76 3,460 20.22 1 0 3 1
Am tepki değişkenini (aracın şanzıman tipi: 0 = otomatik, 1 = manuel) tahmin etmek için disp ve hp değişkenlerini kullandığımız aşağıdaki lojistik regresyon modelini uygulayacağız.
#fit logistic regression model model <- glm(am ~ disp + hp, data=mtcars, family=binomial) #view model summary summary(model) Call: glm(formula = am ~ disp + hp, family = binomial, data = mtcars) Deviance Residuals: Min 1Q Median 3Q Max -1.9665 -0.3090 -0.0017 0.3934 1.3682 Coefficients: Estimate Std. Error z value Pr(>|z|) (Intercept) 1.40342 1.36757 1.026 0.3048 available -0.09518 0.04800 -1.983 0.0474 * hp 0.12170 0.06777 1.796 0.0725 . --- Significant. codes: 0 '***' 0.001 '**' 0.01 '*' 0.05 '.' 0.1 ' ' 1 (Dispersion parameter for binomial family taken to be 1) Null deviance: 43,230 on 31 degrees of freedom Residual deviance: 16,713 on 29 degrees of freedom AIC: 22,713 Number of Fisher Scoring iterations: 8
Daha sonra bu modeli, aşağıdaki kodu kullanarak yeni bir arabanın otomatik şanzımana (am=0) veya manuel şanzımana (am=1) sahip olma olasılığını tahmin etmek için kullanabiliriz:
#define new observation
newdata = data. frame (disp=200, hp=100)
#use model to predict value of am
predict(model, newdata, type=" response ")
1
0.00422564
Model, yeni arabanın manuel şanzımana sahip olma olasılığının (am=1) 0,004 olduğunu tahmin ediyor. Bu da yeni otomobilin otomatik şanzımanla gelme ihtimalinin çok yüksek olduğu anlamına geliyor.
Birden fazla yeni araba içeren bir veritabanımız varsa aynı anda birden fazla tahminde bulunabileceğimizi unutmayın.
Örneğin, aşağıdaki kod, üç yeni araba için manuel şanzıman olasılığını tahmin etmek amacıyla takılan modelin nasıl kullanılacağını gösterir:
#define new data frame of three cars
newdata = data. frame (disp=c(200, 180, 160),
hp=c(100, 90, 108))
#view data frame
newdata
hp disp
1,200 100
2 180 90
3,160,108
#use model to predict value of am for all three cars
predict(model, newdata, type=" response ")
1 2 3
0.004225640 0.008361069 0.335916069
Sonucun nasıl yorumlanacağı aşağıda açıklanmıştır:
- 1 numaralı arabanın manuel şanzımana sahip olma olasılığı 0,004’tür .
- 2 numaralı arabanın manuel şanzımana sahip olma olasılığı 0,008’dir .
- 3 numaralı arabanın manuel şanzımana sahip olma olasılığı 0,336’dır .
Yorumlar
Yeni veri çerçevesindeki sütun adları, modeli oluşturmak için kullanılan veri çerçevesindeki sütun adlarıyla tam olarak eşleşmelidir.
Önceki örneğimizde, modeli oluşturmak için kullandığımız veri çerçevesinin, tahmin değişkenlerimiz için aşağıdaki sütun adlarını içerdiğini unutmayın:
- görüntülemek
- HP
Dolayısıyla, yeni veri adı verilen yeni veri çerçevesini oluşturduğumuzda, sütunları da adlandırdığımızdan emin olduk:
- görüntülemek
- HP
Sütun adları eşleşmiyorsa aşağıdaki hata iletisini alırsınız:
Değerlendirmede hata (predvars, data, env)
tahmin() işlevini kullanırken bunu aklınızda bulundurun.
Ek kaynaklar
Aşağıdaki eğitimlerde R’de diğer ortak görevlerin nasıl gerçekleştirileceği açıklanmaktadır:
R’de basit doğrusal regresyon nasıl gerçekleştirilir
R’de çoklu doğrusal regresyon nasıl gerçekleştirilir
R’de polinom regresyonu nasıl gerçekleştirilir
R’de bir tahmin aralığı nasıl oluşturulur