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
)와 미스 코드가 자신의 작품을 지워 버리고있다. 그들이 그렇게 하는게 좀 멍청한가요? 예. 그러나 자신의 변수를 삭제할시기를 결정하는 것은 여전히 예의입니다.