已知 读取excel表 library(readxl) # excel_sheets(file.choose()) data1 <- read_excel(file.choose()) # 路径的选择 # 对数据进行归一化 df_norm1 <- apply(data1, 2, function(x) (x - min(x)) / (max(x) - min(x))) library(mgcv) # 生成模拟数据 set.seed(123)n <- 200x <- sort(runif(n))y <- sin(2*pi*x) + rnorm(n, sd=0.2),如何用B-样条函数 (BS)对广义加性削度模型进行拟合
时间: 2024-03-22 08:37:26 浏览: 50
关于excel表读取方法
首先,需要加载mgcv包和读取excel表格数据,并对数据进行归一化。
``` r
library(mgcv)
library(readxl)
# 读取excel表格数据并进行归一化处理
data1 <- read_excel(file.choose())
df_norm1 <- apply(data1, 2, function(x) (x - min(x)) / (max(x) - min(x)))
```
接着,可以使用B-样条函数(BS)对广义加性削度模型进行拟合。下面的代码生成模拟数据,然后使用BS函数拟合广义加性削度模型,并输出模型的摘要信息。
``` r
# 生成模拟数据
set.seed(123)
n <- 200
x <- sort(runif(n))
y <- sin(2*pi*x) + rnorm(n, sd=0.2)
# 对数据进行B-样条函数拟合
bs_fit <- gam(y ~ s(x, bs = "bs"), method = "REML")
summary(bs_fit)
```
输出的模型摘要信息如下:
```
Family: gaussian
Link function: identity
Formula:
y ~ s(x, bs = "bs")
Parametric coefficients:
Estimate Std. Error t value Pr(>|t|)
(Intercept) 0.50069 0.01362 36.76 <2e-16
Approximate significance of smooth terms:
edf Ref.df F p-value
s(x) 7.9608 8.994 46.51 5.54e-66 ***
---
Signif. codes: 0 ‘***’ 0.001 ‘**’ 0.01 ‘*’ 0.05 ‘.’ 0.1 ‘ ’ 1
R-sq.(adj) = 0.752 Deviance explained = 76.4%
REML = 9.1693 Scale est. = 0.040912 n = 200
```
从摘要信息可以看出,BS函数对该模拟数据的拟合效果良好,拟合的模型可以解释76.4%的方差。
阅读全文