R語言兩種方法實現隨機分層抽樣

為了減少數據分布的不平衡,提供高樣本的代表性,可將數據按特征分層一定的層次,在每個層次抽取一定量的樣本,為分層抽樣。分層抽樣的特點是將科學分組法與抽樣法結合在一起,分組減小了各抽樣層變異性的影響,抽樣保證了所抽取的樣本具有足夠的代表性。

在這里插入圖片描述
既往咱們已經多篇文章介紹了R語言的隨機抽樣,今天咱們通過R語言的2種方法來介紹隨機分層抽樣。咱們先導入數據和R包,首先介紹的是sampling包,

library(sampling)
bc<-read.csv("E:/r/test/demo.csv",sep=',',header=TRUE)

在這里插入圖片描述
這是個體檢相關的數據,公眾號回復:體檢數據,可以獲得這個數據。這個數據的變量我就不解釋了,SEX:性別,我們等下就根據性別分層來隨機抽樣。用到的是strata函數,我們來看下函數的格式

strata(data, stratanames=NULL, size, method=c("srswor","srswr","poisson",
"systematic"), pik,description=FALSE)

其實用起來非常簡單哈,data就是你的數據,strataname就是你分層的變量名字,我們這里當然是SEX性別啦,size就是你抽取的數量,method是抽取的方法,有不替換的簡單隨機抽樣(srswr)、替換的簡單隨意抽樣(srswr)、泊松抽樣(Poisson)、系統抽樣(systematic sampling);如果缺少“method”,則默認方法為“srswork”。

下面咱們就來實現一下,假設咱們想男女等比例抽取60%的樣本來建模,首先咱們需要小小計算一下

n=round(3/5*nrow(bc)/2)

在這里插入圖片描述
男女需要分別抽取250例

sub_train=strata(bc,stratanames=("SEX"),size=c(250,250),method="srswor")

在這里插入圖片描述
這樣一句話就抽取好啦,咱們來看一下,確實都是抽取了250個

table(sub_train$SEX)

在這里插入圖片描述
也可以不等比例抽取,假設我想男性抽190個,女性抽100個

sub_train1=strata(bc,stratanames=("SEX"),size=c(190,100),method="srswor")
table(sub_train1$SEX)

在這里插入圖片描述
如果要提取數據,需要使用ID_unit這個變量,這是數據的標識,咱們通常會把分層抽樣的數據用來建模,其余的數據用來驗證。

data_train=bc[sub_train$ID_unit,]
data_test=bc[-sub_train$ID_unit,]

這樣數據就提取出來啊,非常簡單。

接下來介紹的是dplyr包因為跑的是通道,也是非常簡單

library(dplyr)

每組抽取固定數量250個

strat <- bc %>% group_by(SEX) %>% slice_sample(n = 250)

每組抽取一定比例

strat1 <- bc %>% group_by(SEX) %>% slice_sample(prop = .50)

在這里插入圖片描述
Dplyr包是直接提取出了數據,不用你再提取啦。
本期結束啦,祝大家五一勞動節快樂!

參考文獻:

  1. sampling包文檔
  2. dplyr包文檔
  3. https://blog.csdn.net/neweastsun/article/details/122395968
  4. https://blog.csdn.net/claroja/article/details/55096431

本文來自互聯網用戶投稿,該文觀點僅代表作者本人,不代表本站立場。本站僅提供信息存儲空間服務,不擁有所有權,不承擔相關法律責任。
如若轉載,請注明出處:http://www.pswp.cn/web/11839.shtml
繁體地址,請注明出處:http://hk.pswp.cn/web/11839.shtml
英文地址,請注明出處:http://en.pswp.cn/web/11839.shtml

如若內容造成侵權/違法違規/事實不符,請聯系多彩編程網進行投訴反饋email:809451989@qq.com,一經查實,立即刪除!

相關文章

HTTP協議及Python實現

