2016-04-07 4 views
0

У меня есть четыре матрицы одного мультиграфе, как это:Ошибка запуска "netlm" команды (SNA)

> projects 
    1 2 3 4 5 
1 0 0 4 1 0 
2 0 0 3 2 5 
3 0 0 0 0 0 
4 0 0 0 0 1 
5 0 0 0 0 0 
> infrastructure 
    1 2 3 4 5 
1 0 0 0 5 0 
2 0 0 4 0 0 
3 0 0 0 2 2 
4 0 0 0 0 3 
5 0 0 0 0 0 
> information 
    1 2 3 4 5 
1 0 1 3 0 0 
2 0 0 2 3 4 
3 0 0 0 0 0 
4 0 0 0 0 0 
5 0 0 0 0 0 
> problems 
    1 2 3 4 5 
1 0 1 0 1 0 
2 0 0 0 0 0 
3 0 0 0 1 1 
4 0 0 0 0 0 
5 0 0 0 0 0 

Я переставить это с ...

x <- array(NA, c(length(infrastructure[1,]),length(infrastructure[,1]),3)) 
x[,,1] <- infrastructure 
x[,,2] <- information 
x[,,3] <- problems 

nl <- netlm(projects,x,reps=100) 

, когда я выполняю «netlm "команда, появляется следующее сообщение:

"Ошибка в netlm (проекты, х, репс = 100):" Однородные график заказов, требуемые в netlm.

Как это исправить? Благодаря

ответ

0

Я сделал ошибку в определении массива, я должен написать следующий код: array(NA,c(3,length(infrastructure[1,]),length(infrastructure[,1])))

0

Проблема здесь в том, что netlm ожидает список, а не массив, так что я думаю, что не читает записи как отдельные сети. Ошибка указывает столько же. Он не видит три матрицы 5x5. Вместо этого используйте list().

nets <- rgraph(5,4) 
y <- nets[1,,] 
info <- nets[2,,] 
infra <- nets[3,,] 
prob <- nets[4,,] 

Теперь вы можете использовать list() в самой netlm() команды (экономит шаг):

nl <- netlm(y,list(info,infra,prob),reps=100) 

Или вы можете создать список как объект и использовать его таким образом:

x <- list(info,infra,prob) 
nl <- netlm(y,x,reps=100) 

Поскольку у вас уже есть три отдельные сети, вы можете просто:

nl <- netlm(projects,list(problems, information, infrastructure),reps=100) 
+0

Спасибо @paqmo. Я уже решил, исправив массив. Во всяком случае, ваше решение кажется лучше. Я пользуюсь этой возможностью, чтобы спросить, как получить t-статистику вместо коэффициента регрессии, учитывая возможные смещения гетероседастичности, как было показано Линдгреном (2010) –

+0

t-stat довольно легко получить. Он содержится в объекте 'netlm()'. Просто назовите 'nl $ tstat', и вы получите их! Кстати, если вы заинтересованы в исправлении гетеросексуальности, как рекомендует Линдгрен (вы уже знаете это), вы можете восстановить исходную оценку OLS, используя команду 'gvectorize' в пакете' sna', чтобы превратить матрицу в вектор. Затем запустите 'lm()'. Итак, в этом случае: lm (gvectorize (y) ~ gvectorize (info) + gvectorize (infra) + gvectorize (prob)). Вы могли бы исправить ошибки гетероседикастических ошибок, а затем сами перестроили перестановки. – paqmo

+0

спасибо, @paqmo. –

Смежные вопросы