服务器之家

服务器之家 > 正文

详解R语言中的多项式回归、局部回归、核平滑和平滑样条回归模型

时间:2021-10-06 17:19     来源/作者:Kaizong Ye

在标准线性模型中,我们假设 详解R语言中的多项式回归、局部回归、核平滑和平滑样条回归模型。当线性假设无法满足时,可以考虑使用其他方法。

多项式回归

扩展可能是假设某些多项式函数,

详解R语言中的多项式回归、局部回归、核平滑和平滑样条回归模型

同样,在标准线性模型方法(使用GLM的条件正态分布)中,参数 详解R语言中的多项式回归、局部回归、核平滑和平滑样条回归模型 可以使用最小二乘法获得,其中 详解R语言中的多项式回归、局部回归、核平滑和平滑样条回归模型 在 详解R语言中的多项式回归、局部回归、核平滑和平滑样条回归模型 。

即使此多项式模型不是真正的多项式模型,也可能仍然是一个很好的近似值 详解R语言中的多项式回归、局部回归、核平滑和平滑样条回归模型。实际上,根据 Stone-Weierstrass定理,如果 详解R语言中的多项式回归、局部回归、核平滑和平滑样条回归模型 在某个区间上是连续的,则有一个统一的近似值 详解R语言中的多项式回归、局部回归、核平滑和平滑样条回归模型 ,通过多项式函数。

仅作说明,请考虑以下数据集

db = data.frame(x=xr,y=yr)
plot(db)

 

详解R语言中的多项式回归、局部回归、核平滑和平滑样条回归模型

与标准回归线

reg = lm(y ~ x,data=db)
abline(reg,col="red")

详解R语言中的多项式回归、局部回归、核平滑和平滑样条回归模型

考虑一些多项式回归。如果多项式函数的次数足够大,则可以获得任何一种模型,

reg=lm(y~poly(x,5),data=db)

详解R语言中的多项式回归、局部回归、核平滑和平滑样条回归模型

但是,如果次数太大,那么会获得太多的“波动”,

reg=lm(y~poly(x,25),data=db)

详解R语言中的多项式回归、局部回归、核平滑和平滑样条回归模型

并且估计值可能不可靠:如果我们更改一个点,则可能会发生(局部)更改

yrm=yr;yrm[31]=yr[31]-2 
lines(xr,predict(regm),col="red")

详解R语言中的多项式回归、局部回归、核平滑和平滑样条回归模型

局部回归

实际上,如果我们的兴趣是局部有一个很好的近似值  详解R语言中的多项式回归、局部回归、核平滑和平滑样条回归模型,为什么不使用局部回归?

使用加权回归可以很容易地做到这一点,在最小二乘公式中,我们考虑

详解R语言中的多项式回归、局部回归、核平滑和平滑样条回归模型

在这里,我考虑了线性模型,但是可以考虑任何多项式模型。在这种情况下,优化问题是

详解R语言中的多项式回归、局部回归、核平滑和平滑样条回归模型可以解决,因为

详解R语言中的多项式回归、局部回归、核平滑和平滑样条回归模型

例如,如果我们想在某个时候进行预测 , 考虑 详解R语言中的多项式回归、局部回归、核平滑和平滑样条回归模型。使用此模型,我们可以删除太远的观测值,

详解R语言中的多项式回归、局部回归、核平滑和平滑样条回归模型

更一般的想法是考虑一些核函数 详解R语言中的多项式回归、局部回归、核平滑和平滑样条回归模型 给出权重函数,以及给出邻域长度的一些带宽(通常表示为h),

详解R语言中的多项式回归、局部回归、核平滑和平滑样条回归模型

这实际上就是所谓的 Nadaraya-Watson 函数估计器 详解R语言中的多项式回归、局部回归、核平滑和平滑样条回归模型
在前面的案例中,我们考虑了统一核 详解R语言中的多项式回归、局部回归、核平滑和平滑样条回归模型

但是使用这种权重函数具有很强的不连续性不是最好的选择,尝试高斯核,

详解R语言中的多项式回归、局部回归、核平滑和平滑样条回归模型

这可以使用

w=dnorm((xr-x0))
reg=lm(y~1,data=db,weights=w)

在我们的数据集上,我们可以绘制

w=dnorm((xr-x0))
plot(db,cex=abs(w)*4)
lines(ul,vl0,col="red")
axis(3)
axis(2)
reg=lm(y~1,data=db,weights=w)
u=seq(0,10,by=.02)
v=predict(reg,newdata=data.frame(x=u))
lines(u,v,col="red",lwd=2)

在这里,我们需要在点2进行局部回归。下面的水平线是回归(点的大小与宽度成比例)。红色曲线是局部回归的演变

