在R中用固定比例的观察类型进行分层抽样

时间:2017-12-04 12:34:00

标签: r random sample splitstackshape

我有一个样本,其中50%的观察结果是白人,50%是非裔美国人。

我想获得一个随机的子样本,其中这个比例被修改为80%白人和20%非裔美国人。

我已经尝试过命令分层,但我找不到允许我将分配分配给分层标准的选项。

提前感谢您的帮助!

2 个答案:

答案 0 :(得分:0)

我会过滤白人和非裔美国人的数据,然后从每个子集中选择。

## 20% of the african sample
  smp_size <- floor(train_ratio * nrow(df_african))

  ## set the seed to make your partition reproductible
  set.seed(42)
  data_ind_a <- sample(seq_len(nrow(df_african)), size = smp_size)

和非洲裔美国人

  new_data <- c(white[data_ind_w,],african[data_ind_a,])

这就是新数据

public  void onLocationChanged(Location location) {

    ArrayList<Activity> activities = new ArrayList<Activity>();

    activities.add(StartTravel.StartTravelActivity);

    boolean isAppRunning = false;
    for (Activity activity : activities) {
        if (activity != null)
            isAppRunning = true;
    }
    if (isAppRunning) {
        startLocationUpdates();
    }
    if (!isAppRunning) {
        startLocationUpdates();
    }
    curLat = location.getLatitude();
    curLng = location.getLongitude();
    curLat1 = location.getLatitude();
    curLng1 = location.getLongitude();

    if (curLat != 0.0 && curLng != 0.0) {
        callWebservice();
    }
    Log.e("IN","Track Location :: " + curLat + curLng);
//  boolean isInserted1 = myDb.INSERT(String.format("%.6f",location.getLatitude()),String.format("%.6f",location.getLongitude()));
}

答案 1 :(得分:0)

如果您的原始数据集有100行(50个白色和50个非洲裔美国人),那么80%将是40个样本,20%将是10个样本。了解这些值后,您可以尝试:stratified(mydf, "group", size = c("White" = 40, "African-American" = 10))

示例:

mydf <- data.frame(group = rep(c("White", "African-American"), each = 50), value = 1:100)
mydf
library(splitstackshape)
set.seed(1)
x <- stratified(mydf, "group", size = c("White" = 40, "African-American" = 10))
summary(x)
 #              group        value      
 # African-American:10   Min.   : 1.00  
 # White           :40   1st Qu.:15.25  
 #                       Median :31.00  
 #                       Mean   :34.88  
 #                       3rd Qu.:47.50  
 #                       Max.   :93.00