#include <ItemParamPriorBeta4.h>
Public Member Functions | |
ItemParamPriorBeta4 () | |
Default constructor - assign uniform [0,1] distribution. | |
ItemParamPriorBeta4 (RealVector ¶m) | |
Class construction from a parameter vector. | |
ItemParamPriorBeta4 (Real a, Real b, Real l, Real u) | |
Class construction from four individual parameter values. | |
virtual int | NumParameters () |
Returns number of prior beta distribution parameters for the IRT parameter. | |
virtual bool | ZeroDensity (Real p) |
Returns true if density at p is zero. | |
virtual Real | NearestNonZero (Real x) |
If density of x is zero, then this function will return the value closest to x that has a non-zero density. | |
virtual Real | LogDensity (Real p) |
Only computes part of the log of the density that depends on the parameter. | |
virtual Real | DerivLogDensity1 (Real p) |
First derivative of log density. | |
virtual Real | DerivLogDensity2 (Real p) |
Second derivative of log density. | |
virtual std::string | DistributionName () const |
Returns string containing name of distribution used for prior. |
Definition at line 35 of file ItemParamPriorBeta4.h.
etirm::ItemParamPriorBeta4::ItemParamPriorBeta4 | ( | ) |
Default constructor - assign uniform [0,1] distribution.
Definition at line 74 of file ItemParamPriorBeta4.cpp.
References etirm::ItemParamPrior::mParameters.
00074 : 00075 ItemParamPrior(4) 00076 { 00077 00078 mParameters[0] = 1.0; 00079 mParameters[1] = 1.0; 00080 mParameters[2] = 0.0; 00081 mParameters[3] = 1.0; 00082 }
etirm::ItemParamPriorBeta4::ItemParamPriorBeta4 | ( | RealVector & | param | ) |
Class construction from a parameter vector.
Definition at line 44 of file ItemParamPriorBeta4.cpp.
00044 : 00045 ItemParamPrior(param) 00046 { 00047 }
Class construction from four individual parameter values.
Definition at line 53 of file ItemParamPriorBeta4.cpp.
References etirm::ItemParamPrior::mParameters.
00053 : 00054 ItemParamPrior(4) 00055 { 00056 // check for valid parameters 00057 if (a <= 0.0 || b <= 0.0) 00058 throw RuntimeError("Invalid shape parameter for beta dist", 00059 "ItemParamPriorBeta4::ItemParamPriorBeta4"); 00060 if (l >= u) 00061 throw RuntimeError("Invalid upper or lower limit for beta dist", 00062 "ItemParamPriorBeta4::ItemParamPriorBeta4"); 00063 00064 mParameters[0] = a; 00065 mParameters[1] = b; 00066 mParameters[2] = l; 00067 mParameters[3] = u; 00068 }
virtual int etirm::ItemParamPriorBeta4::NumParameters | ( | ) | [inline, virtual] |
Returns number of prior beta distribution parameters for the IRT parameter.
Implements etirm::ItemParamPrior.
Definition at line 44 of file ItemParamPriorBeta4.h.
virtual bool etirm::ItemParamPriorBeta4::ZeroDensity | ( | Real | p | ) | [inline, virtual] |
Returns true if density at p is zero.
Reimplemented from etirm::ItemParamPrior.
Definition at line 50 of file ItemParamPriorBeta4.h.
References etirm::ItemParamPrior::mParameters.
Referenced by DerivLogDensity1(), DerivLogDensity2(), and LogDensity().
If density of x is zero, then this function will return the value closest to x that has a non-zero density.
Reimplemented from etirm::ItemParamPrior.
Definition at line 86 of file ItemParamPriorBeta4.cpp.
References etirm::ItemParamPrior::mParameters.
00087 { 00088 // Density at lower and upper limits has zero 00089 // density, so return a value that is offset 00090 // from the lower and upper limits by the following amount 00091 const Real offset = 0.001; 00092 00093 if (x <= mParameters[2]) 00094 { 00095 return mParameters[2]+offset; 00096 } 00097 else if (x >= mParameters[3]) 00098 { 00099 return mParameters[3]-offset; 00100 } 00101 else 00102 { 00103 return x; 00104 } 00105 }
Only computes part of the log of the density that depends on the parameter.
[in] | p | Argument of log density function (an item parameter value) |
Implements etirm::ItemParamPrior.
Definition at line 113 of file ItemParamPriorBeta4.cpp.
References etirm::ItemParamPrior::mParameters, and ZeroDensity().
00114 { 00115 00116 /* Check for value outside limits of distribution */ 00117 if (ItemParamPriorBeta4::ZeroDensity(p)) 00118 { 00119 { 00120 return std::log(0.0); 00121 } 00122 } 00123 00124 Real value = (mParameters[0] - 1.0) * std::log(p - mParameters[2]); 00125 00126 value += (mParameters[1] - 1.0) * std::log(mParameters[3] - p); 00127 00128 return value; 00129 }
First derivative of log density.
Only computes part of the log of the density that depends on the parameter
Implements etirm::ItemParamPrior.
Definition at line 137 of file ItemParamPriorBeta4.cpp.
References etirm::ItemParamPrior::mParameters, and ZeroDensity().
00138 { 00139 /* Outside limits of distribution density does not change, 00140 so derivative is zero */ 00141 if (ItemParamPriorBeta4::ZeroDensity(p)) 00142 return 0.0; 00143 00144 Real value = (mParameters[0] - 1.0) / (p - mParameters[2]); 00145 value -= (mParameters[1] - 1.0) / (mParameters[3] - p); 00146 00147 return value; 00148 }
Second derivative of log density.
Only computes part of the log of the density that depends on the parameter.
Implements etirm::ItemParamPrior.
Definition at line 156 of file ItemParamPriorBeta4.cpp.
References etirm::ItemParamPrior::mParameters, and ZeroDensity().
00157 { 00158 /* Outside limits of distribution density does not change, 00159 so derivative is zero */ 00160 if (ItemParamPriorBeta4::ZeroDensity(p)) 00161 return 0.0; 00162 00163 Real denom = p - mParameters[2]; 00164 Real value = (1.0 - mParameters[0]); 00165 value /= denom*denom; 00166 denom = mParameters[3] - p; 00167 value -= (mParameters[1] - 1.0) / (denom*denom); 00168 00169 return value; 00170 }
virtual std::string etirm::ItemParamPriorBeta4::DistributionName | ( | ) | const [inline, virtual] |
Returns string containing name of distribution used for prior.
Implements etirm::ItemParamPrior.
Definition at line 68 of file ItemParamPriorBeta4.h.