Этот ответ составлен из полезных комментариев и ответов других пользователей, но я хотел бы дать здесь подробный ответ, чтобы сделать вещи более явными, в интересах пользователей, которые еще не знакомы с некоторыми из этих проблем.Объект, созданный функцией t.test
, является объектом класса htest
, и этот тип объекта имеет специальный метод печати с настройкой print.htest
в глобальномсреда.Этот метод печати извлекает информацию из списка, но печатает ее в удобной для пользователя форме, которую вы видите в выводе вопроса.
Если вы хотите повторить этот тип печати для нового статистического теста, который выВы сами программируете, тогда вам нужно будет структурировать ваш новый тест так, чтобы он выводил объект htest
с необходимыми элементами списка и требуемым классом.Вот пример из другого ответа , где тест гипотезы, изложенный в Tarone (1979) , запрограммирован как htest
объект:
Tarone.test <- function(N, M) {
#Check validity of inputs
if(any(M > N)) { stop("Error: Observed count value exceeds binomial trials"); }
#Set hypothesis test objects
method <- "Tarone's Z test";
alternative <- "greater";
null.value <- 0;
attr(null.value, "names") <- "dispersion parameter";
data.name <- paste0(deparse(substitute(M)), " successes from ",
deparse(substitute(N)), " counts");
#Calculate test statistics
estimate <- sum(M)/sum(N);
attr(estimate, "names") <- "proportion parameter";
S <- sum((M - N*estimate)^2/(estimate*(1 - estimate)));
statistic <- (S - sum(N))/sqrt(2*sum(N*(N-1)));
attr(statistic, "names") <- "z";
p.value <- 2*pnorm(-abs(statistic), 0, 1);
attr(p.value, "names") <- NULL;
#Create htest object
TEST <- list(statistic = statistic, p.value = p.value, estimate = estimate,
null.value = null.value, alternative = alternative,
method = method, data.name = data.name);
class(TEST) <- "htest";
TEST; }
В этомНапример, функция вычисляет все необходимые элементы объекта htest
, а затем создает этот объект в виде списка с этим классом.Важно включить в код команду class(TEST) <- "htest"
, чтобы создаваемый объект был не просто обычным списком.Включение этой команды гарантирует, что выходной объект имеет правильный класс, и поэтому он будет печатать в удобной для пользователя форме.Чтобы увидеть это, мы можем сгенерировать некоторые данные и применить тест:
#Generate example data
N <- c(30, 32, 40, 28, 29, 35, 30, 34, 31, 39);
M <- c( 9, 10, 22, 15, 8, 19, 16, 19, 15, 10);
#Apply Tarone's test to the example data
TEST <- Tarone.test(N, M);
TEST;
Tarone's Z test
data: M successes from N counts
z = 2.5988, p-value = 0.009355
alternative hypothesis: true dispersion parameter is greater than 0
sample estimates:
proportion parameter
0.4359756
Здесь мы видим, что наша вновь созданная функция тестирования гипотез дает нам вывод, который имеет дружественную для пользователя структуру, аналогичную t.test
,В этом примере мы дали разные имена методу тестирования и элементам теста, и они появляются в описательном выводе при печати.