Tôi đang cố gắng điều chỉnh spline cho GLM bằng R. Một khi tôi điều chỉnh spline, tôi muốn có thể lấy mô hình kết quả của mình và tạo tệp mô hình hóa trong sổ làm việc Excel.
Ví dụ: giả sử tôi có một tập dữ liệu trong đó y là hàm ngẫu nhiên của x và độ dốc thay đổi đột ngột tại một điểm cụ thể (trong trường hợp này là @ 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)
Bây giờ tôi phù hợp với điều này bằng cách sử dụng
library(splines)
spline1 <- glm(y~ns(x,knots=c(500)),data=df,family=Gamma(link="log"))
và kết quả của tôi cho thấy
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
Tại thời điểm này, tôi có thể sử dụng chức năng dự đoán trong r và nhận được câu trả lời hoàn toàn chấp nhận được. Vấn đề là tôi muốn sử dụng kết quả mô hình để xây dựng một bảng tính trong Excel.
Sự hiểu biết của tôi về hàm dự đoán là đã đưa ra một giá trị "x" mới, r cắm x mới đó vào hàm spline thích hợp (hàm cho các giá trị trên 500 hoặc hàm cho các giá trị dưới 500), sau đó nó sẽ lấy kết quả đó và nhân lên nó theo hệ số thích hợp và từ thời điểm đó đối xử với nó như bất kỳ thuật ngữ mô hình nào khác. Làm thế nào để tôi có được các chức năng spline?
(Lưu ý: Tôi nhận thấy rằng GLM gamma được liên kết nhật ký có thể không phù hợp với tập dữ liệu được cung cấp. Tôi không hỏi về cách thức hoặc thời điểm phù hợp với GLM.
rm(list=ls())
), đặc biệt là không có bất kỳ cảnh báo nào. Ai đó có thể sao chép-dán mã của bạn vào một phiên mở của R nơi họ có một số biến rồi (nhưng không ai gọix
,y
,df
hoặcspline1
) và bỏ lỡ rằng mã của bạn làm mờ nhạt những công việc của họ. Có phải họ hơi ngu ngốc khi làm điều đó? Vâng. Nhưng nó vẫn lịch sự khi để họ quyết định khi nào sẽ xóa các biến của chính họ.