Python 문항특성곡선 그리기

1 개요[ | ]

Python 문항특성곡선 그리기

2 1개 그리기[ | ]

import numpy as np
import matplotlib.pyplot as plt

a = 1    # 변별도
b = 0    # 난이도
c = 0.25 # 추측도

D = 1.702
x = np.linspace(-4,4,101)
y = c+(1-c)/(1+np.exp(-a*D*(x-b)))
plt.plot(x, y)
plt.ylim(0,1)
plt.show()

3 여러 개 그리기[ | ]

import numpy as np
import matplotlib.pyplot as plt
import matplotlib.cm as cm

def plotICC(items):
  D = 1.702
  x = np.linspace(-4,4,101)
  offset = np.linspace(-0.5,0.5,len(items))
  for i,item in enumerate(items):
    def f(x):
      return item['c']+(1-item['c'])/(1+np.exp(-item['a']*D*(x-item['b'])))
    y = f(x)
    plt.plot(x, y)
    t = item['b'] + offset[i]
    plt.text(t+.2, f(t), 'item '+str(i+1), color=plt.rcParams['axes.prop_cycle'].by_key()['color'][i])
  plt.ylim(0,1)
  plt.title('Item Characteristic Curves')
  plt.xlabel('Ability')
  plt.ylabel('Probability')
  plt.show()

items = [
  {'a': 1  , 'b':0 , 'c':0   },
  {'a': 1  , 'b':-1, 'c':0   },
  {'a': 1  , 'b':1 , 'c':0   },
  {'a': 0.5, 'b':0 , 'c':0   },
  {'a': 0.5, 'b':0 , 'c':0.33},
]
plotICC(items)

4 같이 보기[ | ]

문서 댓글 ({{ doc_comments.length }})
{{ comment.name }} {{ comment.created | snstime }}