Завантажте необхідний пакет.
library(ggplot2)
library(MASS)
Створіть 10 000 чисел, пристосованих до розподілу гами.
x <- round(rgamma(100000,shape = 2,rate = 0.2),1)
x <- x[which(x>0)]
Намалюйте функцію густини ймовірностей, припускаючи, що ми не знаємо, до якого розподілу x підходив.
t1 <- as.data.frame(table(x))
names(t1) <- c("x","y")
t1 <- transform(t1,x=as.numeric(as.character(x)))
t1$y <- t1$y/sum(t1[,2])
ggplot() +
geom_point(data = t1,aes(x = x,y = y)) +
theme_classic()
З графіка ми можемо дізнатися, що розподіл x - це зовсім як гамма-розподіл, тому ми використовуємо fitdistr()
в пакеті MASS
для отримання параметрів форми та швидкості розподілу гамми.
fitdistr(x,"gamma")
## output
## shape rate
## 2.0108224880 0.2011198260
## (0.0083543575) (0.0009483429)
Намалюйте фактичну точку (чорну крапку) та встановлений графік (червона лінія) на тому ж сюжеті, і ось питання, спочатку подивіться сюжет.
ggplot() +
geom_point(data = t1,aes(x = x,y = y)) +
geom_line(aes(x=t1[,1],y=dgamma(t1[,1],2,0.2)),color="red") +
theme_classic()
У мене є два питання:
Реальні параметри
shape=2
,rate=0.2
і параметри , які я використовую функцію ,fitdistr()
щоб отримати цеshape=2.01
,rate=0.20
. Ці два майже однакові, але чому пристосований графік добре не відповідає фактичній точці, у встановленому графіку повинно бути щось не так, або те, як я малюю пристосований графік та фактичні точки, зовсім неправильно, що мені робити ?Після того, як я отримую параметр моделі я встановити, яким чином я оцінити модель, що - щось на зразок RSS (залишкова сума квадратів) для лінійної моделі, або р-значення
shapiro.test()
,ks.test()
і іншого тіста?
Я бідний у статистичних знаннях, чи не могли б ви мені допомогти?
ps: Я багато разів шукав пошук в Google, stackoverflow та CV, але не знайшов нічого, пов'язаного з цією проблемою
h <- hist(x, 1000, plot = FALSE); t1 <- data.frame(x = h$mids, y = h$density)
.