2015-05-13 42 views
6

Mam Database i chcę pokazać figurę za pomocą stat_smooth.R: grupy stat_smooth (oś x)

mogę pokazać avg_time vs Scored_Probabilities postać, która wygląda tak:

c <- ggplot(dataset1, aes(x=Avg.time, y=Scored.Probabilities)) 
c + stat_smooth() 

enter image description here

Ale przy zmianie Avg.time do czasu lub wiek, wystąpi błąd:

c <- ggplot(dataset1, aes(x=Age, y=Scored.Probabilities)) 
c + stat_smooth() 
error: geom_smooth: Only one unique x value each group. Maybe you want aes(group = 1)? 

Jak mogę to naprawić?

+0

'stat_smooth' działa tylko ze zmiennymi ciągłymi. Twoja zmienna "age" jest zmienną znakową. Mogę tylko założyć, że zmienna 'time' również nie jest zapisywana jako czas, ale zamiast niej znak. Najpierw musisz przekonwertować zmienne na numeryczne w znaczący sposób. – shadow

Odpowiedz

6

komunikat o błędzie mówi, aby ustawić group=1, robi to daje kolejny błąd

ggplot(dataset1, aes(x=Age, y=Scored.Probabilities, group=1))+stat_smooth() 
geom_smooth: method="auto" and size of largest group is >=1000, so using gam with formula: y ~ s(x, bs = "cs"). Use 'method = x' to change the smoothing method. 
Error in smooth.construct.cr.smooth.spec(object, data, knots) : 
    x has insufficient unique values to support 10 knots: reduce k. 

Teraz liczba unikalnych wartości x nie wystarczy.

Więc dwa rozwiązania: i) za pomocą innej funkcji, takiej jak mean, ii) za pomocą jittera, aby nieznacznie przesunąć wiek.

ggplot(dataset1, aes(x=Age, y=Scored.Probabilities, group=1))+ 
geom_point()+ 
stat_summary(fun.y=mean, colour="red", geom="line", size = 3) # draw a mean line in the data 

enter image description here

Albo

ggplot(dataset1, aes(x=jitter(as.numeric(Age)), y=Scored.Probabilities, group=1))+ 
geom_point()+stat_smooth() 

Uwaga wykorzystanie as.numeric ponieważ Age jest czynnikiem.

enter image description here

+0

na współczynniku użyj 'as.numeric (as.character (variable))', 'as.numeric (variable)' może nie zwrócić oczekiwanej wartości –

+0

prawdopodobnie masz rację, możesz edytować odpowiedź –