详解R语言中的多项式回归、局部回归、核平滑和平滑样条回归模型

让我们使用动画来可视化曲线。

但是由于某些原因,我无法在Linux上轻松安装该软件包。我们可以使用循环来生成一些图形

name=paste("local-reg-",100+i,".png",sep="")
png(name,600,400)
for(i in 1:length(vx0)) graph (i)

然后,我使用

详解R语言中的多项式回归、局部回归、核平滑和平滑样条回归模型

当然,可以考虑局部线性模型,

return(predict(reg,newdata=data.frame(x=x0)))}

详解R语言中的多项式回归、局部回归、核平滑和平滑样条回归模型

甚至是二次(局部)回归,

lm(y~poly(x,degree=2), weights=w)

详解R语言中的多项式回归、局部回归、核平滑和平滑样条回归模型

当然,我们可以更改带宽

详解R语言中的多项式回归、局部回归、核平滑和平滑样条回归模型

请注意,实际上,我们必须选择权重函数(所谓的核)​​。但是,有(简单)方法来选择“最佳”带宽h。交叉验证的想法是考虑

详解R语言中的多项式回归、局部回归、核平滑和平滑样条回归模型

 详解R语言中的多项式回归、局部回归、核平滑和平滑样条回归模型 是使用局部回归获得的预测。  

我们可以尝试一些真实的数据。

library(XML)
 
data = readHTMLTable(html)

整理数据集,

