Rを使用してGLMのスプラインを適合させようとしています。スプラインが適合したら、結果のモデルを取得し、Excelブックでモデリングファイルを作成できるようになります。
たとえば、yがxのランダム関数であり、特定のポイント(この場合@ x = 500)で勾配が急激に変化するデータセットがあるとします。
set.seed(1066)
x<- 1:1000
y<- rep(0,1000)
y[1:500]<- pmax(x[1:500]+(runif(500)-.5)*67*500/pmax(x[1:500],100),0.01)
y[501:1000]<-500+x[501:1000]^1.05*(runif(500)-.5)/7.5
df<-as.data.frame(cbind(x,y))
plot(df)
私は今これを使ってフィットします
library(splines)
spline1 <- glm(y~ns(x,knots=c(500)),data=df,family=Gamma(link="log"))
私の結果は示しています
summary(spline1)
Call:
glm(formula = y ~ ns(x, knots = c(500)), family = Gamma(link = "log"),
data = df)
Deviance Residuals:
Min 1Q Median 3Q Max
-4.0849 -0.1124 -0.0111 0.0988 1.1346
Coefficients:
Estimate Std. Error t value Pr(>|t|)
(Intercept) 4.17460 0.02994 139.43 <2e-16 ***
ns(x, knots = c(500))1 3.83042 0.06700 57.17 <2e-16 ***
ns(x, knots = c(500))2 0.71388 0.03644 19.59 <2e-16 ***
---
Signif. codes: 0 ‘***’ 0.001 ‘**’ 0.01 ‘*’ 0.05 ‘.’ 0.1 ‘ ’ 1
(Dispersion parameter for Gamma family taken to be 0.1108924)
Null deviance: 916.12 on 999 degrees of freedom
Residual deviance: 621.29 on 997 degrees of freedom
AIC: 13423
Number of Fisher Scoring iterations: 9
この時点で、r内で予測関数を使用して、完全に受け入れ可能な答えを得ることができます。問題は、モデルの結果を使用してExcelでブックを作成することです。
予測関数の私の理解は、新しい「x」値が与えられると、rはその新しいxを適切なスプライン関数(500以上の値の関数または500未満の値の関数)にプラグインし、その結果を取り、乗算することです適切な係数によって、それから他のモデル項と同様にそれを扱います。これらのスプライン関数を取得するにはどうすればよいですか?
(注:ログリンクされたガンマGLMは、提供されたデータセットに適切でない可能性があることを認識しています。GLMをどのように、またはいつ適合させるかについては質問しません。
rm(list=ls())
、特に警告なしではなく、すべての変数を削除するコード()を含めることを避けることをお勧めします。誰かが(しかしどれも呼ばれていない、彼らはすでにいくつかの変数を持つRのオープンセッションにあなたのコードを貼り付け、コピーすることができるx
、y
、df
またはspline1
)、あなたのコードが自分の仕事を一掃することをミス。彼らがそれをするのはちょっと馬鹿ですか?はい。しかし、自分の変数をいつ削除するかを彼らに決定させるのは依然として丁寧です。