拟合Gamma分布并按R中的因子绘制

时间:2018-04-02 11:14:55

标签: r statistics

我有data.frame个对象,其中包含数字列数量和分类列欺诈:

amount <- [60.00, 336.38, 119.00, 115.37, 220.01, 60.00, 611.88, 189.78 ...]

fraud <- [1,0,0,0,0,0,1,0, ...]

我希望将伽马分布拟合到数量,但要按factor(fraud)绘制它。 我想要一个图表,它将显示2条曲线,2种不同的颜色,可以区分2套(欺诈/非欺诈组)。

这是我到目前为止所做的:

fit.gamma1 <- fitdist(df$amount[df$fraud == 1], distr = "gamma", method = "mle")
plot(fit.gamma1)

fit.gamma0 <- fitdist(df$amount[df$fraud == 0], distr = "gamma", method = "mle")
plot(fit.gamma0)

我使用过这个参考: How would you fit a gamma distribution to a data in R?

1 个答案:

答案 0 :(得分:2)

也许你想要的是

curve(dgamma(x, shape = fit.gamma0$estimate[1], rate = fit.gamma0$estimate[2]), 
      from = min(amount), to = max(amount), ylab = "")
curve(dgamma(x, shape = fit.gamma1$estimate[1], rate = fit.gamma1$estimate[2]), 
      from = min(amount), to = max(amount), col = "red", add = TRUE)

enter image description here

ggplot2

ggplot(data.frame(x = range(amount)), aes(x)) + 
  stat_function(fun = dgamma, aes(color = "Non fraud"),
                args = list(shape = fit.gamma0$estimate[1], rate = fit.gamma0$estimate[2])) +
  stat_function(fun = dgamma, aes(color = "Fraud"),
                args = list(shape = fit.gamma1$estimate[1], rate = fit.gamma1$estimate[2])) +
  theme_bw() + scale_color_discrete(name = NULL)

enter image description here