Z-тестирование гипотез с использованием scala / искры - PullRequest
0 голосов
/ 03 марта 2020

У меня есть фрейм данных:

+---------------+----------------+------------+---------+--------+-------------+---------------+
 time           |   longitude    |latitude    |speed    |Duration|  Distance   |  Acceleration |
+---------------+----------------+------------+---------+--------+-------------+----------------
17/02/2020 00:56|-7.1732833      | 32.0414966 |  50     | 600    |    0.0      |  ------
17/02/2020 01:06|-7.1732833      | 32.0414966 |  60     | 600    |    0.0      |------
17/02/2020 01:36|-7.1732833      | 32.0414966 |  74     | 600    |   0.0       |-------
17/02/2020 01:46|-7.1732833      | 32.0414966 |  85     | 600    |   0.0       |------
17/02/2020 01:56|-7.1732833      | 32.0414966 |  32     | 600    |   0.0       |--------

Я хочу применить проверку гипотезы z к столбцу расстояния.

Я пытался это сделать:

    //Divide the trajectory into training and test data sets 

             val splits =DF_F.cache().randomSplit(Array(0.6, 0.4), seed = 11L)
              val training = splits(0)
              val test =splits(1)

   //For Z-test, calculate mean (µ) and standard deviation (σ) of the training data set for distance 
     for the normal distribution such that distance ∼ N1(µ, σ2)

               import training.sparkSession.implicits._
               val stddv_d= training.select(col("Distance").cast("double")).as[Double].rdd.stdev()
               val moy_d = training.select(col("Distance").cast("double")).as[Double].rdd.mean()

   //Define null and alternate hypothesis for the points  belongs to different distribution where µ1> 
    µ0 at the specific significant level(α = 0.05).
    // Calculate z score for all points of the test data set using corresponding normal distributions 
    //for distance    

              val score = test.withColumn("z test_distance", (col("Distance") - moy_d) / stddv_d) 

   // Consider critical region for the α= 0.05 which is [1.645, ∞] and right tailed test.

       def cdf (x:Double): Double ={
           val normm =  new NormalDistribution(0,1)
           1-normm.cumulativeProbability(x)
     }
      val fun= udf(cdf _)
     a = 0.05
    val p_value = score.cache().withColumn("p_value_distance",fun(col("z test_distance")))
    println(p_value.cache().filter(col("p_value_distance")>a and (col("p-value_speed")>a) )

- вот что Я сделал это логично и правильно. Я не знаю, логичен ли расчет z-показателя только по данным испытаний, и логично сделать условие критической области только по данным испытаний. Пожалуйста помоги ! Заранее спасибо

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...