0

ウィキペディアの投票ネットワーク (ネットワーク データセットの SNAP コレクションに含まれる)の出次数分布と内次数分布を計算してプロットしようとしています。これは、エッジ リストとして表される有向グラフです。

グラフ データを読み取って保存するには、次の手順に従います。

%Read the data file.
G = importdata('Wiki-Vote.txt', '   ', 4); 

%G is a structure that contains:
% - data: a <num_of_edges,2> matrix filled with node (wiki users) ids
% - textdata: a cell matrix that contains the header strings (first 4
%   lines).
% - colheaders: a cell matrix that contains the last descriptive string
%   (fourth line).
%All the useful information is contained into data matrix.

%Split directed edge list into 'from' and 'to' nodes lists.
Nfrom = G.data(:,1); %Will be used to compute out-degree
Nto = G.data(:,2);   % "..." in-degree

この質問に動機付けられて、私はこの方法に従って出次数を計算しました

%Remove duplicate entries from Nfrom and Nto lists.
Nfrom = unique(Nfrom); %Will be used to compute the outdegree distribution.
Nto = unique(Nto);     %Will be used to compute the indegree distribution.

%Out-degree: count the number of occurances of each element (node-user id)
%contained into Nfrom to G.data(:,1).
outdegNsG = histc(G.data(:,1), Nfrom);
odG = hist(outdegNsG, 1:size(Nfrom));

figure;
plot(odG)
title('linear-linear scale plot: outdegree distribution');
figure;
loglog(odG)
title('log-log scale plot: outdegree distribution');

入次数を計算するために行うことは同じです。しかし、私が取った線形プロットは満足のいくものではなく、私のアプローチが正しいものではないかどうか疑問に思いました.

線形スケール:

ここに画像の説明を入力

対数対数スケール:

ここに画像の説明を入力

分布のグラフを線形スケールで拡大すると、べき乗則に近いことが明らかになります。

ここに画像の説明を入力

私の質問は、次数分布を計算する私のアプローチが正しいかどうかです。これを保証する助けがないからです。histc具体的には、ビンの数が少ないほど、価値のある情報を失うことなく、より明確なグラフが得られるかどうかを知りたいです。

4

1 に答える 1

0

わかりました...次数分布ではなく、各ノードのアウト(またはイン)次数をプロットしたい場合、以前のアプローチは正しいでしょう...

出次数分布の場合:

Nfrom = G.data(:,1); %Will be used to compute out-degree
Nfrom = unique(Nfrom); %Will be used to compute the outdegree distribution.
outdegNsG = histc(G.data(:,1), Nfrom);
outdd = histc(outdegNsG, unique(outdegNsG));

だから、私はプロットする必要があります:

loglog(1:length(outdd),outdd);

学士号も同じ...

于 2013-11-29T23:57:21.917 に答える