最近的項目需要頻繁在前后端之間傳輸數據&#xff0c;本篇主要介紹HTTP協議以及數據傳輸方法。 1 HTTP協議 1.1 http協議簡介 HTTP(Hypertext Transfer Protocol)是一種用于傳輸超文本數據的應用層協議。它是萬維網上數據交換的基礎&#xff0c;定義了客戶端和服務器之間進行通…

C語言指針詳解(三)

目錄 前言 一. 回調函數是什么&#xff1f; 1.定義 2. 代碼示例&#xff1a;計數器 2.1 使用回調函數改造前 2.2 使用回調函數改造后 二. qsort使用舉例 1. qsort介紹 2. 使用qsort函數排序整型數據 3. 使用qsort排序結構體數據 三. qsort函數的模擬實現 四. sizeo…

代碼隨想錄:螺旋矩陣II相關題目推薦(54、LCR146)

59.螺旋矩陣II 題目 給你一個正整數 n &#xff0c;生成一個包含 1 到 n2 所有元素&#xff0c;且元素按順時針順序螺旋排列的 n x n 正方形矩陣 matrix 。 示例 1&#xff1a; 輸入&#xff1a;n 3 輸出&#xff1a;[[1,2,3],[8,9,4],[7,6,5]] 代碼&#xff08;新解法&am…

MyBatis——MyBatis 參數處理

一、單個簡單類型參數 簡單類型包括&#xff1a; byte short int long float double char Byte Short Integer Long Float Double Character String java.util.Date java.sql.Date parameterType 屬性&#xff1a;告訴 MyBatis 參數的類型 MyBatis 自帶類型自動推斷機制…

LLM應用-prompt提示:生成搜索相關問題、生成回答格式包含參考資料

參考: https://isou.chat/ (AI回答與相關問題都是根據問題的搜索引擎結果結合大模型生成的) prompt參考: https://github.com/yokingma/search_with_ai/blob/6d32aa8f05f5f6ee12b5204787035b3f7797c22a/src/prompt.ts#L8 ##rag 根據搜索結果知識回答RagQueryPrompt = ` …

在Go語言中,可以這樣使用Json

在Go語言中&#xff0c;處理JSON數據通常涉及編碼&#xff08;將Go結構體轉換為JSON字符串&#xff09;和解碼&#xff08;將JSON字符串轉換為Go結構體&#xff09;。Go標準庫中的encoding/json包提供了這些功能。第三方插件可以使用"github.com/goccy/go-json"也有同…

Git | git log 和 git status 的區別

如是我聞&#xff1a; git log和git status是Git中的兩個非常有用的命令&#xff0c;它們用于不同的目的&#xff0c;并提供不同類型的信息。 git log git log命令用于顯示一個或多個分支的提交歷史記錄。這個命令會列出提交歷史&#xff0c;包括每次提交的SHA-1哈希值、提交…

程控水冷阻性負載主要工作方式

程控水冷阻性負載是一種先進的電力設備&#xff0c;主要用于電力系統的測試和研究。它的主要工作方式是通過控制水冷系統的溫度&#xff0c;來模擬不同的阻性負載條件&#xff0c;從而對電力設備進行各種性能測試。 首先&#xff0c;我們需要了解什么是阻性負載。阻性負載是指那…

博弈智能的特點

博弈智能是指通過算法和模型對博弈過程進行分析和決策的智能系統。在博弈中&#xff0c;各方參與者追求自身利益和目標&#xff0c;會采取各種策略來達到自己的目標。其中&#xff0c;包括了一些不正當手段&#xff0c;如詭計和欺騙&#xff08;詭&#xff09;&#xff08;詐&a…

代碼隨想錄算法訓練營Day 42| 動態規劃part04 | 01背包問題理論基礎I、01背包問題理論基礎II、416. 分割等和子集

代碼隨想錄算法訓練營Day 42| 動態規劃part04 | 01背包問題理論基礎I、01背包問題理論基礎II、416. 分割等和子集 文章目錄 代碼隨想錄算法訓練營Day 42| 動態規劃part04 | 01背包問題理論基礎I、01背包問題理論基礎II、416. 分割等和子集01背包問題理論基礎一、01背包問題二、…

