日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程资源 > 编程问答 >内容正文

编程问答

r语言datarame删除行_R语言缺失值的处理:线性回归模型插补

發布時間:2025/3/15 编程问答 32 豆豆
生活随笔 收集整理的這篇文章主要介紹了 r语言datarame删除行_R语言缺失值的处理:线性回归模型插补 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

原文鏈接:

拓端數據科技 / Welcome to tecdat?tecdat.cn

在當我們缺少值時,系統會告訴我用-1代替,然后添加一個指示符,該變量等于-1。這樣就可以不刪除變量或觀測值。


視頻

缺失值的處理:線性回歸模型插補


我們在這里模擬數據,然后根據模型生成數據。未定義將轉換為NA。一般建議是將缺失值替換為-1,然后擬合未定義的模型。默認情況下,R的策略是刪除缺失值。如果未定義50%,則缺少數據,將刪除一半的行


  • n=1000

  • x1=runif(n)

  • x2=runif(n)

  • e=rnorm(n,.2)

  • y=1+2*x1-x2+e

  • alpha=.05

  • indice=sample(1:n,size=round(n*alpha))

  • base=data.frame(y=y,x1=x1)

  • base$x1[indice]=NA

  • reg=lm(y~x1+x2,data=base)
  • 我們模擬10,000,然后看看未定義的分布,


  • m=10000

  • B=rep(NA,m)

  • hist(B,probability=TRUE,col=rgb(0,0,1,.4),border="white",xlab="missing values = 50%")

  • lines(density(B),lwd=2,col="blue")

  • abline(v=2,lty=2,col="red")
  • 當然,丟失值的比率較低-丟失的觀測值較少,因此估計量的方差較小。

    現在讓我們嘗試以下策略:用固定的數值替換缺失的值,并添加一個指標,


  • B=rep(NA,m)

  • hist(B,probability=TRUE,col=rgb(0,0,1,.4),border="white")

  • lines(density(B),lwd=2,col="blue")

  • abline(v=2,lty=2,col="red")
  • 不會有太大變化,遺漏值的比率下降到5%,

    例如仍有5%的缺失值,我們有

    如果我們查看樣本,尤其是未定義的點,則會觀察到

    缺失值是完全獨立地隨機選擇的,


  • x1=runif(n)

  • plot(x1,y,col=clr)
  • (此處缺失值的1/3為紅色)。但可以假設缺失值的最大值,例如,


  • x1=runif(n)

  • clr=rep("black",n)

  • clr[indice]="red"

  • plot(x1,y,col=clr)
  • 有人可能想知道,估計量會給出什么?

    它變化不大,但是如果仔細觀察,我們會有更多差異。如果未定義變量會發生什么,


  • for(s in 1:m){

  • base$x1[indice]=-1

  • reg=lm(y~x1+x2+I(x1==(-1)),data=base)

  • B[s]=coefficients(reg)[2]

  • }
  • 這次,我們有一個有偏差的估計量。


  • set.seed(1)

  • indice=sample(1:n,size=round(n*alpha),prob = x1^3)

  • base$x1[indice]=-1

  • coefficients(reg1)

  • (Intercept) x1 x2 I(x1 == (-1))TRUE

  • 1.0988005 1.7454385 -0.5149477 3.1000668

  • base$x1[indice]=NA

  • coefficients(reg2)

  • (Intercept) x1 x2

  • 1.1123953 1.8612882 -0.6548206
  • 正如我所說的,一種更好的方法是推算。這個想法是為未定義的缺失預測值預測。最簡單的方法是創建一個線性模型,并根據非缺失值進行校準。然后在此新基礎上估算模型。


  • for(s in 1:m){

  • base$x1[indice]=NA

  • reg0=lm(x1~x2,data=base[-indice,])

  • base$x1[indice]=predict(reg0,newdata=base[indice,])

  • reg=lm(y~x1+x2,data=base)

  • }

  • hist(B,probability=TRUE,col=rgb(0,0,1,.4),border="white")

  • lines(density(B),lwd=2,col="blue")

  • abline(v=2,lty=2,col="red")
  • 在數字示例中,我們得到


  • base$x1[indice]=NA

  • coefficients(reg3)

  • (Intercept) x1 x2

  • 1.1593298 1.8612882 -0.6320339
  • 這種方法至少能夠糾正偏差

    然后,如果仔細觀察,我們獲得與第一種方法完全相同的值,該方法包括刪除缺少值的行。


  • Coefficients:

  • Estimate Std. Error t value Pr(>|t|)

  • (Intercept) 1.15933 0.06649 17.435 < 2e-16 ***

  • x1 1.86129 0.21967 8.473 < 2e-16 ***

  • x2 -0.63203 0.20148 -3.137 0.00176 **

  • ---

  • Signif. codes: 0 ‘***’ 0.001 ‘**’ 0.01 ‘*’ 0.05 ‘.’ 0.1 ‘ ’ 1

  • Residual standard error: 1.051 on 997 degrees of freedom

  • Multiple R-squared: 0.1094, Adjusted R-squared: 0.1076

  • F-statistic: 61.23 on 2 and 997 DF, p-value: < 2.2e-16

  • Coefficients: Estimate Std. Error t value Pr(>|t|)

  • (Intercept) 1.11240 0.06878 16.173 < 2e-16 ***

  • x1 1.86129 0.21666 8.591 < 2e-16 ***

  • x2 -0.65482 0.20820 -3.145 0.00172 **

  • ---

  • Signif. codes: 0 ‘***’ 0.001 ‘**’ 0.01 ‘*’ 0.05 ‘.’ 0.1 ‘ ’ 1

  • Residual standard error: 1.037 on 797 degrees of freedom

  • (200 observations deleted due to missingness)

  • Multiple R-squared: 0.1223, Adjusted R-squared: 0.12

  • F-statistic: 55.5 on 2 and 797 DF, p-value: < 2.2e-16
  • 除了進行線性回歸外,還可以使用另一種插補方法。

    在模擬的基礎上,我們獲得


  • for(j in indice) base0$x1[j]=kpp(j,base0,k=5)

  • reg4=lm(y~x1+x2,data=base)

  • coefficients(reg4)

  • (Intercept) x1 x2

  • 1.197944 1.804220 -0.806766
  • 如果我們看一下10,000個模擬中的樣子,就會發現


  • for(s in 1:m){

  • base0=base

  • for(j in indice) base0$x1[j]=kpp(j,base0,k=5)

  • reg=lm(y~x1+x2,data=base0)

  • B[s]=coefficients(reg)[2]

  • }

  • hist(B,probability=TRUE,col=rgb(0,0,1,.4),border="white")

  • lines(density(B),lwd=2,col="blue")

  • abline(v=2,lty=2,col="red")
  • 這里的偏差似乎比沒有插補時要弱一些,換句話說,在我看來,插補方法似乎比旨在用任意值替換NA并在回歸中添加指標的策略更強大。

    參考文獻

    1.用SPSS估計HLM層次線性模型模型

    2.R語言線性判別分析(LDA),二次判別分析(QDA)和正則判別分析(RDA)

    3.基于R語言的lmer混合線性回歸模型

    4.R語言Gibbs抽樣的貝葉斯簡單線性回歸仿真分析

    5.在r語言中使用GAM(廣義相加模型)進行電力負荷時間序列分析

    6.使用SAS,Stata,HLM,R,SPSS和Mplus的分層線性模型HLM

    7.R語言中的嶺回歸、套索回歸、主成分回歸:線性模型選擇和正則化

    8.R語言用線性回歸模型預測空氣質量臭氧數據

    9.R語言分層線性模型案例

    總結

    以上是生活随笔為你收集整理的r语言datarame删除行_R语言缺失值的处理:线性回归模型插补的全部內容,希望文章能夠幫你解決所遇到的問題。

    如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。