Tahmin edilen ve gerçek değerleri yan yana görüntülemek için, tahmin edilen değer ve kalıntıların bir grafiğiyle birlikte yönlü bir grafik oluşturuyorum. shiny
Farklı eğitim parametreleri kullanarak modelleme çabalarının sonuçlarını keşfetmeye yardımcı olmak için kullanacağım. Modeli, verilerin% 85'i ile eğitiyorum, kalan% 15'i test ediyorum ve her seferinde gerçek / tahmin edilen değerleri toplayarak bunu 5 kez tekrarlıyorum. Kalıntıları hesapladıktan sonra data.frame
şuna benziyorum:
head(results)
act pred resid
2 52.81000 52.86750 -0.05750133
3 44.46000 42.76825 1.69175252
4 54.58667 49.00482 5.58184181
5 36.23333 35.52386 0.70947731
6 53.22667 48.79429 4.43237981
7 41.72333 41.57504 0.14829173
İstediğim:
pred
Vs.act
vepred
vs.'nin yan yana grafiğiresid
- X / Y aralığı / limitleri
pred
vsact
ideal olarak, aynı olmasımin(min(results$act), min(results$pred))
içinmax(max(results$act), max(results$pred))
- X / y aralığı / limitleri
pred
vs.resid
değil ben gerçek vs tahmin arsa için ne etkilenecek.x
Yalnızca tahmin edilen değerleriny
üzerinde ve yalnızca artık aralığın üzerinde çizim yapmak iyidir.
Her iki grafiği de yan yana görüntülemek için verileri eritiyorum:
library(reshape2)
plot <- melt(results, id.vars = "pred")
Şimdi arsa:
library(ggplot2)
p <- ggplot(plot, aes(x = pred, y = value)) + geom_point(size = 2.5) + theme_bw()
p <- p + facet_wrap(~variable, scales = "free")
print(p)
İstediğim şeye oldukça yakın:
İstediğim şey, gerçek ve tahmin edilen x ve y aralıklarının aynı olması, ancak bunu nasıl belirleyeceğimi bilmiyorum ve tahmin edilene karşı kalan grafik için bunun yapılmasına ihtiyacım yok . aralıklar tamamen farklıdır.
Her ikisi için de buna benzer bir şey eklemeyi denedim scale_x_continous
ve scale_y_continuous
:
min_xy <- min(min(plot$pred), min(plot$value))
max_xy <- max(max(plot$pred), max(plot$value))
p <- ggplot(plot, aes(x = pred, y = value)) + geom_point(size = 2.5) + theme_bw()
p <- p + facet_wrap(~variable, scales = "free")
p <- p + scale_x_continuous(limits = c(min_xy, max_xy))
p <- p + scale_y_continuous(limits = c(min_xy, max_xy))
print(p)
Ancak bu min()
, artık değerleri alır.
Sahip olduğum son bir fikir, erimeden önce minimum act
ve pred
değişkenlerin değerini saklamak ve ardından bunları erimiş veri çerçevesine eklemek ve hangi fasette göründüklerini dikte etmekti:
head(results)
act pred resid
2 52.81000 52.86750 -0.05750133
3 44.46000 42.76825 1.69175252
4 54.58667 49.00482 5.58184181
5 36.23333 35.52386 0.70947731
min_xy <- min(min(results$act), min(results$pred))
max_xy <- max(max(results$act), max(results$pred))
plot <- melt(results, id.vars = "pred")
plot <- rbind(plot, data.frame(pred = c(min_xy, max_xy),
variable = c("act", "act"), value = c(max_xy, min_xy)))
p <- ggplot(plot, aes(x = pred, y = value)) + geom_point(size = 2.5) + theme_bw()
p <- p + facet_wrap(~variable, scales = "free")
print(p)
Puanların da ortaya çıkması dışında istediğim şey bu:
Böyle bir şey yapmak için herhangi bir öneriniz var mı?
Bu fikri eklemek için gördüm geom_blank()
, ancak aes()
biti nasıl belirleyeceğimi ve düzgün çalışmasını geom_point()
sağlayacağımı veya histogram kullanımına eşdeğerinin ne olduğundan emin değilim aes(y = max(..count..))
.
İşte oynanacak veriler (eritmeden önceki gerçek, tahmin edilen ve artık değerlerim):
> dput(results)
structure(list(act = c(52.81, 44.46, 54.5866666666667, 36.2333333333333,
53.2266666666667, 41.7233333333333, 35.2966666666667, 30.6833333333333,
39.25, 35.8866666666667, 25.1, 29.0466666666667, 23.2766666666667,
56.3866666666667, 42.92, 41.57, 27.92, 23.16, 38.0166666666667,
61.8966666666667, 37.41, 41.6333333333333, 35.9466666666667,
48.9933333333333, 30.5666666666667, 32.08, 40.3633333333333,
53.2266666666667, 64.6066666666667, 38.5366666666667, 41.7233333333333,
25.78, 33.4066666666667, 27.8033333333333, 39.3266666666667,
48.9933333333333, 25.2433333333333, 32.67, 55.17, 42.92, 54.5866666666667,
23.16, 64.6066666666667, 40.7966666666667, 39.0166666666667,
41.6333333333333, 35.8866666666667, 25.1, 23.2766666666667, 44.46,
34.2166666666667, 40.8033333333333, 24.5766666666667, 35.73,
61.8966666666667, 62.1833333333333, 74.6466666666667, 39.4366666666667,
36.6, 27.1333333333333), pred = c(52.8675013282404, 42.7682474758679,
49.0048248585123, 35.5238560262515, 48.7942868566949, 41.5750416040131,
33.9548164913007, 29.9787449128663, 37.6443975781139, 36.7196211666685,
27.6043278172077, 27.0615724310721, 31.2073056885252, 55.0886903524179,
43.0895814712768, 43.0895814712768, 32.3549865881578, 26.2428426737583,
36.6926037128343, 56.7987490221996, 45.0370788180147, 41.8231642271826,
38.3297859332601, 49.5343916620086, 30.8535641206809, 29.0117492750411,
36.9767968381391, 49.0826677983065, 54.4678549541069, 35.5059204731218,
41.5333417555995, 27.6069075391361, 31.2404889715121, 27.8920960978598,
37.8505531149324, 49.2616631533957, 30.366837650159, 31.1623492639066,
55.0456078770405, 42.772538591063, 49.2419293590535, 26.1963523976241,
54.4080781796616, 44.9796700541254, 34.6996927469131, 41.6227713664027,
36.8449646519306, 27.5318686661673, 31.6641793552795, 42.8198894266632,
40.5769177148146, 40.5769177148146, 29.3807781312816, 36.8579132935989,
55.5617033901752, 55.8097119335638, 55.1041728261666, 43.6094641699075,
37.0674887276681, 27.3876960746536), resid = c(-0.0575013282403773,
1.69175252413213, 5.58184180815435, 0.709477307081826, 4.43237980997177,
0.148291729320228, 1.34185017536599, 0.704588420467079, 1.60560242188613,
-0.832954500001826, -2.50432781720766, 1.98509423559461, -7.93063902185855,
1.29797631424874, -0.169581471276786, -1.51958147127679, -4.43498658815778,
-3.08284267375831, 1.32406295383237, 5.09791764446704, -7.62707881801468,
-0.189830893849219, -2.38311926659339, -0.541058328675241, -0.286897454014273,
3.06825072495888, 3.38653649519422, 4.14399886836018, 10.1388117125598,
3.03074619354486, 0.189991577733821, -1.82690753913609, 2.16617769515461,
-0.088762764526507, 1.47611355173427, -0.268329820062384, -5.12350431682565,
1.5076507360934, 0.124392122959534, 0.147461408936991, 5.34473730761318,
-3.03635239762411, 10.1985884870051, -4.18300338745873, 4.31697391975358,
0.0105619669306023, -0.958297985263961, -2.43186866616734, -8.38751268861282,
1.64011057333683, -6.36025104814794, 0.226415618518729, -4.80411146461488,
-1.1279132935989, 6.33496327649151, 6.37362139976954, 19.5424938405001,
-4.17279750324084, -0.467488727668119, -0.254362741320246)), .Names = c("act",
"pred", "resid"), row.names = c(2L, 3L, 4L, 5L, 6L, 7L, 8L, 9L,
10L, 11L, 12L, 13L, 15L, 16L, 17L, 18L, 19L, 20L, 21L, 22L, 23L,
24L, 25L, 26L, 28L, 29L, 30L, 31L, 32L, 33L, 34L, 35L, 36L, 37L,
38L, 39L, 41L, 42L, 43L, 44L, 45L, 46L, 47L, 48L, 49L, 50L, 51L,
52L, 54L, 55L, 56L, 57L, 58L, 59L, 60L, 61L, 62L, 63L, 64L, 65L
), class = "data.frame")
grid.arrange
.
ggplot(plot, aes(x = pred, y = value)) + geom_point()
Erime sonrası verileri kullanarak, fasetleme olmadan yapacağımı mı öneriyorsunuz? Bu, rastgele olmama / çarpıklığı tespit etmeyi zorlaştırmak için kalıntıların ölçeğini gerçekten küçültmez mi?
variable
yarattığı değere göre arsa ve faset yapmalıydım melt()
. Sonra tekrar, sanırım bunları lapply
çeşitli kombinasyonları çizmek için oluşturulan bir listede saklayabilirim . Giriş için teşekkürler. Bir grid
çözüm oluşturmak istiyorsanız , cevabı kabul edebilirim, ancak bu bizim grid
izlediğimiz yolsa , bu diğer temelli çözümlerin bir kopyası da olabilir .
grid.arrange
hemen hemen her zaman düzenini karıştıran biridir. Keşke gtable'ın uzun süredir devam eden hatalarının giderilmesi.