1

私はRの完全な初心者であり、いくつかのデータに非線形最小二乗法を適用しようとしています。以下 (SC4 と t は私のデータ列です) は機能しているようです:

fit = nls(SC4 ~ fin+(inc-fin)*exp(-t/T), data=asc4, start=c(fin=0.75,inc=0.55,T=150.0))

「summary(fit)」コマンドは、p 値を含まない出力を生成します。これは、最終的には、適合パラメーターを除いて、私が取得しようとしているものです。私が得るパラメータは賢明に見えます。

Formula: SC4 ~ fin + (inc - fin) * exp(-t/T) 

Parameters:
Estimate Std. Error t value Pr(>|t|)


fin  0.73703    0.02065  35.683   <2e-16 ***
inc  0.55671    0.02206  25.236   <2e-16 ***
T   51.48446   21.25343   2.422   0.0224 *  

--- Signif. codes:  0 ‘***’ 0.001 ‘**’ 0.01 ‘*’ 0.05 ‘.’ 0.1 ‘ ’ 1

Residual standard error: 0.04988 on 27 degrees of freedom
Number of iterations to convergence: 8
Achieved convergence tolerance: 4.114e-06

p値を取得する方法はありますか?nlsそれがうまくいくかどうか以外の別のコマンドを喜んで使用します。gnuplot実際、たとえば、そこから p 値を取得する方法があれば喜んで使用します (実際gnuplot、私が通常グラフィックスに使用するものです)。

PS個々の係数ではなく、全体的な適合のp値を探しています。

4

1 に答える 1

1

Rでこれを行う方法は、anova関数を使用して現在のモデルの適合値を計算し、モデルをより少ない変数で適合させてから、関数を使用する必要がありますanova(new_model,previous_model)。削除した変数のパラメーターがゼロに等しいという null を拒否できない場合、計算された F スコアは 1 に近づきます。summary標準的な線形回帰を行うときの関数は、通常、これを自動的に行います。

たとえば、標準の線形回帰では次のようにします。

> x = rnorm(100)
> y=rnorm(100)

> reg = lm(y~x)
> summary(reg)

Call:
lm(formula = y ~ x)

Residuals:
    Min      1Q  Median      3Q     Max 
-2.3869 -0.6815 -0.1137  0.7431  2.5939 

Coefficients:
             Estimate Std. Error t value Pr(>|t|)  
(Intercept) -0.002802   0.105554  -0.027   0.9789  
x           -0.182983   0.104260  -1.755   0.0824 .
---
Signif. codes:  0 ‘***’ 0.001 ‘**’ 0.01 ‘*’ 0.05 ‘.’ 0.1 ‘ ’ 1

Residual standard error: 1.056 on 98 degrees of freedom
Multiple R-squared:  0.03047,   Adjusted R-squared:  0.02058 
F-statistic:  3.08 on 1 and 98 DF,  p-value: 0.08237

ただし、使用anovaすると、同じ F スコアが得られるはずです。

> anova(reg)
Analysis of Variance Table

Response: y
          Df  Sum Sq Mean Sq F value  Pr(>F)  
x          1   3.432  3.4318  3.0802 0.08237 .
Residuals 98 109.186  1.1141                  
---
Signif. codes:  0 ‘***’ 0.001 ‘**’ 0.01 ‘*’ 0.05 ‘.’ 0.1 ‘ ’ 1
于 2014-10-24T17:56:48.590 に答える