plot(data$no,data$mu,ylim=c(6,10))
segments(data$no,data$mu-1.96*data$se,

详解R语言中的多项式回归、局部回归、核平滑和平滑样条回归模型

我们计算标准误差,反映不确定性。

for(s in 1:8){reg=lm(mu~no,data=db, 
lines((s predict(reg)[1:12]

详解R语言中的多项式回归、局部回归、核平滑和平滑样条回归模型

所有季节都应该被认为是完全独立的,这不是一个很好的假设。

smooth(db$no,db$mu,kernel = "normal",band=5)

详解R语言中的多项式回归、局部回归、核平滑和平滑样条回归模型

我们可以尝试查看带宽较大的曲线。

db$mu[95]=7
 
plot(data$no,data$mu
 
lines(NW,col="red")

详解R语言中的多项式回归、局部回归、核平滑和平滑样条回归模型

样条平滑

接下来,讨论回归中的平滑方法。假设详解R语言中的多项式回归、局部回归、核平滑和平滑样条回归模型 , 详解R语言中的多项式回归、局部回归、核平滑和平滑样条回归模型 是一些未知函数,但假定足够平滑。例如,假设 详解R语言中的多项式回归、局部回归、核平滑和平滑样条回归模型 是连续的, 详解R语言中的多项式回归、局部回归、核平滑和平滑样条回归模型 存在,并且是连续的,  详解R语言中的多项式回归、局部回归、核平滑和平滑样条回归模型 存在并且也是连续的等等。如果 详解R语言中的多项式回归、局部回归、核平滑和平滑样条回归模型 足够平滑,  可以使用泰勒展开式。 因此,对于 详解R语言中的多项式回归、局部回归、核平滑和平滑样条回归模型

详解R语言中的多项式回归、局部回归、核平滑和平滑样条回归模型

也可以写成

详解R语言中的多项式回归、局部回归、核平滑和平滑样条回归模型

第一部分只是一个多项式。

使用 黎曼积分,观察到

详解R语言中的多项式回归、局部回归、核平滑和平滑样条回归模型

因此,

详解R语言中的多项式回归、局部回归、核平滑和平滑样条回归模型

我们有线性回归模型。一个自然的想法是考虑回归 详解R语言中的多项式回归、局部回归、核平滑和平滑样条回归模型,对于 详解R语言中的多项式回归、局部回归、核平滑和平滑样条回归模型

详解R语言中的多项式回归、局部回归、核平滑和平滑样条回归模型

给一些节点 详解R语言中的多项式回归、局部回归、核平滑和平滑样条回归模型

plot(db)

详解R语言中的多项式回归、局部回归、核平滑和平滑样条回归模型

如果我们考虑一个节点,并扩展阶数1,

B=bs(xr,knots=c(3),Boundary.knots=c(0,10),degre=1)
 
lines(xr[xr<=3],predict(reg)[xr<=3],col="red")
lines(xr[xr>=3],predict(reg)[xr>=3],col="blue")

可以将用该样条获得的预测与子集(虚线)上的回归进行比较。

lines(xr[xr<=3],predict(reg)[xr<=3
 
lm(yr~xr,subset=xr>=3)

详解R语言中的多项式回归、局部回归、核平滑和平滑样条回归模型

这是不同的,因为这里我们有三个参数(关于两个子集的回归)。当要求连续模型时,失去了一个自由度。观察到可以等效地写

lm(yr~bs(xr,knots=c(3),Boundary.knots=c(0,10)

回归中出现的函数如下

详解R语言中的多项式回归、局部回归、核平滑和平滑样条回归模型

现在,如果我们对这两个分量进行回归,我们得到

matplot(xr,B
 
abline(v=c(0,2,5,10),lty=2)

如果加一个节点,我们得到

详解R语言中的多项式回归、局部回归、核平滑和平滑样条回归模型

预测是

lines(xr,predict(reg),col="red")

详解R语言中的多项式回归、局部回归、核平滑和平滑样条回归模型

我们可以选择更多的节点

lines(xr,predict(reg),col="red")

详解R语言中的多项式回归、局部回归、核平滑和平滑样条回归模型

我们可以得到一个置信区间

polygon(c(xr,rev(xr)),c(P[,2],rev(P[,3]))
 
points(db)

详解R语言中的多项式回归、局部回归、核平滑和平滑样条回归模型

如果我们保持先前选择的两个节点,但考虑泰勒的2阶的展开,我们得到

matplot(xr,B,type="l")
abline(v=c(0,2,5,10),lty=2)

详解R语言中的多项式回归、局部回归、核平滑和平滑样条回归模型

如果我们考虑常数和基于样条的第一部分,我们得到

B=cbind(1,B)
lines(xr,B[,1:k]%*%coefficients(reg)[1:k],col=k-1,lty=k-1)

详解R语言中的多项式回归、局部回归、核平滑和平滑样条回归模型

如果我们将常数项,第一项和第二项相加,则我们得到的部分在第一个节点之前位于左侧,

k=3
lines(xr,B[,1:k]%*%coefficients(reg)[1:k]

详解R语言中的多项式回归、局部回归、核平滑和平滑样条回归模型

通过基于样条的矩阵中的三个项,我们可以得到两个节点之间的部分,

lines(xr,B[,1:k]%*%coefficients(reg)[1:k]

详解R语言中的多项式回归、局部回归、核平滑和平滑样条回归模型

最后,当我们对它们求和时,这次是最后一个节点之后的右侧部分,

k=5

详解R语言中的多项式回归、局部回归、核平滑和平滑样条回归模型

这是我们使用带有两个(固定)节点的二次样条回归得到的结果。可以像以前一样获得置信区间

polygon(c(xr,rev(xr)),c(P[,2],rev(P[,3]))
 
points(db)
lines(xr,P[,1],col="red")

详解R语言中的多项式回归、局部回归、核平滑和平滑样条回归模型

使用函数 详解R语言中的多项式回归、局部回归、核平滑和平滑样条回归模型,可以确保点的连续性 详解R语言中的多项式回归、局部回归、核平滑和平滑样条回归模型

详解R语言中的多项式回归、局部回归、核平滑和平滑样条回归模型

再一次,使用线性样条函数,可以增加连续性约束,

lm(mu~bs(no,knots=c(12*(1:7)+.5),Boundary.knots=c(0,97),
 
lines(c(1:94,96),predict(reg),col="red")

详解R语言中的多项式回归、局部回归、核平滑和平滑样条回归模型

但是我们也可以考虑二次样条,

abline(v=12*(0:8)+.5,lty=2)
 
lm(mu~bs(no,knots=c(12*(1:7)+.5),Boundary.knots=c(0,97),

详解R语言中的多项式回归、局部回归、核平滑和平滑样条回归模型


详解R语言中的多项式回归、局部回归、核平滑和平滑样条回归模型

到此这篇关于详解R语言中的多项式回归、局部回归、核平滑和平滑样条回归模型的文章就介绍到这了,更多相关R语言多项式回归、局部回归内容请搜索服务器之家以前的文章或继续浏览下面的相关文章希望大家以后多多支持服务器之家!

原文链接:http://tecdat.cn/?p=20531

相关文章

热门资讯

yue是什么意思 网络流行语yue了是什么梗
yue是什么意思 网络流行语yue了是什么梗 2020-10-11
2020微信伤感网名听哭了 让对方看到心疼的伤感网名大全
2020微信伤感网名听哭了 让对方看到心疼的伤感网名大全 2019-12-26
背刺什么意思 网络词语背刺是什么梗
背刺什么意思 网络词语背刺是什么梗 2020-05-22
2021年耽改剧名单 2021要播出的59部耽改剧列表
2021年耽改剧名单 2021要播出的59部耽改剧列表 2021-03-05
苹果12mini价格表官网报价 iPhone12mini全版本价格汇总
苹果12mini价格表官网报价 iPhone12mini全版本价格汇总 2020-11-13
返回顶部