質問をすることでしか得られない、回答やアドバイスがある。

15分調べてもわからないことは、質問しよう!

新規登録して質問してみよう
ただいま回答率
85.48%
R

R言語は、「S言語」をオープンソースとして実装なおした、統計解析向けのプログラミング言語です。 計算がとても速くグラフィックも充実しているため、数値計算に向いています。 文法的には、統計解析部分はS言語を参考にしており、データ処理部分はSchemeの影響を受けています。 世界中の専門家が開発に関わり、日々新しい手法やアルゴリズムが追加されています。

Q&A

1回答

3665閲覧

Rでのα係数の算出 2項目のデータフレームだとエラーが出てしまいます。

zemisei

総合スコア1

R

R言語は、「S言語」をオープンソースとして実装なおした、統計解析向けのプログラミング言語です。 計算がとても速くグラフィックも充実しているため、数値計算に向いています。 文法的には、統計解析部分はS言語を参考にしており、データ処理部分はSchemeの影響を受けています。 世界中の専門家が開発に関わり、日々新しい手法やアルゴリズムが追加されています。

0グッド

0クリップ

投稿2020/07/18 16:11

前提・実現したいこと

Rを用いて、このようなデータフレームのα係数の算出を行いたいです。

data8

凝2 凝3
1 5 5
2 5 5
3 6 5
4 5 4
5 6 5
6 6 5
7 5 5
8 3 1
9 4 3
10 5 3
11 4 4
12 4 2
13 4 4
14 5 4
15 7 7
16 6 3
17 7 5
18 5 4
19 4 2
20 5 4
21 5 4
22 5 4
23 4 1
24 6 4
25 - 2
26 2 2
27 6 4
28 5 6
29 4 4
30 3 3
31 4 4
32 4 3
33 5 4
34 4 4
35 5 5
36 3 3
37 7 7
38 3 4
39 5 3
40 3 1
41 5 4
42 5 4
43 2 2

発生している問題・エラーメッセージ

cronbach.alpha(data8[, -1]) でエラー:
'data' must be either a data.frame or a matrix.

alpha(data8[, -1]) でエラー:
Data must either be a data frame or a matrix

該当のソースコード

R
library(ltm)
cronbach.alpha(data8[,-1])
library(psych)
alpha(data8[,-1])

ltmとpsychのパッケージを試したのですが、どちらも同じエラーが出ました。

試したこと

ほかのデータの場合はうまく読み込むことができました。

data

凝12 凝13 凝17 凝18
1 5 6 5 6
2 6 7 6 6
3 5 5 6 6
4 5 6 6 6
5 5 4 4 6
6 5 5 3 5
7 5 5 5 5
8 4 5 5 5
9 5 5 3 5
10 6 6 5 6
11 4 6 4 5
12 6 4 5 5
13 5 6 6 6
14 5 6 5 6
15 5 7 7 7
16 5 5 6 6
17 4 5 2 4
18 3 5 4 5
19 5 5 5 6
20 6 7 6 6
21 5 5 3 4
22 6 6 5 5
23 5 5 5 5
24 6 6 3 5
25 5 5 6 5
26 5 4 3 5
27 6 7 5 7
28 6 5 5 5
29 4 4 5 7
30 4 4 4 4
31 7 7 7 7
32 5 6 4 5
33 4 5 4 4
34 4 4 4 5
35 4 4 5 6
36 5 5 6 6
37 6 5 6 6
38 5 4 4 5
39 5 5 5 5
40 4 4 5 4
41 5 5 6 5
42 5 5 3 5
43 4 4 4 4
cronbach.alpha(data[,-1])

Cronbach's alpha for the 'data[, -1]' data-set

Items: 3
Sample units: 43
alpha: 0.75

alpha(data[,-1])

Reliability analysis
Call: alpha(x = data[, -1])

raw_alpha std.alpha G6(smc) average_r S/N ase mean sd median_r
0.75 0.76 0.7 0.52 3.2 0.065 5.1 0.81 0.5

lower alpha upper 95% confidence boundaries
0.62 0.75 0.88

Reliability if an item is dropped:
raw_alpha std.alpha G6(smc) average_r S/N alpha se var.r med.r
凝13 0.76 0.78 0.64 0.64 3.6 0.068 NA 0.64
凝17 0.66 0.67 0.50 0.50 2.0 0.102 NA 0.50
凝18 0.57 0.58 0.41 0.41 1.4 0.126 NA 0.41

