#c #c 11
#c #c 11
Вопрос:
Я хотел вычислить p-значения t-статистики для двухфакторного теста с уровнем значимости 5%. И я хотел сделать это со стандартной библиотекой. Мне было интересно, возможно ли это с помощью модуля student_t_distribution
from < random >
. В настоящее время мой код выглядит следующим образом
#include <iostream>
int main(){
double t_stat = 0.0267; // t-statistic
double alpha_los = 0.05; // level of significance
double dof = 30; // degrees of freedom
// calculate P > |t| and compare with alpha_los
return 0;
}
Спасибо
Комментарии:
1. cplusplus.com/reference/random/student_t_distribution Также есть пример использования
2. @В отличие от , который используется для генерации случайных чисел, а не для вычисления p-значения t-статистики.
3. Извините, я виноват. С помощью
<random>
вы можете просто выбирать данные.4. boost.org/doc/libs/1_49_0/libs/math/doc/sf_and_dist/html / … можете вычислить cdf, тогда легко получить значение p.
Ответ №1:
<random>
Заголовок просто предоставляет вам возможность получать случайные числа из разных распределений.
Если вы можете использовать boost, вы можете сделать следующее:
#include <boost/math/distributions/students_t.hpp>
int main() {
double t_stat = 0.0267; // t-statistic
double alpha_los = 0.05; // level of significance
double dof = 30; // degrees of freedom
boost::math::students_t dist(dof);
double P_x_greater_t = 1.0 - boost::math::cdf(dist, t_stat);
double P_x_smaller_negative_t = boost::math::cdf(dist, -t_stat);
if(P_x_greater_t P_x_smaller_negative_t < alpha_los) {
} else {
}
}