Как извлечь формулу или конкретную функцию из пакета в R? - PullRequest
1 голос
/ 16 мая 2019

Я использую пакет R "pt" для вычисления значения теории совокупной перспективы.

Первый вход следующий:

choice_ids <- c(1, 1, 1, 1, 2, 2, 2, 2)
gamble_ids <- c(1, 1, 1, 2, 1, 1, 2, 2)
outcome_ids <- c(1, 2, 3, 1, 1, 2, 1, 2)
objective_consequences <- c(2500, 2400, 0, 2400,2500, 0, 2400, 0)
probability_strings <- c("0.33", "0.66", "0.01", "1.0","0.33", "0.67", "0.34", "0.66")

my_choices <- Choices(choice_ids=choice_ids,gamble_ids=gamble_ids,outcome_ids=outcome_ids,objective_consequences=objective_consequences,probability_strings=probability_strings)

После

tk_1992_utility <- Utility(fun="power", par=c(alpha=0.88, beta=0.88, lambda=2.25))
linear_in_log_odds_prob_weight <- ProbWeight(fun="linear_in_log_odds", par=c(alpha=0.61, beta=0.724))

comparePT(my_choices,prob_weight_for_positive_outcomes=linear_in_log_odds_prob_weight,prob_weight_for_negative_outcomes=linear_in_log_odds_prob_weight,utility=tk_1992_utility, digits=4)
##   cid gid   ev    pt    ce                 rp
## 1   1   1 2409 881.3  2222                187
## 2   1   2 2400 943.2  2400 -0.000000000001819
## 3   2   1  825 312.6 684.2              140.8
## 4   2   2  816 307.2 670.9              145.1

Команды ComparePT используют значение pt как выходной, но также и множество других значений. Тем не менее, я хотел бы иметь только значение pt в качестве вывода, это как-то возможно? Я посмотрел на пакет, но, к сожалению, не смог найти формулу.

1 Ответ

1 голос
/ 16 мая 2019

Появляется pt снят с CRAN, но может быть установлен из архива github:

library(devtools)
install_github("cran/pt")

comparePT() является функцией S4 . Осмотр их немного отличается от обычного типа S3. Сначала вы используете showMethods() для просмотра доступных методов, прежде чем использовать getMethod() для интересующего вас метода.

showMethods("comparePT")
# Function: comparePT (package pt)
# object="Choices"

getMethod("comparePT", "Choices")
# Method Definition:
# 
# function ...

Тем не менее, вывод comparePT() является просто обычным data.frame, поэтому вы можете установить его в подмножество, используя $ как обычно. И оберните вокруг него as.numeric(), закодированный как символ.

as.numeric(comparePT(my_choices, linear_in_log_odds_prob_weight, 
                     linear_in_log_odds_prob_weight, tk_1992_utility, 4)$pt)
# [1] 881.3 943.2 312.6 307.2
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...