2015-03-20 2 views
7

В R есть хорошая функциональность для запуска регрессии с фиктивными переменными для каждого уровня категориальной переменной. например Automatically expanding an R factor into a collection of 1/0 indicator variables for every factor levelDummy Variables in Julia

Есть ли эквивалентный способ сделать это в Джулии.

x = randn(1000) 
group = repmat(1:25 , 40) 
groupMeans = randn(25) 
y = 3*x + groupMeans[group] 

data = DataFrame(x=x, y=y, g=group) 
for i in levels(group) 
    data[parse("I$i")] = data[:g] .== i 
end 
lm(y~x+I1+I2+I3+I4+I5+I6+I7+I8+I9+I10+ 
    I11+I12+I13+I14+I15+I16+I17+I18+I19+I20+ 
    I21+I22+I23+I24, data) 

ответ

4

Если вы используете пакет DataFrames, после того как вы pool данных, пакет будет заботиться об остальном:

пулинговой колонны важно для работы с пакетом GLM При установке модели регрессии , Столбцы PooledDataArray на входе преобразуются в столбцы индикаторов 0/1 в ModelMatrix - с одним столбцом для каждого из уровней PooledDataArray.

Вы можете увидеть остальную часть документации по объединенным данным here

+0

Кстати, то, что должно произойти с обобщёнными кадра данных: 'пулом (данные, [: г]!); lm (y ~ x + g, data) ' –