2016-12-03 21 views
3

Я пытаюсь провести многомерный анализ множественной регрессии. К счастью, я нашел отличную страницу, показывающую, как сделать это в Stata:R - Тестирование эквивалентности коэффициентов при многомерной множественной регрессии

http://www.ats.ucla.edu/stat/stata/dae/mvreg.htm

Проблема в том, что я использую R, в то время как я понял, как сделать основы Забегая многомерная модель множественной регрессии в R, я все еще не уверен, как увидеть, отличаются ли коэффициенты для каждой зависимой переменной (как показано в ссылке). Кто-нибудь знает, как вычислить этот анализ в R? Кажется, что если одна и та же независимая переменная оказывает различное влияние на каждую зависимую переменную, это невероятно полезный инструмент, и я бы с удовольствием мог это сделать!

UPDATE: Вот воспроизводимый пример того, что я сделал со своими собственными данными до сих пор:

# data 
data(mtcars) 

# fitting a multivariate multiple regression where mpg and cyl are predicted by wt and hp 
car.mod <- lm(cbind(mpg,cyl) ~ wt + hp,data=mtcars) 

# see if there is a multivariate effect of wt and hp 
summary(manova(car.mod),test="W") 

# Get coefficients for each dependent variable 
summary(car.mod) 

То, что я хочу знать, в этом примере, как я могу проверить эквивалентность «вес» как на «mpg», так и на «cyl». По-видимому, это возможно в Stata, используя команду test.

+1

Отъезд [г о тегах страницы] (http://stackoverflow.com/tags/r/info) для большого количества R-конкретных ресурсов, некоторые из которых охватывают эту тему. Что у вас есть до сих пор? Вам нужно добавить [воспроизводимый пример] (http://stackoverflow.com/questions/5963269/how-to-make-a-great-r-reproducible-example#5963610). – alistaire

+1

Хорошо, все! – user2917781

ответ

1

AFAIK, там нет пакета, который делает это, поэтому я бы сделал ручное решение. Ручное решение:

z = (b1 - b2)/(b1^2 + b2^2)^(1/2).

Адрес (неряшливый) код. Может быть более элегантное решение для извлечения коэффициентов и стандартных ошибок.

# extract coefficients and SEs 
coef_mpg <- coef(summary(car.mod))[[1]] 
coef_cyl <- coef(summary(car.mod))[[2]] 

# test equality of wt coefficients 
z_wt <- (coef_mpg[2, 1] - coef_cyl[2, 1])/(coef_mpg[2, 2]^2 + coef_cyl[2, 2]^2)^(1/2) 
p_wt <- 2*pnorm(-abs(z_wt)) 
p_wt 

Но я бы чувствовал себя лучше относительно решения бутстрапа, которое делает меньше допущений.

require(boot) 
b_b <- function(data=mtcars, indices) { 
    d <- data[indices, ] 
    model_mpg <- lm(mpg ~ wt + hp, data=d) 
    model_cyl <- lm(cyl ~ wt + hp, data=d) 
    return(coef(model_mpg)["wt"] - coef(model_cyl)["wt"]) 
} 
results <- boot(data=mtcars, statistic=b_b, R=1000) 
results