Item statistics
n raw.r std.r r.cor r.drop mean sd
凝13 43 0.76 0.77 0.57 0.49 5.2 0.94
凝17 43 0.86 0.83 0.72 0.60 4.8 1.17
凝18 43 0.85 0.87 0.78 0.69 5.4 0.85

Non missing response frequency for each item
2 3 4 5 6 7 miss
凝13 0.00 0.00 0.23 0.44 0.21 0.12 0
凝17 0.02 0.14 0.21 0.35 0.23 0.05 0
凝18 0.00 0.00 0.14 0.44 0.33 0.09 0

どうやら2項目のデータの場合のみ,このエラーが出るようです。
どなたか解決策がお分かりでしたら教えていただけるととても助かります。
よろしくお願いいたします。

補足情報(FW/ツールのバージョンなど)

気になる質問をクリップする

クリップした質問は、後からいつでもMYページで確認できます。

またクリップした質問に回答があった際、通知やメールを受け取ることができます。

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

guest

回答1

0

Rの余計なお節介仕様の所為ですね。

data8[, -1]

この場合、列数1のデータフレームが返ってくることを期待するわけですが、Rはこういうとき勝手にベクトルに変換したものを返してくるのです。

ところがalpha()はデータフレームを期待する仕様のようです。期待に反してただのベクトルを押し付けられたので、

Data must either be a data frame or a matrix

と文句を言ってきたというわけです。

こういうところがRはダサダサなんですが…文句を言っても仕方がないのでオプションをつけて返り値をデータフレームから変換しないようにします。

data8[, -1, drop=FALSE]

これで少なくとも質問にあるようなエラーは出なくなるはずです。

投稿2020/07/18 16:43

KojiDoi

総合スコア13671

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

zemisei

2020/07/19 09:10

ご回答ありがあとうございます! さっそく試したところ今度は以下のようなエラーが出てきました。 これについても何か分かれば教えていただけると助かります... alpha(data8[,-1, drop=FALSE]) R[1, 2] でエラー: 添え字が許される範囲外です > ちなみになのですが、ほかのデータフレームを指定した際は以下のように、問題なく実行できました。何とぞよろしくお願いいたします。 alpha(data7[,-1, drop=FALSE]) Reliability analysis Call: alpha(x = data7[, -1, drop = FALSE]) raw_alpha std.alpha G6(smc) average_r S/N ase mean sd median_r 0.75 0.76 0.7 0.52 3.2 0.065 5.1 0.81 0.5 lower alpha upper 95% confidence boundaries 0.62 0.75 0.88 Reliability if an item is dropped: raw_alpha std.alpha G6(smc) average_r S/N alpha se var.r med.r 凝13 0.76 0.78 0.64 0.64 3.6 0.068 NA 0.64 凝17 0.66 0.67 0.50 0.50 2.0 0.102 NA 0.50 凝18 0.57 0.58 0.41 0.41 1.4 0.126 NA 0.41 Item statistics n raw.r std.r r.cor r.drop mean sd 凝13 43 0.76 0.77 0.57 0.49 5.2 0.94 凝17 43 0.86 0.83 0.72 0.60 4.8 1.17 凝18 43 0.85 0.87 0.78 0.69 5.4 0.85 Non missing response frequency for each item 2 3 4 5 6 7 miss 凝13 0.00 0.00 0.23 0.44 0.21 0.12 0 凝17 0.02 0.14 0.21 0.35 0.23 0.05 0 凝18 0.00 0.00 0.14 0.44 0.33 0.09 0
KojiDoi

2020/07/19 11:31

> R[1, 2] でエラー: 添え字が許される範囲外です alpha()というのが何か私は詳しく知りませんが、項目が1個しかないと計算不能だったりするのではないでしょうか?
guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

まだベストアンサーが選ばれていません

会員登録して回答してみよう

アカウントをお持ちの方は

15分調べてもわからないことは
teratailで質問しよう!

ただいまの回答率
85.48%

質問をまとめることで
思考を整理して素早く解決

テンプレート機能で
簡単に質問をまとめる

質問する

関連した質問