WSL設置啟動時自動啟動docker服務或其他服務

方式一: Windows系統的WSL,當windows關機再開機后,WSL等于是重新開機的,默認情況下,不會啟動Docker服務。例如在Ubuntu 22.04中,需要使用命令 service docker start來啟動。由于我習慣關機斷電,因此每天開機打開WSL后都要手動輸入這個命令,非常麻煩。所以找了一個方法…

Redis教程——哨兵

在上篇文章我們學習了Redis教程——主從復制&#xff0c;這篇文章我們學習Redis教程——哨兵監控。 在主從復制中如果主機發生宕機&#xff0c;從機Redis會一直等到主機的恢復&#xff0c;這樣會導致只能進行讀操作&#xff0c;不能進行寫操作&#xff0c;這大大降低了系統的高…

資料同化 | 搭建docker環境-1

Community Gridpoint Statistical Interpolation (GSI) system DTC 是一個分布式設施&#xff0c;NWP 社區可以在這里測試和評估用于研究和操作的新模型和技術。 DTC的目標包括&#xff1a; 鏈接研究和操作社區 研究成果轉化為實際操作的速度 加快改善天氣預報 開發和測試有…

Cocos Creator 3.8.x 透明帶滾動功能的容器

ScrollView 是一種帶滾動功能的容器 1、刪除ScrollView下Sprite組件的SpriteFrame 2、ScrollView下scrollBar的Sprite組件的Color設為&#xff1a;FFFFFF00 3、ScrollView下view的Graphics組件的FillColor設為&#xff1a;FFFFFF00

IP代理如何幫助SEO進行優化?

IP代理在SEO優化中扮演著重要的角色&#xff0c;它通過多種方式幫助提升網站的搜索排名和可見性。以下是IP代理如何幫助SEO進行優化的詳細闡述&#xff1a; 第一點&#xff0c;數據采集與分析&#xff1a;在SEO過程中&#xff0c;大量的數據是必不可少的。通過使用IP代理&…

如何區分os.walk()與os.scandir()

os.walk() import os for dirpath, dirname, files in os.walk(./):# dirpath 當前——路徑# dirname 當前——路徑——下——文件夾名——列表# files 當前——路徑——下——文件——列表dirpath 當前路徑 ./ dirname 當前路徑下面文件夾名稱組成的列表&#xff0c;共3個文…

c++ std::shared_ptr學習

背景 c中智能指針shared_ptr用于自動管理資源&#xff0c;通過引用計數來記錄資源被多少出地方使用。在不使用資源時&#xff0c;減少引用計數&#xff0c;如果引用計數為0&#xff0c;表示資源不會再被使用&#xff0c;此時會釋放資源。本文記錄對c中std::shared_ptr的源碼學習…

攻防世界PHP2

1、打開靶機鏈接http://61.147.171.105:49513/&#xff0c;沒有發現任何線索 2、嘗試訪問http://61.147.171.105:49513/index.php&#xff0c;頁面沒有發生跳轉 3、嘗試將訪問 嘗試訪問http://61.147.171.105:49513/index.phps index.php 和 index.phps 文件之間的主要區別在于…

GNU Radio創建時間戳 C++ OOT塊

文章目錄 前言一、創建自定義的 C OOT 塊1、創建 timestamp_sender C OOT 模塊①、創建 timestamp_sender OOT 塊②、修改 C 代碼 2、創建 timestamp_receiver C OOT 模塊①、創建 timestamp_receiver OOT 塊②、修改 C 代碼 3、創建 delayMicroSec C OOT 模塊①、創建 delayMi…

Vue3實戰筆記(20)—封裝頭部導航組件

文章目錄 前言一、封裝頭部導航欄二、使用步驟總結 前言 Vue 3 封裝頭部導航欄有助于提高代碼復用性、統一風格、降低維護成本、提高可配置性和模塊化程度&#xff0c;同時還可以實現動態渲染等功能&#xff0c;有利于項目開發和維護。 一、封裝頭部導航欄 封裝頭部導航欄&am…