zoukankan      html  css  js  c++  java
  • 局部常数拟合方法 例

    为了更直观地说明光滑参数的变化对回归函数估计效果的影响,下面给出一个数值模拟例子。

    设有回归模型 

    #模拟数据
    n = 201
    x = seq(0,2,0.01)
    e = rnorm(n,0,0.2)
    y = 2*x + sin(5*pi * x)+e
    #局部常数拟合
    #h = 0.1
    plot(x,y,main = "h = 0.1")
    lines(x,2*x + sin(5*pi * x),lty = 1,lwd = 1)#真实曲线 
    lines(lowess(x,y,f=0.1),pch = 1,lwd = 2)#lowess
    data = as.data.frame(cbind(x,y))
    model1 = loess(y~x,data,span = 0.1,degree = 0)#loess
    lines(x,model1$fit,col = "red")
    legend(0.05,4.5,c("真实曲线","lowess fit","loess fit"),lty = 1,lwd = c(1,2,1),col = c(1,1,"red"))#加标签
    #h = 0.05
    plot(x,y,main = "h = 0.05")
    lines(x,2*x + sin(5*pi * x),lty = 1,lwd = 1)#真实曲线 
    lines(lowess(x,y,f=0.05),pch = 1,lwd = 2)#lowess
    model1 = loess(y~x,data,span = 0.05,degree = 0)#loess
    lines(x,model1$fit,col = "red")
    legend(0.05,4.5,c("真实曲线","lowess fit","loess fit"),lty = 1,lwd = c(1,2,1),col = c(1,1,"red"))#加标签
    #h = 0.025
    plot(x,y,main = "h = 0.025")
    lines(x,2*x + sin(5*pi * x),lty = 1,lwd = 1)#真实曲线 
    lines(lowess(x,y,f=0.025),pch = 1,lwd = 2)#lowess
    model1 = loess(y~x,data,span = 0.025,degree = 0)#loess
    lines(x,model1$fit,col = "red")
    legend(0.05,4.5,c("真实曲线","lowess fit","loess fit"),lty = 1,lwd = c(1,2,1),col = c(1,1,"red"))#加标签
    #h = 0.01
    plot(x,y,main = "h = 0.01")
    lines(x,2*x + sin(5*pi * x),lty = 1,lwd = 1)#真实曲线 
    lines(lowess(x,y,f=0.01),pch = 1,lwd = 2)#lowess
    model1 = loess(y~x,data,span = 0.01,degree = 0)#loess
    lines(x,model1$fit,col = "red")
    legend(0.05,4.5,c("真实曲线","lowess fit","loess fit"),lty = 1,lwd = c(1,2,1),col = c(1,1,"red"))#加标签
    

      

     

     

    有两个函数可以做局部加权回归:

    1. lowess(x,y,f = )

    f代表窗宽参数,f越大,则拟合曲线越光滑。

    2. loess(formula,data,span,degree,…)

    loess函数要比lowess函数强大,span是用来控制光滑度的,span越大则拟合曲线越光滑。lowess的参数f与loess的参数span代表含义并不相同。loess函数的参数degree是用来控制使用的多项式的阶数,一般可以选择1或2。(注意,当上面degree参数取0,图像显示lowess与loess拟合的结果是相似的)

  • 相关阅读:
    pytest学习Pytest基础
    Docker基础认识
    DNS 域名解析协议
    Python从数据库取数据到Excel
    PO设计模式
    unittest多种加载执行用例方法
    Dev XtraGridView 添加行时滚动条(界面)随焦点滚动
    阅读器关闭时READ的尝试无效 真正原因 测试通过解决办法
    转帖 用SQL语句 查看 某一存储过程 所带参数
    转 C#多线程及控制线程数量,对for循环输出效率
  • 原文地址:https://www.cnblogs.com/jiaxinwei/p/12584033.html
Copyright © 2011-2022 走看看