我希望将加权分布拟合到我拥有的数据集中.
我目前正在使用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)
Run Code Online (Sandbox Code Playgroud)
我确信这个问题已经在某个地方得到了回答,但我看上去却找不到任何东西.
提前致谢,
戈登
也许您可以使用该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")
Run Code Online (Sandbox Code Playgroud)
标准误差可能是垃圾,但估计的参数应该足够了。