1

私が従うべきと考える分布は、左打ち切りワイブル分布です。ptruncコマンドを使用するためのこの分布のパラメーター a、形状、およびスケールを知っています。

require(truncdist);

ptrunc(x,"weibull",a=a,scale=b,shape=c)

そのため、ks.testコマンド (以下を参照) で、「通常のワイブル」ではなく、説明されている左切り捨てワイブル分布を使用する必要があります。

myvalues<-c(37.5, 35.4, 27.1, 32.9, 35.9, 35.1, 34.1, 32.5, 35.5, 31.5, 38.2, 36.1,,29.9, 30.1, 34.7, 38.7 ,32.3, 38.0, 34.9, 44.2, 35.8, 30.8, 39.3, 26.0, 34.2, 40.0, 36.1 ,41.5 ,32.8, 31.9, 41.3 ,30.5, 39.9, 35.0 ,31.2 ,35.0, 30.3, 29.0, 34.4, 35.7, 34.1, 35.4); 
a<-7;
scale<-36.37516;
shape<-9.437013; 

したがって、この場合、左側の切り捨てを行う必要がないことはわかっています。しかし、他の場合はそうなるでしょう。

ks.test(myvalues,"pweibull",scale=b,shape=c) #for normal weibull

しかし

ks.test(myvalues,ptrunc(x,"weibull",a=a,scale=b,shape=c)) # for leftruncated

間違った結果を与えます。

4

2 に答える 2

0

あなたはptrunc関数を間違って使用しています (私は推測します)。一連の分位数を与える必要があります。以下では、スケールと形状のパラメーターに基づいてワイブルの平均と標準偏差を計算し、上下の 5 つの標準偏差からサンプリングして比較セットを作成します。

require(truncdist);

myvalues <- c(37.5, 35.4, 27.1, 32.9, 35.9, 35.1, 34.1, 32.5, 35.5, 31.5, 38.2, 36.1,29.9, 30.1, 34.7, 38.7 ,32.3, 38.0, 34.9, 44.2, 35.8, 30.8, 39.3, 26.0, 34.2, 40.0, 36.1 ,41.5 ,32.8, 31.9, 41.3 ,30.5, 39.9, 35.0 ,31.2 ,35.0, 30.3, 29.0, 34.4, 35.7, 34.1, 35.4); 
a <- 7;
scale <- 36.37516;
shape <- 9.437013;

# Calculate standard deviation of the weibull
weib_mean <- scale * gamma(1 + 1/shape)
weib_sd <- sqrt((scale^2) * (gamma(1 + 2/shape) - (gamma(1 + 1/shape))^2))

# Get a sample
quant <- seq(weib_mean - 5 * weib_sd, weib_mean + 5 * weib_sd, length.out = 1E5)
weibull_samp <- ptrunc(quant, "weibull", a = a, scale = scale, shape = shape)

# Take a look
plot(weibull_samp ~ quant)

ここに画像の説明を入力

# Use with test
> ks.test(sort(myvalues), weibull_samp)
       Two-sample Kolmogorov-Smirnov test

data:  sort(myvalues) and weibull_samp
D = 1, p-value < 2.2e-16
alternative hypothesis: two-sided
于 2016-01-07T17:49:04.397 に答える