Квантильная регрессия в R, переупорядочить данные для вывода латекса - PullRequest
1 голос
/ 22 мая 2011

Запустить квантильную регрессию (скажем,) для трех разных тау, используя lapply:

listdf <- lapply(vector(tau1, tau2, tau3), function(x){summary.rq(rq(Y ~ x + z, tau=x, data=regdf))})

В результате получается список с тремя элементами класса summary.rq.
Чтобы извлечь коэффициенты изВ регрессии (из объекта summary.rq) вы можете набрать listdf[[1]]$coefficients, чтобы получить коэффициенты, или listdf[[1]]$tau, чтобы получить тау.

Итак, чтобы получить коэффициенты, которые я запускаю:

coeflist <- lapply(listdf, function(x){data.frame(x$coefficients)}) 

(список из трех элементов класса 'data.frame')

Далее я хочу переставить данные (coeflist), чтобы получить один фрейм данных для каждой переменной регрессии, где строки представляюткоэффициенты для различных тау.

Я запускаю: lapply(1:nrow(coeflist[[1]]), function(i) do.call(rbind, lapply(coeflist, "[", i, TRUE)))

Этот вид возврата, что я хочу, но есть ли способ также переименовать имена строк во фреймах данных, чтобы отразить, какиеТау коэффициенты, откуда?а также переименовать элементы списка в имена переменных регрессии?

regards.

Ответы [ 2 ]

1 голос
/ 22 мая 2011

Во-первых, я бы заметил, что аргумент tau для rq () принимает векторы, поэтому я не уверен, что вся ваша работа с lapply () действительно необходима.

Но, используя пример данных из пакета Quantreg, вы ищите:

data(stackloss)
temp <- summary(rq(y ~ x, method="fn",tau=c(0.3,0.5,0.7)))
df <- temp[[1]]$coeff
colnames(df)[1] <- as.character(temp[[1]]$tau)
for (i in 2:length(temp)){
    df[,i] <- temp[[i]]$coefficients[,1]
    colnames(df)[i] <- as.character(temp[[i]]$tau)
}
t(df)
0 голосов
/ 22 мая 2011

Новая версия: измените ваше создание coeflist:

coeflist <- lapply(listdf, function(x){data.frame(x$coefficients[,1])}) 
coeflist

Это будет вводить только коэффициенты и пропускать верхнюю и нижнюю границы. Затем cbind их вместе и используйте имена listdf для очистки.

 coef.mtx <- do.call(cbind, coeflist)
 colnames(coef.mtx) <- names(listdf)
 coef.mtx 
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...