拟合R中的加权分布

时间:2013-11-12 19:38:32

标签: r

我希望将加权分布拟合到我拥有的数据集中。

我目前正在使用fitdist命令,但不知道是否有办法添加加权。

library(fitdistrplus)
df<-data.frame(value=rlnorm(100,1,0.5),weight=runif(100,0,2))

#This is what I'm doing but not really what I want
fit_df<-fitdist(df$value,"lnorm")

#How to do this
fit_df_weighted<-fitdist(df$value,"lnorm",weight=df$weight)

我确信这个问题已经在某个地方得到了解答,但我看上去并找不到任何东西。

提前感谢,

戈登

1 个答案:

答案 0 :(得分:4)

也许您可以使用rep()函数和快速循环来近似分布。

您可以将每个加权值乘以,比如10000,对数字进行四舍五入,然后使用它来表示向量中需要多少倍的值。运行快速循环后,您可以通过fitdist()算法运行向量。

df$scaled_weight <- round(df$weight*10000,0)
my_vector <- vector()

## quick loop
for (i in 1:nrow(df)){
  values <- rep(df$value[i], df$scaled_weight[i])
  my_vector <- c(my_vector, values)
}

## find parameters
fit_df_weighted <- fitdist(my_vector,"lnorm")

标准误差是垃圾,但估计的参数应该足够了。